'Excelを手動計算にする Application.Calculation = xlCalculationManual
'Excelを自動計算にする Application.Calculation = xlCalculationAutomatic
Excelの再計算の動作設定を変更するには、Application.Calculation プロパティを使用します。
このプロパティに以下の値を設定することで、再計算の動作を切り替えることができます。
自動計算 = xlCalculationAutomatic(-4105)
Excelの初期設定。セルの値が変更されると自動的に再計算が行われます。
手動計算 = xlCalculationManual(-4135)
自動的には再計算されず、ユーザーが再計算を実行したときにのみ更新されます。
VBAでは Calculate メソッドを呼び出した際に再計算が行われます。
再計算の切り替え
再計算の切り替えは、Excelのオプション設定からも行えます。
そのため、ブックによっては手動計算に設定されている場合があります。
これは、再計算に時間がかかるケースで、セルの更新ごとに再計算を行わせることによる待ち時間を解消するために利用されています。
VBAでも同様に扱うことができます。処理中に必要なタイミングで再計算を実行できるため、必ずしも処理開始時に手動へ切り替える必要はありません。
ただし、処理中にセルの更新が多数発生し、そのたびに数秒の待ち時間が積み重なり、最終的に数分かかってしまうような場合には、このプロパティを「xlCalculationManual」に設定してから処理を実行し、最後に「xlCalculationAutomatic」に戻すことで待機時間をなくし、大幅な処理速度向上につながります。
なお、自動計算に設定した時点で再計算が実行されるため、別途再計算を行うコードを実行する必要はありません。
再計算の例外仕様
手動計算モードでは通常、セルの更新による再計算は行われませんが、一部例外として「データテーブル(What-If分析のデータテーブル)」は計算モードに関わらず常に再計算される仕様になっています。
ただ使用頻度がかなり低い機能であるため、かなり特殊なケースと考えてもらって問題ないので普段は再計算を手動にしていれば再計算が勝手に行われることはないと認識していてOKです。
再計算を抑止することができないので、もし使用されたファイルを処理化する場合は再計算されることを念頭に置いて処理作成を行ってください。
関連の記事