SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.08<<123456789101112131415161718192021222324252627282930>>2017.10
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

何かを演算するなどして、シートにデータを展開するときに、Application.ScreenUpdatingやEnableCalculationで一時的に画面更新や再計算を抑制したときにどれだけ効果が出るか試してみた。

と、あるベンチマーク的なプロシージャの実行時間の結果を以下に示す。
方法実行時間
何もせず5.215秒
EnableCalculation=False0.831秒
ScreenUpdating=FALSE0.633秒
両方0.338秒


これから行くと、ScreenUpdatingとEnableCalculation両方をFALSEにした方が良いということになる。
少なくとも、何もしないよりは格段に効果があることになる。
何もしない場合に極端に時間がかかるのは、どこかが変わると一気に残りの箇所(ここで使用したプロシージャだと999箇所)の再計算が始まってしまうからである。

・・・と、いうことならデータをセットする前にクリアする方が早いのか?
その結果は以下の通り
方法実行時間
何もせず0.296秒
EnableCalculation=False0.301秒
ScreenUpdating=FALSE0.151秒
両方0.151秒


格段に違う。特にクリアせずにScreenUpdating, EnableCalculationをFALSEにしたケースよりもクリアして何もせず行う方が速い。クリアすればScreenUpdatingだけで効果があり、両方行う必要はない。ということみたいだ。

ま、備忘録まで・・・。

テーマ:Excel - ジャンル:コンピュータ
コメント
この記事へのコメント
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。