CalculationとCalculateの違い

Application

Application.CalculationApplication.Calculate は、どちらも Excelの再計算に関わるVBAの構文ですが、役割はまったく異なります。以下にそれぞれの機能と違いをわかりやすく解説します。


🔷 ざっくりした違い

機能Application.CalculationApplication.Calculate
種別プロパティ(設定)メソッド(処理実行)
役割「再計算の方法」を設定「今すぐ再計算」を実行
自動 or 手動の設定手動モードでも数式を即計算
Enum(定数)実行のみ(戻り値なし)

🔷 それぞれの詳しい説明

✅ Application.Calculation(設定するもの)

Excelの再計算のモード(自動か手動か)を設定・取得します。

設定可能な値:

値(定数)説明
xlCalculationAutomaticセルの変更時に自動的に再計算(通常モード)
xlCalculationManualセルを変更しても再計算されず、手動で再計算が必要
xlCalculationSemiautomaticデータテーブルの再計算を除いて自動で再計算

使用例:

' 再計算モードを手動に設定
Application.Calculation = xlCalculationManual

✅ Application.Calculate(実行するもの)

すべての開いているブックのすべてのワークシートに対して、再計算を実行します。

通常は、手動モードにしていたときや、強制的に再計算したいときに使います。

使用例:

' 現在のすべての数式を再計算する
Application.Calculate

🔷 実例での違い

Sub 再計算の違い例()

' ① 手動計算モードに設定(再計算は止まる)
Application.Calculation = xlCalculationManual

' セルに関数を入れても再計算されない
Range("A1").Formula = "=NOW()"

' ② 明示的に再計算を行う(この時点で初めて NOW() が実行される)
Application.Calculate

' ③ 自動に戻す
Application.Calculation = xlCalculationAutomatic

End Sub

🔷 補足:似ているけど違うプロパティ・メソッド

名前種別説明
Application.Calculationプロパティ再計算の方法(手動/自動)を設定
Application.Calculateメソッドすぐに再計算を実行
Worksheet.Calculateメソッド特定のワークシートのみ再計算
Range.Calculateメソッド特定のセル範囲のみ再計算
Application.CalculateFullメソッドすべての依存関係を完全再構築して計算

🔷 まとめ:違い一覧

比較項目Application.CalculationApplication.Calculate
種別プロパティメソッド
機能計算モードの設定(自動/手動)計算の実行
よく使う目的パフォーマンス最適化のため手動に切り替え手動モード時に必要な再計算を実行
戻り値XlCalculation(列挙型)なし
設定値xlCalculationAutomatic などなし(その場で再計算)
対象グローバル(Excel全体)グローバル(すべての開いているブック)

✅ よくある組み合わせ

Sub パフォーマンス最適化処理()
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With

' ---- 重い処理 ----
Worksheets("Sheet1").Range("A1:A1000").Formula = "=RAND()"

' ---- 明示的に再計算 ----
Application.Calculate

' 元に戻す
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub

✅ どちらを使うべきか?

目的使うもの
自動 or 手動で計算を切り替えたいApplication.Calculation
すぐに再計算を実行したいApplication.Calculate
タイトルとURLをコピーしました