Excel VBA 質問スレ Part84 (148レス)
上下前次1-新
1: 10/01(水)14:36 ID:lecUwKjm(1) AAS
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part83
2chスレ:tech
119: 11/01(土)17:42 ID:Hux2CBJ+(1) AAS
365に変えてから動かなくなった原因がそれだった
120: 11/01(土)18:59 ID:h6jsjnZZ(1/2) AAS
マクロが増えてきてどれがなんのマクロか分かんなくなってきた。間違ったマクロが実行されたEXCELが元に戻らないのも嫌だし、どうしたら良いですか?
121(1): 11/01(土)19:04 ID:xL3BSUWP(1) AAS
うまい具合に人のせいにしてください
122: 11/01(土)19:35 ID:b8gravi3(1) AAS
間違ったマクロを実行した時にEXCELを元に戻すマクロを作ればいい
123: 11/01(土)19:53 ID:+zpxt/zr(1) AAS
適切なマクロを実行するマクロを作る
124: 11/01(土)20:11 ID:6pe+t0kU(1) AAS
AIに丸投げして聞いたらいい
完璧に教えてくれるよ
125(1): 11/01(土)22:42 ID:h6jsjnZZ(2/2) AAS
>>121
採用!
126: 11/05(水)14:44 ID:rUtaLWLS(1) AAS
>>125
人のせいであっても現状の問題への対応はしなければならないのではないか
127: 11/16(日)08:35 ID:BUsW0orn(1/4) AAS
ピボットテーブルのスライサーが変更されたとき、
ピボットテーブルを置いているsheetについて
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
を使っていくつかのマクロを実行させるようにしているんだけど、
これが3つあって、関連するクエリーやらをちょっとメンテ作業すると、これも動いてしまうものだから、
いちいちコメントアウト?(頭に ' 付けるヤツ)にして、このマクロを止めている。
これもっと上手いやり方ないかしら?
128(1): 11/16(日)08:47 ID:Mx/pwiFm(1) AAS
デバッグ用定数を定義しておいて、
そのデバッグ用定数の値が特定の値なら動かさない、とかにすれば、
メンテ中の変更が一カ所で済む、とかそういう話?
129: 11/16(日)08:48 ID:diBaXt68(1) AAS
よく分からんが、フラグ変数とかじゃダメなん?
130: 11/16(日)09:13 ID:bRFFjOtJ(1) AAS
どこかのセルをデバッグON/Offのフラグにする
131: 11/16(日)09:16 ID:EzK8Q/Ny(1/4) AAS
デバッグ定数を使うかApplication.EnableEventsを一時的にFalseにするか
ちなみにデバッグ定数はシート上に隠しておく形式にして例えばRange("A1").Value = Not Range("A1").ValueみたいなSubをイミディエイトから呼び出すのが個人的には楽
132: 11/16(日)09:32 ID:BUsW0orn(2/4) AAS
>>128
うーん、クエリー弄っちゃうと修正途中なので
不用意に動いたVBAでデバッグ入って・・・
てのはあるんだけど。
そもそもの
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
を一時的に止める方法はないのかと。
やっぱ、ワークシート上のどっかのセルに「メンテ中」なら "1" でも入力して、これをフラグにして
3つのPrivate Subの中で if then で、1ならそのまま終わるか、Call 以下のマクロを実行するかの分岐処理?
先達らはもっときれいなことやっているのかと・・・
133(1): 11/16(日)09:33 ID:EzK8Q/Ny(2/4) AAS
分かるとは思うけど一応
Public Const IsDebug As Boolean = False '平時
'Public Const IsDebug As Boolean = True 'デバッグ時
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
If IsDebug Then Exit Sub
'ここに処理を記述
End Sub
みたいにするってことね
コメントアウトを楽にするならConstじゃなくて
Public Function IsDebug As Boolean
' IsDebug = True '平時はコメントアウトする
End Function
にするのもアリ
134(1): 11/16(日)09:37 ID:EzK8Q/Ny(3/4) AAS
あ、ミスった
シートモジュールだけにまとめるならPublicなConstは使えないから、Const定義を標準モジュールに書くか、PrivateなConstにするかしてね
135: 11/16(日)09:39 ID:BUsW0orn(3/4) AAS
言ってみれば、プロシージャのインターロック機構みたいな仕組みかな?
136: 11/16(日)09:41 ID:BUsW0orn(4/4) AAS
>>133,134
ありがとう。
やってみる。
137: 11/16(日)09:41 ID:EzK8Q/Ny(4/4) AAS
そそ
ちなみにどのプロジェクトでもまず最初にこの機構を作る癖を付けておくといろいろ捗るよ
138: 11/16(日)13:12 ID:0LN83zrS(1) AAS
最近のyoutube動画観てると
MS Office が web アプリの Office と実質同じ
観たいな説明が多くてうんざりする
139: 11/16(日)14:23 ID:qgfY8rnj(1) AAS
web アプリの Officeは知らん。
どんなの?
140: 11/16(日)14:37 ID:WuYYEw3+(1) AAS
Excel for the webとかのことやろ
141: 11/16(日)16:08 ID:pZ2suisg(1) AAS
可視化のために色とデータを
一気に出力させたら描写遅延が初回に絶対発生するわ
画面一瞬シェイクさせるのを追加したことで解消
システムを高評価されたのはいいけど他社まで展開されるとは思ってなかったから超強力に作り込んでる
142(1): 11/19(水)12:39 ID:T8xhcS/6(1) AAS
趣味程度でしかやってないからコーディングのマイルールが中々定まらん
そのせいでメンテナンスしたり新しいプロジェクトを作り始める度にああでもないこうでもないと試行錯誤する無駄な時間が…
ってことで質問なんだけど、みんなが心掛けてるマイルールってなんかある?
ちなみに自分の中で明確なのはWith構文は余程面倒な括りじゃない限り使わない、型指定はAs~より&や$などを優先的に使うとかかな?
例えば型指定の省略形は一般的にはあまりよろしくないことは分かってるけど、うちの環境ではどうせ俺しか触らないしコードがスッキリして好きだからそうしてる
こんな感じで「一般的にはよろしくないとされるルール」でも全然いいので色んなアイデアが欲しいです
143: 11/19(水)12:57 ID:gC8HGDrL(1) AAS
最近はVBAを直接書くことはあまりなくてPytnonのxlwingsを使うことが多いんだけど、既定のプロパティを使わないとかかな。「VBA コーディング規則」とか「VBA コーディングガイドライン」で検索すると色々出てくるね。
144(1): 11/19(水)13:01 ID:pFGIqcYh(1) AAS
コメントは書かない(コメントがなくても理解しやすい命名やロジックにする)
145: 11/19(水)19:03 ID:pYKM/3rA(1) AAS
入力チェックやファイル読み書き読み込み等の他で使えそうな処理は汎用化する。
データの入力、加工、出力は処理を分ける。
146: 11/19(水)22:38 ID:cV15jrOu(1) AAS
>>142
改行とインデントはVBと同じにしてる
Visual Studioにコピペして自動整形されたやつをVBEに戻したりもしてる
変数名は気分次第だけど、英語の語彙力がないから全角文字も許容しないとすぐに詰む
コメントはできるだけ詳細に書く
147: 11/20(木)08:10 ID:cGqMER0e(1) AAS
会社のVBAならドキュメントの場所をコメントに書いておく
148: 11/20(木)09:52 ID:gRH2Ls2k(1) AAS
>>144
そのルールだとwhyはどう記すの?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.013s