Applicationオブジェクト Application.Calculation

Application

Application.Calculation は、VBA(Visual Basic for Applications)で Excel の 再計算の実行方法(計算モード)を制御するための Application オブジェクトのプロパティです。

このプロパティを使用することで、「数式の再計算のタイミング」を以下のように設定・取得できます:

  • 自動で再計算するか
  • 手動で再計算するか
  • データテーブルの計算を除外するか

🔷 基本構文

Application.Calculation = xlCalculationAutomatic

または、現在の状態を確認:

MsgBox Application.Calculation

🔷 設定できる計算モード(定数)

定数名説明
xlCalculationAutomatic-4105セルが変更されると自動的に再計算(通常
xlCalculationManual-4135手動で再計算しないと結果が更新されない
xlCalculationSemiautomatic2自動で再計算されるが、データテーブルは除外

🔷 主な用途

用途内容
パフォーマンス改善大量データを扱う処理前に計算を手動にし、終了後に戻す
データ検証後の手動計算意図的に再計算タイミングを制御したいとき
デバッグ・検証自動計算による意図しない再計算を防ぐ

🔷 使用例①:計算モードを切り替えて処理

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手動再計算
xlCalculationSemiautomatic2自動だがデータテーブル除外
タイトルとURLをコピーしました