Excel VBA 質問スレ Part83

■ このスレッドは過去ログ倉庫に格納されています
2025/06/08(日) 11:06:42.20ID:j4jIPbHU
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part82
https://mevius.5ch.net/test/read.cgi/tech/1737657075/1
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/

こちらにもあるんだが
どちらでもいいけど
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のグラフ作成を不自由なく行える程度の人であれば余裕ですぐ習得できる割にスキルとしての評価が高いのでコスパもいい
19デフォルトの名無しさん
垢版 |
2025/06/12(木) 18:46:42.12ID:PJDk0Ewg
VBAを勉強しているのですが独学なのでサイトのコードの見よう見まねレベルで、根本的な事や初歩的な事を理解できていません

例えば他のモジュールにあるパブリックサブプロシージャを呼び出してそのモジュールのプライベート変数にオブジェクトをセットしていますが、これが他のモジュールではどの様な扱いになるのかわかりません
ローカルウィンドウには多分空白で表示されている様に思いますが、それがどの様な扱いなのかわかりません

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
>>19
モジュールがパブリックでもプライベートでも、変数がプライベートなら他のモジュールからは一切見えないってだけ
変数の内容を確認したり代入したりが一切できない
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の宿命と割り切り、
一度水を入れたバケツは必ず捨てて必ず毎回新しいバケツを使うように徹底するなど、壊れても問題にならない運用にした方がよい
2025/06/13(金) 18:55:42.21ID:fnyKN3w+
>>31
中間シート作って必要な情報を一旦ワンバンさせるのもよい
デバッグや変更時のメンテが楽になる
35デフォルトの名無しさん
垢版 |
2025/06/13(金) 19:05:52.82ID:X/X4uVsg
>>33
>>34
どういう事でしょうか?
今はシートに必要な情報を記入しています
変更があった時にも変更が適応される様にしています
2025/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/X4uVsg
>>38
私もなんでもテーブル化したいです😭
でもまだまだ世間様のExcelのテーブルの認知度が低すぎます!
AWSに力を入れているのに!
41デフォルトの名無しさん
垢版 |
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/X4uVsg
>>41
でもその列名を変えられてしまうと、、、
という事に頭を悩ませています
44デフォルトの名無しさん
垢版 |
2025/06/13(金) 20:56:44.99ID:XPKfEpiJ
>>43
それもうパスワード付きでシート保護掛けて、本人いなくなったら誰もさわれないデススパイラル
2025/06/13(金) 21:37:27.89ID:VYU7jOYa
>>40
テーブル化知らないと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
>>47
挿入、削除
はい論破
49デフォルトの名無しさん
垢版 |
2025/06/13(金) 22:35:36.50ID:X/X4uVsg
>>45
それは世の中企業に言ってください😡
50デフォルトの名無しさん
垢版 |
2025/06/14(土) 00:22:46.56ID:qXIDe9bT
>>48
それをされたくないじゃん
はい論破
2025/06/14(土) 07:18:03.10ID:tiNU/ccJ
5歳児相手にしてるんじゃ無いんだから、やっていいこと悪いことを明確にしときゃいいだけだろ。
「はい、〇〇さんが列削除して壊しました。反省してください。」とか、部署別の朝礼とかで
都度指摘してことばの懲罰し続けなきゃ、誰も言うこと聞かない集団なのか?
これは仕様ですってのを明示しといて、それを損なったらそいつの責任にすりゃいいんだ。
道具だって機械だって、そうしちゃいけない限界あるだろうに。
面白がって刃物振り回してはいけません、とか、いちいち教えなきゃいけない連中なのか? 愚痴にも程がある
2025/06/14(土) 07:59:24.89ID:tiNU/ccJ
いっそのこと、入力もデータ操作もぜんぶユーザーフォームでしか利用できないようにしてしまえ
そう考えたらレガシーなAccessの方が、よっぽど使い勝手がいい
AccessのTableからデータをExcelにエクスポートして、それならどう使おうがあんたの勝手と言い放てる
53デフォルトの名無しさん
垢版 |
2025/06/14(土) 09:07:05.82ID:85yAb+tc
やらかす人に限って注意しにくい立場の人なのよな
2025/06/14(土) 10:01:44.11ID:Ko3JjZ1h
>>50
されたくないのにできちゃうのがExcelじゃん
はい論破
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:qXIDe9bT
>>54
バカは保護設定さえできないだけ
はい論破
62デフォルトの名無しさん
垢版 |
2025/06/14(土) 14:03:51.39ID:qXIDe9bT
>>54
保護設定できない時点で論破も何もw
>>48 へ戻してループ閉じとくわw
2025/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
71デフォルトの名無しさん
垢版 |
2025/06/15(日) 05:18:39.35ID:va9oEKX4
>>69
だってさぁ
LookUpみたいなコード書くだけでも非常に時間かかるけど、セルに数式書くだけなら余裕ですよ
72デフォルトの名無しさん
垢版 |
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の仕様の不備だろこんなの
76デフォルトの名無しさん
垢版 |
2025/06/15(日) 11:40:58.64ID:iEbH+tZ4
>>75
バカはバカから逃れられない好例
2025/06/15(日) 11:45:43.01ID:ujM9EzWd
>>75
Excelは表計算ソフトであり、VBAは操作を自動化するための簡易的なツールに過ぎません
2025/06/15(日) 11:56:29.99ID:RAlK0R2R
>>77
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 を活用することで、動的なデータ管理がしやすくなります。
2025/06/15(日) 23:57:46.17ID:K8AqenHf
>>82
だめでしょ好きに書いたら
86デフォルトの名無しさん
垢版 |
2025/06/16(月) 07:08:58.09ID:YHajXHhq
クラスモジュールのLetとGetは必ず対でないといけないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況