Application.Calculation
は、VBA(Visual Basic for Applications)で Excel の 再計算の実行方法(計算モード)を制御する ための Application
オブジェクトのプロパティです。
このプロパティを使用することで、「数式の再計算のタイミング」を以下のように設定・取得できます:
自動で再計算するか
手動で再計算するか
データテーブルの計算を除外するか
🔷 基本構文
Application.Calculation = xlCalculationAutomatic
または、現在の状態を確認:
MsgBox Application.Calculation
🔷 設定できる計算モード(定数)
定数名 値 説明 xlCalculationAutomatic
-4105 セルが変更されると自動的に再計算(通常 ) xlCalculationManual
-4135 手動で再計算しないと結果が更新されない xlCalculationSemiautomatic
2 自動で再計算されるが、データテーブルは除外
🔷 主な用途
用途 内容 パフォーマンス改善 大量データを扱う処理前に計算を手動にし、終了後に戻す データ検証後の手動計算 意図的に再計算タイミングを制御したいとき デバッグ・検証 自動計算による意図しない再計算を防ぐ
🔷 使用例①:計算モードを切り替えて処理
Sub 手動計算モードで高速処理() ' 自動計算を手動に設定 Application.Calculation = xlCalculationManual ' 大量データ処理 Worksheets("Sheet1").Range("A1:A10000").Formula = "=RAND()" ' 必要なときだけ再計算 Application.Calculate ' 元に戻す Application.Calculation = xlCalculationAutomatic End Sub
🔷 使用例②:現在の計算モードを表示
Sub 計算モード確認() Select Case Application.Calculation Case xlCalculationAutomatic MsgBox "現在は自動計算モードです。" Case xlCalculationManual MsgBox "現在は手動計算モードです。" Case xlCalculationSemiautomatic MsgBox "現在はセミオート(データテーブル除外)モードです。" End Select End Sub
🔷 手動モードのときの再計算方法
方法 内容 Application.Calculate
すべての開いているワークブック・シートを再計算 Workbook.Calculate
特定のブックのみ再計算 Worksheet.Calculate
特定のワークシートのみ再計算 Range.Calculate
セル範囲単位での再計算
🔷 セミオートモードの特徴
xlCalculationSemiautomatic
は、以下のような用途に向いています:
通常の数式は自動で計算
データテーブルの再計算だけを除外 したい場合
重いモデルの一部だけ計算を抑制したいとき
🔷 計算モード変更の影響
設定 影響 xlCalculationAutomatic
入力と同時に即再計算(標準) xlCalculationManual
値を変えても再計算されない。マクロまたはユーザー操作で再計算が必要 xlCalculationSemiautomatic
データテーブル以外は再計算される
🔷 よくある落とし穴と対処法
誤解・落とし穴 対処法 マクロ実行後に自動計算に戻さない 処理終了時に Application.Calculation = xlCalculationAutomatic
を必ず記述する 手動モード時に数式が更新されない Application.Calculate
または Sheet.Calculate
を忘れずに呼び出すセルの再計算を期待しても変化しない モード確認を Debug.Print Application.Calculation
で行う
🔷 実用テンプレート:処理前後に自動計算を制御
Sub 処理最適化テンプレート() With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With ' --- ここに処理を書く --- Worksheets("Sheet1").Range("A1:A1000").Formula = "=RAND()" ' 再計算 Application.Calculate ' 元に戻す With Application .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With End Sub
🔷 まとめ
項目 内容 プロパティ名 Application.Calculation
型 XlCalculation
列挙型(整数)設定値 xlCalculationAutomatic
, xlCalculationManual
, xlCalculationSemiautomatic
目的 Excelの再計算方法を制御 よく使う場面 パフォーマンス改善、手動再計算制御、セミオート運用 注意点 設定後は元に戻すことを忘れずに!
✅ よく使う定数一覧
定数 値 意味 xlCalculationAutomatic
-4105 自動再計算 xlCalculationManual
-4135 手動再計算 xlCalculationSemiautomatic
2 自動だがデータテーブル除外