見出し画像

VBA|Application|Calculation|計算モード(自動/手動/半自動)を切り替える


■ 基本構文

Application.Calculation = 計算モード定数

・計算モード定数(XlCalculation)
 ○ xlCalculationAutomatic :自動計算
 ○ xlCalculationManual :手動計算
 ○ xlCalculationSemiautomatic:半自動計算(テーブル等一部は自動)

戻り値の型・性質
・XlCalculation(現在の計算モード)


■ サンプルコード

サンプル①:大量更新中だけ手動計算にして、最後に戻す
役割:処理中の再計算を止めて高速化し、最後に計算と設定復帰を行う
理由:セル更新が多いと再計算が繰り返されて遅くなるため
注意:Application単位の設定のため、必ず元に戻す(エラー時も復帰)

Sub Sample_Calculation_Toggle()
    Dim oldCalc As XlCalculation
    oldCalc = Application.Calculation
    On Error GoTo CleanUp
    Application.Calculation = xlCalculationManual
    例:大量のセル更新(ダミー)
    Range("A1:A10000").Value = "X"
    必要に応じて明示的に計算
    Application.Calculate
CleanUp:
    設定を必ず復帰
    Application.Calculation = oldCalc
End Sub

■ 備考

・Application.Calculation は「Excelインスタンス全体」に影響する
・手動計算中は、必要に応じて Application.Calculate / CalculateFull / CalculateFullRebuild を使い分ける
・エラー時に復帰漏れしないよう、復帰処理を必ず用意する

いいなと思ったら応援しよう!

Parusの寺小屋 技術メモや学習の整理として書いています。 もし内容が役に立ったり、続きを読みたいと思っていただけたら、 応援として受け取らせてもらえたら嬉しいです。