- ベストアンサー
VBAのScreenUpdating
教えてください 高速化のためにApplication.ScreenUpdating = Falseを記述しましょうと言われますが Application.ScreenUpdating = FalseはVBAのすべての記述に付けたほうが良いのでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
アタマだけで考えるリクツの上で,「付けたことで少なくとも遅くなることは無い」から付けましょうみたいになってますね。 実に安直に飛びついた結果に思えます。ScreenUpdatingの効果は勿論ありますが,それ以前に「逐一画面更新するみたいなマクロをそもそも書かない」方がクールかもしれません。 >すべての記述に付けたほうが良いのでしょうか 特に作成中のマクロを試験的に運用している最中などでは,マクロの動作をチェックするのも重要です。 いつどこでどんな時に「おかしな動作をしている」のか気がつかないでは,効率的とは言えません。 もちろん「見て判る」ような間違いばかりじゃ当然ありませんけど,「少しでも早くなるなら付けましょう」のリクツを採るなら「付けない事でおかしな動作を見落とす可能性が少しでも減る」なら,付けない方が正解だとも言えます。 そういった諸々を念頭にもう少し丁寧に言うと, 1.プログラムの開発・デバッグ中は,そういう余計な事はしない 2.これでもう完璧になるまで仕上がったら,最後の仕上げとして付けても良い といった具合じゃないかなと思います。 また当然の帰結としてこれの効果があるのは 3.作成したマクロを今後日常的に繰り返し使う場合に限る という補足も成り立ちます。基本一発仕事で結果を出せば終わりなマクロであれば,完璧にマクロが仕上がった時点でもう用済みです。
その他の回答 (2)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
画面情報の更新が行われるロジックならば記述しましょう。 そうじゃないなら書いても意味ありません。 画面情報の更新とは、セルを操作するようなことすべてです。 Range()などで値を取得しておらず、まずRange()へSelectしたうえで Selectionで値を取得してたりとかも全部です。 つまり、人間が視覚的に変化があったと分かる処理が 含まれているならば、記述した方がいいです。 特にループやコピー、貼り付けなどで有効です。
- FEX2053
- ベストアンサー率37% (7991/21371)
いや別に・・・? 私は「コチョコチョ」やってるプログラムには つけないですよ。 ScreenUpDatingは、画面描画を止めてしまうことで高速化をする んですが、逆に言えば「今何をやってるかが見えない」ってこと でもあります。 完全に出来上がって誰かに渡すプログラムなら、隠した方がカッコ いいことは確かですが、自分が使うだけなら、「今何をやってるか」 が見える方が安心ですし、大量のデータを処理しない限り、 ScreenUpDatingのon/off程度の高速化は、待ってる間に済む話 なので気にしなければいいんです。 後は、そのプログラムがそこまで高速化を要求するのか、ヌルヌル 動いている画面が気持ち悪いかどうかって話です。
お礼
ご回答いただきありがとうございます。 付けずに作成して、視覚的に変化があったと分かる処理の場合のみ付けてみたいと思います。
お礼
ご回答いただきありがとうございます。 付けずに作成して、視覚的に変化があったと分かる処理の場合のみ付けてみたいと思います。