Excel VBA の実行中の画面描画を停止させて高速化させる

マクロでアレコレ処理する時、画面描画を更新させないようにすると、処理が高速化できる。また、マクロでシートをアレコレと高速操作するときに画面がチラつくのも、これで画面描画を止めれば鬱陶しくなくなる。

画面描画を止めるには、Application.ScreenUpdating というプロパティを使う。

Sub Hoge()
    Application.ScreenUpdating = False    ' 画面更新を止める
    
    ' 何か処理
    
    Application.ScreenUpdating = True    ' 画面更新をするように戻す
End Sub

別のプロシージャを Call するような時は、そのサブプロシージャにも直前の設定が引き継がれる。そのため、メインで呼び出すプロシージャで一度設定しておけば二度設定する必要はない。これは、Application オブジェクトが Excel アプリ全体を表すものであることを考えれば分かる。

参考