ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part82
https://mevius.5ch.net/test/read.cgi/tech/1737657075/1
探検
Excel VBA 質問スレ Part83
■ このスレッドは過去ログ倉庫に格納されています
2025/06/08(日) 11:06:42.20ID:j4jIPbHU
2025/06/11(水) 00:17:17.98ID:4L16Stoh
TypeScriptもくこけ?
3デフォルトの名無しさん
2025/06/11(水) 05:17:28.62ID:WFBUKVw8 ここで質問するのは馬鹿ばっか
4デフォルトの名無しさん
2025/06/11(水) 07:05:16.36ID:cv7wLoTM 質問スレでマウント取ろうとするのもどうかと思うがな
2025/06/11(水) 09:37:07.08ID:EKcbgbv2
Excel/VBAは永遠に不滅ですか?
6クモ男
2025/06/11(水) 10:57:36.93ID:mB/iKWDZ Excel/VBAは永遠に不潔です
7デフォルトの名無しさん
2025/06/11(水) 11:14:02.50ID:EKcbgbv2 永久だった
8デフォルトの名無しさん
2025/06/11(水) 12:35:13.18ID:Hh4o42qN Excel VBA 質問スレ Part80(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1700826110/
こちらにもあるんだが
どちらでもいいけど
https://mevius.5ch.net/test/read.cgi/tech/1700826110/
こちらにもあるんだが
どちらでもいいけど
2025/06/11(水) 13:04:54.14ID:0Fmc/z6V
ワ有無が異なるのは重複スレとカウントしないルール
2025/06/12(木) 05:32:36.75ID:/fSMn9fa
今月急にVBA始めたけど楽しすぎるな\(^o^)/
全部自動化したい
全部自動化したい
11デフォルトの名無しさん
2025/06/12(木) 07:06:20.19ID:ZahP/xP+ 標準機能でできることも全部VBAでやっちゃうな
12デフォルトの名無しさん
2025/06/12(木) 07:29:00.27ID:fQAbngTQ >>10
全部自動化したらお前がいなくても良くなる
全部自動化したらお前がいなくても良くなる
2025/06/12(木) 08:20:30.55ID:dUKWPG0C
そこまで自動化できたらすばらしいことじゃないか
手が空くんだから他の稼げる業務に専念できる
手が空くんだから他の稼げる業務に専念できる
2025/06/12(木) 10:11:31.07ID:2t+UimiX
程々にしてRDBとSQLに進んだ方がいいぞ
自動化以前に、そもそもそれらを理解していれば作る必要のないものが多い
自動化以前に、そもそもそれらを理解していれば作る必要のないものが多い
2025/06/12(木) 10:35:24.18ID:DVSDXPAp
データとロジックがファイル単体で完結するのがVBAのおいしいとこなのに
16デフォルトの名無しさん
2025/06/12(木) 10:39:14.05ID:23egFUX2 会社で勉強ついでに、自宅でも活用できる
これ何気にメリット
これ何気にメリット
17デフォルトの名無しさん
2025/06/12(木) 11:12:50.39ID:ZT9IPUZv VBAでSQL使う 自宅でも活用できて便利
2025/06/12(木) 11:15:10.97ID:Ngptic+O
そもそも作る必要のあるものを減らすという意味では、PowerBIのようなBIツールを覚えるのもお勧めだな
レポート作成業務が中心なら圧倒的に楽になる
無料で自宅でも使える
Excelのグラフ作成を不自由なく行える程度の人であれば余裕ですぐ習得できる割にスキルとしての評価が高いのでコスパもいい
レポート作成業務が中心なら圧倒的に楽になる
無料で自宅でも使える
Excelのグラフ作成を不自由なく行える程度の人であれば余裕ですぐ習得できる割にスキルとしての評価が高いのでコスパもいい
19デフォルトの名無しさん
2025/06/12(木) 18:46:42.12ID:PJDk0Ewg VBAを勉強しているのですが独学なのでサイトのコードの見よう見まねレベルで、根本的な事や初歩的な事を理解できていません
例えば他のモジュールにあるパブリックサブプロシージャを呼び出してそのモジュールのプライベート変数にオブジェクトをセットしていますが、これが他のモジュールではどの様な扱いになるのかわかりません
ローカルウィンドウには多分空白で表示されている様に思いますが、それがどの様な扱いなのかわかりません
ExcelからWordを操作する事にも挑戦して確実にエラーを防ぐために起動済みのWordがあれば終了し、エラーが発生すればWordを終了してからマクロを抜ける様にしていますが、それでもwordapp.quitの部分でなぜかエラーが発生したりして良くわかりません
例えば他のモジュールにあるパブリックサブプロシージャを呼び出してそのモジュールのプライベート変数にオブジェクトをセットしていますが、これが他のモジュールではどの様な扱いになるのかわかりません
ローカルウィンドウには多分空白で表示されている様に思いますが、それがどの様な扱いなのかわかりません
ExcelからWordを操作する事にも挑戦して確実にエラーを防ぐために起動済みのWordがあれば終了し、エラーが発生すればWordを終了してからマクロを抜ける様にしていますが、それでもwordapp.quitの部分でなぜかエラーが発生したりして良くわかりません
20デフォルトの名無しさん
2025/06/12(木) 18:55:27.81ID:iKAujhog そもそもOSの知識すら無さそう
21デフォルトの名無しさん
2025/06/12(木) 19:14:39.54ID:PJDk0Ewg >>20
おっしゃる通り、そもそもインスタンスって何?
おっしゃる通り、そもそもインスタンスって何?
22デフォルトの名無しさん
2025/06/12(木) 19:25:09.87ID:PJDk0Ewg 他のモジュールのプライベート変数でインスタンスするのと、クラスモジュールでインスタンスするのとでは、letとgetの書き込み専用、読み取り専用以外では何が違うのって感じです
2025/06/12(木) 20:15:27.52ID:mZKVLP5A
インスタンスはするしないってものじゃない
2025/06/12(木) 20:52:55.26ID:W/tmpzuQ
25デフォルトの名無しさん
2025/06/12(木) 21:41:17.81ID:PJDk0Ewg 私はAIはBing AIしか知らないのですが、コーディングに強いAIには何があるのでしょうか?
26デフォルトの名無しさん
2025/06/12(木) 23:27:19.79ID:23egFUX2 今はまだジグソーパズルのピースがバラバラで、脳内で理論立てて知識が構築されてないだけ
もっと勉強すれば各ピースが組み合わさって、そうなのか~~ってわかる部分が出てくる
そこに至るかは人それぞれ、くじけるな
もっと勉強すれば各ピースが組み合わさって、そうなのか~~ってわかる部分が出てくる
そこに至るかは人それぞれ、くじけるな
27デフォルトの名無しさん
2025/06/13(金) 10:23:45.30ID:TKdsYkUR インスタンス文明
28デフォルトの名無しさん
2025/06/13(金) 10:33:00.93ID:ncTrk5wH お湯をかけて3分で完成
29デフォルトの名無しさん
2025/06/13(金) 10:45:11.63ID:f5khIryW instant と instance は語源は同じだろうね
30デフォルトの名無しさん
2025/06/13(金) 15:09:29.96ID:qZlkWCkC intel入ってる
31デフォルトの名無しさん
2025/06/13(金) 18:36:41.15ID:X/X4uVsg シートやファイルに変更があっても、なるべく動的に対応する様にコードで書いているけど、どうしてもハードコーディングしているセルの値が移動されるかもしれないとか、ヘッダーの値が変わるかもしれないから動かないというのはどうしても仕方ないよね?
32デフォルトの名無しさん
2025/06/13(金) 18:50:00.64ID:lmzqN4R6 左上セルとオフセットにするとか、セル名使うとか
2025/06/13(金) 18:52:49.46ID:ccsGYBbu
名前付けようがロックしようが何しようが壊す馬鹿は壊す
そこに拘って必要以上の手間をかけるより壊れるのはVBAの宿命と割り切り、
一度水を入れたバケツは必ず捨てて必ず毎回新しいバケツを使うように徹底するなど、壊れても問題にならない運用にした方がよい
そこに拘って必要以上の手間をかけるより壊れるのはVBAの宿命と割り切り、
一度水を入れたバケツは必ず捨てて必ず毎回新しいバケツを使うように徹底するなど、壊れても問題にならない運用にした方がよい
2025/06/13(金) 18:55:42.21ID:fnyKN3w+
35デフォルトの名無しさん
2025/06/13(金) 19:05:52.82ID:X/X4uVsg2025/06/13(金) 19:24:41.74ID:JuCJJIC/
設定値シートを作って行数やらのパラメータを人間様に分かるように記録している
37デフォルトの名無しさん
2025/06/13(金) 19:27:01.29ID:fuBlvFvA 名前の定義を使え
38デフォルトの名無しさん
2025/06/13(金) 19:36:07.77ID:XPKfEpiJ 何でもテーブル化してる
2025/06/13(金) 19:36:17.29ID:JuCJJIC/
>>37
人間様に見えないのは駄目です
人間様に見えないのは駄目です
40デフォルトの名無しさん
2025/06/13(金) 20:09:23.01ID:X/X4uVsg41デフォルトの名無しさん
2025/06/13(金) 20:20:32.14ID:XPKfEpiJ テーブル化するとカラム名でデータ引っ張れるからいいよね
2025/06/13(金) 20:22:18.52ID:fnyKN3w+
>>35
入力用のシートは人間にとって使いやすいようなつくりになっていたり、頻繁にレイアウト変更が発生するもの
そこで、データの位置を固定したり、プログラムが読みやすい形に変形した作業用のシートを別途用意する
そうすれば、レイアウト変更を作業用のシートで吸収でき、プログラムをシンプルなつくりにできる
入力用のシートは人間にとって使いやすいようなつくりになっていたり、頻繁にレイアウト変更が発生するもの
そこで、データの位置を固定したり、プログラムが読みやすい形に変形した作業用のシートを別途用意する
そうすれば、レイアウト変更を作業用のシートで吸収でき、プログラムをシンプルなつくりにできる
43デフォルトの名無しさん
2025/06/13(金) 20:26:09.80ID:X/X4uVsg44デフォルトの名無しさん
2025/06/13(金) 20:56:44.99ID:XPKfEpiJ >>43
それもうパスワード付きでシート保護掛けて、本人いなくなったら誰もさわれないデススパイラル
それもうパスワード付きでシート保護掛けて、本人いなくなったら誰もさわれないデススパイラル
2025/06/13(金) 21:37:27.89ID:VYU7jOYa
>>40
テーブル化知らないと2027でaccess打ち止まったときに詰むぞ
テーブル化知らないと2027でaccess打ち止まったときに詰むぞ
2025/06/13(金) 21:37:49.84ID:VYU7jOYa
詰まないか、データモデルわかってりゃいいや
47デフォルトの名無しさん
2025/06/13(金) 21:38:20.00ID:lmzqN4R6 >>43
シートセル保護一択なのに何故やらない
シートセル保護一択なのに何故やらない
2025/06/13(金) 21:39:14.21ID:VYU7jOYa
49デフォルトの名無しさん
2025/06/13(金) 22:35:36.50ID:X/X4uVsg >>45
それは世の中企業に言ってください😡
それは世の中企業に言ってください😡
50デフォルトの名無しさん
2025/06/14(土) 00:22:46.56ID:qXIDe9bT2025/06/14(土) 07:18:03.10ID:tiNU/ccJ
5歳児相手にしてるんじゃ無いんだから、やっていいこと悪いことを明確にしときゃいいだけだろ。
「はい、〇〇さんが列削除して壊しました。反省してください。」とか、部署別の朝礼とかで
都度指摘してことばの懲罰し続けなきゃ、誰も言うこと聞かない集団なのか?
これは仕様ですってのを明示しといて、それを損なったらそいつの責任にすりゃいいんだ。
道具だって機械だって、そうしちゃいけない限界あるだろうに。
面白がって刃物振り回してはいけません、とか、いちいち教えなきゃいけない連中なのか? 愚痴にも程がある
「はい、〇〇さんが列削除して壊しました。反省してください。」とか、部署別の朝礼とかで
都度指摘してことばの懲罰し続けなきゃ、誰も言うこと聞かない集団なのか?
これは仕様ですってのを明示しといて、それを損なったらそいつの責任にすりゃいいんだ。
道具だって機械だって、そうしちゃいけない限界あるだろうに。
面白がって刃物振り回してはいけません、とか、いちいち教えなきゃいけない連中なのか? 愚痴にも程がある
2025/06/14(土) 07:59:24.89ID:tiNU/ccJ
いっそのこと、入力もデータ操作もぜんぶユーザーフォームでしか利用できないようにしてしまえ
そう考えたらレガシーなAccessの方が、よっぽど使い勝手がいい
AccessのTableからデータをExcelにエクスポートして、それならどう使おうがあんたの勝手と言い放てる
そう考えたらレガシーなAccessの方が、よっぽど使い勝手がいい
AccessのTableからデータをExcelにエクスポートして、それならどう使おうがあんたの勝手と言い放てる
53デフォルトの名無しさん
2025/06/14(土) 09:07:05.82ID:85yAb+tc やらかす人に限って注意しにくい立場の人なのよな
2025/06/14(土) 10:01:44.11ID:Ko3JjZ1h
55デフォルトの名無しさん
2025/06/14(土) 10:19:52.81ID:fdo2scYw 「はい論破」とか頭の悪そうなワードを連発する人たち
2025/06/14(土) 10:49:39.77ID:tiNU/ccJ
注意しにくい、とかエクスキューズしてねぇでげんこつ喰らわしてやりゃあいいじゃねえか
そんな役立たずの無駄飯喰らいが上司上役に居るんなら尚好都合で、その座から引き摺り下ろすぐらいの
覚悟で意見し続けてりゃあ、いつかじぶんがその座に居座れる
そいつがおちんぎん振舞ってくれる立場なら、ごますりの太鼓持ちに成り果てて「ご希望のデータを
整えますから言い付けてください」と独楽鼠のように奉仕し続けてれば「愛い奴よのぅ」と収入増に繋がる
コッチだって腹企みがあるから必死こいて合理化改善化してるんだ
いつまでも下っ端のペーペーで居続ける義理なんか無ぇだろ
そんな役立たずの無駄飯喰らいが上司上役に居るんなら尚好都合で、その座から引き摺り下ろすぐらいの
覚悟で意見し続けてりゃあ、いつかじぶんがその座に居座れる
そいつがおちんぎん振舞ってくれる立場なら、ごますりの太鼓持ちに成り果てて「ご希望のデータを
整えますから言い付けてください」と独楽鼠のように奉仕し続けてれば「愛い奴よのぅ」と収入増に繋がる
コッチだって腹企みがあるから必死こいて合理化改善化してるんだ
いつまでも下っ端のペーペーで居続ける義理なんか無ぇだろ
57デフォルトの名無しさん
2025/06/14(土) 11:02:28.02ID:rpm//XVW ケンカはやめて(泣)
58デフォルトの名無しさん
2025/06/14(土) 11:12:15.07ID:rpm//XVW ここのセルの値が使用されていますとか、この値はここに書いてくださいとか、これの名前はこれで固定されていますとか、シートに説明を書くしかなさそうですね
2025/06/14(土) 13:06:42.29ID:JqgzDiGQ
薄く色をつけるとか枠線で囲むとか
入力場所が直感的にわかるようにする工夫は意外と重要
入力場所が直感的にわかるようにする工夫は意外と重要
2025/06/14(土) 13:36:28.28ID:6iS4kUFR
論破ルーム
61デフォルトの名無しさん
2025/06/14(土) 13:56:14.86ID:qXIDe9bT2025/06/14(土) 17:09:40.55ID:zXaXaxta
「かたはらいたい」
64デフォルトの名無しさん
2025/06/14(土) 19:18:28.46ID:tmxOaM79 >>63
お腹の片側だけが痛いのですか?
お腹の片側だけが痛いのですか?
65デフォルトの名無しさん
2025/06/14(土) 19:27:51.90ID:rpm//XVW コードを実行する時に、初期化や前処理として、すでに開いているオブジェクトを絶対に、完全に閉じる、終了するためにOn Error Nextでオブジェクトのセットと終了を強行して、On Error GoTo 0で戻してSet 変数 = Nothing するのはアリですか?
2025/06/14(土) 21:03:16.84ID:jPkLTW5E
>>61
行挿入からもシートを保護する方法教えて
行挿入からもシートを保護する方法教えて
67デフォルトの名無しさん
2025/06/14(土) 21:25:40.19ID:rpm//XVW Excelの関数にできる事はExcelの関数にした方がいいと思う。Excelは最強のノーコードツールなのだから。
でもシートだと壊されるかもしれないからなぁ。
でもシートだと壊されるかもしれないからなぁ。
68デフォルトの名無しさん
2025/06/14(土) 23:44:20.71ID:lJ3IrQ0g >>66
バカは無様だねぇ
バカは無様だねぇ
69デフォルトの名無しさん
2025/06/15(日) 01:37:38.62ID:4stAAJtv ID:rpm//XVW
馬鹿な人
こんな戯言を信じてはいけない
馬鹿な人
こんな戯言を信じてはいけない
2025/06/15(日) 01:43:20.63ID:34+bN/XM
>>65
プロセスごと殺せ
For Each Process In GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE Name='Excel.exe'")
Process.Terminate
Next
プロセスごと殺せ
For Each Process In GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE Name='Excel.exe'")
Process.Terminate
Next
71デフォルトの名無しさん
2025/06/15(日) 05:18:39.35ID:va9oEKX472デフォルトの名無しさん
2025/06/15(日) 08:01:13.53ID:kzSisivw >>71
書けば書くほど馬鹿を曝け出す馬鹿
書けば書くほど馬鹿を曝け出す馬鹿
2025/06/15(日) 09:38:42.00ID:RAlK0R2R
>>68
なんだ知らないのか
なんだ知らないのか
74デフォルトの名無しさん
2025/06/15(日) 10:17:34.69ID:uFUoy2Ay >>73
バカは無様だねぇ
バカは無様だねぇ
2025/06/15(日) 11:11:01.10ID:RAlK0R2R
Excelってシートの編集可能だと行挿入や列挿入を回避する手段が(VBAを除いて)ないからな
セルを保護していようが無駄
1セルだろうと編集可能な時点でシートの破壊が可能になる
Excelの仕様の不備だろこんなの
セルを保護していようが無駄
1セルだろうと編集可能な時点でシートの破壊が可能になる
Excelの仕様の不備だろこんなの
76デフォルトの名無しさん
2025/06/15(日) 11:40:58.64ID:iEbH+tZ4 >>75
バカはバカから逃れられない好例
バカはバカから逃れられない好例
2025/06/15(日) 11:45:43.01ID:ujM9EzWd
>>75
Excelは表計算ソフトであり、VBAは操作を自動化するための簡易的なツールに過ぎません
Excelは表計算ソフトであり、VBAは操作を自動化するための簡易的なツールに過ぎません
2025/06/15(日) 11:56:29.99ID:RAlK0R2R
>>77
VBAはチューリング完全なんだから簡易的もクソもないよ
VBAはチューリング完全なんだから簡易的もクソもないよ
79デフォルトの名無しさん
2025/06/15(日) 13:01:02.85ID:va9oEKX4 マクロで読み書きするシートはシートの保護や完全な非表示をする方が良さそうですね
80デフォルトの名無しさん
2025/06/15(日) 13:05:01.93ID:va9oEKX4 よくVBAの配列は動的にサイズを広げられない、拡張できないから不便だという話を聞きますが、これは実はコレクションを使ってねという事なのでしょうか?
2025/06/15(日) 13:14:08.34ID:34+bN/XM
テーブルを複数作って並べるとあら不思議
行や列の追加と削除ができないよ
行や列の追加と削除ができないよ
82デフォルトの名無しさん
2025/06/15(日) 13:49:14.52ID:OTpMml/u VBAはプログラム初心者でも難なく書けるから楽しい
納品するやつだけど好きに書いちゃっていいよね??
納品するやつだけど好きに書いちゃっていいよね??
83デフォルトの名無しさん
2025/06/15(日) 16:10:31.95ID:4stAAJtv ID:va9oEKX4
本日の馬鹿
統合失調症かも
本日の馬鹿
統合失調症かも
2025/06/15(日) 18:00:52.58ID:NYF1cX4w
>>80
Copilotの回答
そうですね、VBAの標準的な配列(Array)はサイズを変更する際に ReDim を使う必要があり、特に要素数が頻繁に変わる場合には不便に感じることがあります。そのため、コレクション(Collection) や 配列型のオブジェクト(ArrayList, Dictionary) を代替手段として使うことが一般的です。
例えば、Collection は動的に要素を追加・削除できるので、サイズの変更を意識せずにデータを管理できます。
Dim col As Collection
Set col = New Collection
col.Add "Apple"
col.Add "Banana"
col.Add "Cherry"
MsgBox col(2) ' 出力: Banana
また、Dictionary を使えばキーと値の組み合わせでデータを管理できるので、検索や整理が楽になります。
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "A", "Apple"
dict.Add "B", "Banana"
dict.Add "C", "Cherry"
MsgBox dict("B") ' 出力: Banan
このように、用途に応じて Collection や Dictionary を活用することで、動的なデータ管理がしやすくなります。
Copilotの回答
そうですね、VBAの標準的な配列(Array)はサイズを変更する際に ReDim を使う必要があり、特に要素数が頻繁に変わる場合には不便に感じることがあります。そのため、コレクション(Collection) や 配列型のオブジェクト(ArrayList, Dictionary) を代替手段として使うことが一般的です。
例えば、Collection は動的に要素を追加・削除できるので、サイズの変更を意識せずにデータを管理できます。
Dim col As Collection
Set col = New Collection
col.Add "Apple"
col.Add "Banana"
col.Add "Cherry"
MsgBox col(2) ' 出力: Banana
また、Dictionary を使えばキーと値の組み合わせでデータを管理できるので、検索や整理が楽になります。
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "A", "Apple"
dict.Add "B", "Banana"
dict.Add "C", "Cherry"
MsgBox dict("B") ' 出力: Banan
このように、用途に応じて Collection や Dictionary を活用することで、動的なデータ管理がしやすくなります。
2025/06/15(日) 23:57:46.17ID:K8AqenHf
>>82
だめでしょ好きに書いたら
だめでしょ好きに書いたら
86デフォルトの名無しさん
2025/06/16(月) 07:08:58.09ID:YHajXHhq クラスモジュールのLetとGetは必ず対でないといけないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★7 [ぐれ★]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 小林よしのり「高市早苗はネトウヨに媚びる女」 [616817505]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 【ネトウヨ朗報】イギリスのトラス元首相、高市有事で高市早苗の支持を表明 [603416639]
