ExcelVBA:処理の高速化(1)「Application.Calculation = xlCalculationManual」で手動計算にする
Excelは通常「計算方法の設定」が「自動」になっています。
VBAの処理時にも自動計算が走ってしまうので、対象の処理中だけ自動計算を止めて、最後にまた自動に戻すことでVBAの処理が早く終わるようになります。
サンプルコード
以下のようにメイン処理を挟む感じにするだけです。
1 2 3 4 5 6 7 8 9 10 |
Sub 高速化() '手動計算にします' Application.Calculation = xlCalculationManual Call メイン処理 '自動計算に戻します' Application.Calculation = xlCalculationAutomatic End Sub |
注意点
「手動計算」にしている間は、VBAでセルの値を変更しても、そのセルを参照しているセルの値は計算されません。
そのため古いデータのままなので、VBAで計算されないであろうセルを処理をする際には注意してください。
高速化関連記事
ExcelVBA:処理の高速化(2)「Application.ScreenUpdating = False」で描画の停止
【Excel VBA】【Excel VBA】数行のコードを追加するだけで高速化。描画の停止方法について
ExcelVBA:処理の高速化(1)「Application.Calculation = xlCalculationManual」で手動計算にする
【Excel VBA】数行のコードを追加するだけで高速化。自動計算の停止方法について