Excel VBA:高速化 >全般:画面の再描画/数式の再計算を止める
概要
- 処理開始時に画面の再描画/数式の再計算を停止する。
- 処理終了時に画面の再描画/数式の再計算を再開する。
対応方法
サンプル
Public Sub Main()
On Error GoTo EXCEPTION
' 画面の再描画を停止する
Application.ScreenUpdating = False
' 数式の自動計算を停止する
Application.Calculation = xlCalculationManual
' メイン処理を行う
GoTo FINALLY
EXCEPTION:
FINALLY:
' 数式の自動計算を自動にする
Application.Calculation = xlCalculationAutomatic
' 画面の再描画を再開する
Application.ScreenUpdating = False
End Sub
説明
高速化の基本中の基本なので詳細は省略。注意点のみ列挙します。
- Application.ScreenUpdating は、例外が起きようとも必ず True に戻す。
- Application.Calculation は、xlCalculationAutomatic に変更したタイミングでブック内全ての再計算が実行される。
-
セル内の数式の値使用する場合は再計算を忘れずに行うこと。
- 全シートの再計算:Application.Calculate
- 現シートの再計算:ActiveSheet.Calculate
- 特定セルの再計算も可能だが、シート単位で再計算した方が無難。
- EnableCalculation でも数式の自動計算を停止することは可能だが、False 中は、Calculate で再計算できなくなるので禁止。