理系男子のIoTライフ

理系男子がプログラミング、テクノロジー、ゲーム、インターネットに関連したネタをしたためます。

【VBA処理速度を高速化!】画面描画と再計算の停止方法

今回はVBAを高速化するための、画面病と再計算の停止方法をご紹介します。
f:id:rikei_iot:20170729124723j:plain



画面描画の停止方法

ExcelなどでVBAのマクロ実行中でも、コピーやセルの移動を行うとあわせて画面が動きます。

これは処理のたびに画面を描画しており、描画時に目盛リソースを多く消費します。

この画面描画を停止することで処理の高速化が期待できます。

描画を停止するためには、以下のようにコードを記載してください。

'画面描画を停止
Application.ScreenUpdating = False

' ~実行処理~

'画面描画を再開
Application.ScreenUpdating = False


描画停止の効果は処理により様々ですが、実行時間が半分以下になる場合もあります。
セルの選択をするという単純な処理では、95%近く処理が短縮されています。

Office TANAKA - Excel VBA高速化テクニック[無駄な表示を止める]



数式再計算を止める

Excelの場合、セルの値や数式が変更になった場合に、自動再計算を実行します。

VBA実行中でも再計算が行われるため、
セル参照などの数式がたくさん使われているとVBA処理が遅くなります。

再計算を停止するためには、以下のコードを記載して下さい。

'再計算を手動に設定
Application.Calculation = xlCalculationManual

' ~実行処理~

'再計算を自動に設定
Application.Calculation = xlCalculationAutomatic

まとめ

今回はVBA処理の高速化方法についてご紹介しました。
Excel VBAなどで処理が遅いと思った方はぜひお試しください。


また、VBAの高速化については、以下サイトなどでもご紹介されています。

dev-clips.com

thom.hateblo.jp



押していただけるとブログ執筆の励みになりますので、ぜひお願い致します。