「エクセルの自動計算を停止して、高速化できないかな?」
このように思ったことはありませんか?

・VBAの実行が遅くてイライラする…
・大量のデータを扱うとExcelが固まる…



そんなときは 「Application.Calculation」を使用して
自動計算をオフにすると解決できるかもしれません!
この記事では、Application.Calculationを使用してエクセルの自動計算を停止する方法を紹介します。
自動計算を止めると、セルの値を変更しても即座に数式が再計算されないため、大量データの処理がサクサク進むようになります!
「VBAの高速化をしたい!」「エクセルの処理をもっとスムーズにしたい!」と考えている方は、ぜひ最後までご覧ください!😊✨
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
この記事でできるようになること
- エクセルが自動計算するタイミングの確認を行う
- Application.Calculationの基本構成を習得し処理を高速化できるようになる
- Application.Calculationを使用する際の注意ポイントを把握する
VBAで自動計算をオフにするとは? エクセルの自動計算について解説



そもそもエクセルってどのタイミングで
自動計算を行っているの?



Excelはデフォルトで、セルの値が変更されるたびに数式を自動的に計算します。
そのため、VBAで大量のデータを処理する際には、不要な計算が発生して処理速度が遅くなることがあります。
エクセルは常に数式を計算している? 実際に確認してみよう!
例えば、次のようなシートを考えてみましょう。


このシートでは、B列にRAND()
関数を使い、ランダムな値を表示するように設定しています。
VBA実行時にエクセルはどのタイミングで再計算されるのか?
以下のコードを実行すると、For文がループするたびに、セルD2にカウンター「i」を表示します。
Sub TestCalculation()
Dim i As Long
For i = 1 To 5
Range("D2").Value = i
Next i
End Sub
このコードを実行すると、D2セルの値が1 → 2 → 3 → 4 → 5と更新されます。
しかし、それと同時に、B列のRAND関数の値も毎回変化することが分かります。


エクセルはVBAでセルの値を変更するたびに関数を再計算している!
この結果から分かることは、VBAのコードでセルの値を変更するたびに、Excelは数式を再計算するということです。
そのため、自動計算をオンにしたままVBAを実行すると、次のような問題が発生します。
- VBAで大量のデータを処理すると、Excelが重くなりやすい
- 無駄な計算が発生し、処理が遅くなる
- 最悪の場合、Excelがフリーズしてしまうことも…!
この問題を解決する方法が、次に紹介する「Application.Calculation」を使った自動計算の停止」です!
VBAで自動計算を制御する「Application.Calculation」について解説
VBAのApplication.Calculation
を使えば、Excelの自動計算を停止・再開して、処理速度を向上させることができます!
では、どのような設定があるのか、詳しく見ていきましょう!
Application.Calculationの構成
Application.Calculation
には、以下の3つの設定値があります。


設定値 | 内容 | 特徴 |
---|---|---|
xlCalculationAutomatic | 自動計算(デフォルト) | セルの値が変更されるたびに即座に計算 |
xlCalculationManual | 手動計算 | Application.Calculate を実行するまで計算されない |
xlCalculationSemiautomatic | 手動+依存関係の計算 | xlCalculationManual とほぼ同じだが、データテーブルの計算は自動 |
さらに詳細な仕様については、Microsoft公式のApplication.Calculation プロパティ (Excel)を参照してください。
Application.Calculation = xlCalculationManual
で自動計算を停止できる- 処理が完了したら、必ず
Application.Calculation = xlCalculationAutomatic
で元に戻すこと重要!
【基本編】VBAで自動計算を停止・再開する方法
実際に処理を高速化する場合は、以下のように「自動計算を停止→処理→再開」の流れで実行します。
Sub FastProcessing()
'// 自動計算をオフ
Application.Calculation = xlCalculationManual
'// ここで大量の処理を実行
Dim i As Long
For i = 1 To 10000
Cells(i, 1).Value = i * 2
Next i
'// 自動計算をオンに戻す
Application.Calculation = xlCalculationAutomatic
End Sub
Application.Calculation = xlCalculationManual
で自動計算をオフ- 10,000行に値を入力(通常より高速に実行される)
Application.Calculation = xlCalculationAutomatic
で計算を再開
このようにコードを記載すると、大量のデータ処理をする際にExcelの動作が軽くなります! 🚀
さらに速度改善したいなら… Application.ScreenUpdating
も活用しよう!
Application.Calculation
を使うと計算の回数を減らせますが、さらに Application.ScreenUpdating = False
を組み合わせると、画面の描画を一時停止して、処理速度をさらに向上させることができます!


VBAでApplication.Calculationを使用する際の注意点!ミスを防ぐポイントを解説
Application.Calculation
を使うと、Excelの自動計算を制御でき、処理の高速化に役立ちます。
しかし、誤った使い方をすると、数式が正しく更新されない・意図しない結果になるといった問題が発生することがあります。
ここでは、Application.Calculation
を安全に使用するための重要な注意点を解説します!
注意1 : 自動計算をオフにしたら、必ずオンに戻す!
VBAでApplication.Calculation = xlCalculationManual
を設定すると、Excelの自動計算が停止します。
しかし、そのままにしておくと、VBA処理後も計算が行われず、数式の結果が更新されないままになってしまうという問題が発生します。
- VBAでデータを変更しても、Excelの計算結果が更新されない
- SUMやVLOOKUPなどの数式が最新のデータを反映しなくなる
- 「値がおかしい…?」と気づかずにミスを引き起こす可能性がある!
対策方法
VBA処理の最後に、必ずApplication.Calculation = xlCalculationAutomatic
を記述しましょう!
Sub SafeCalculation()
'// 自動計算をオフ
Application.Calculation = xlCalculationManual
'// ここで大量の処理
Dim i As Long
For i = 1 To 10000
Cells(i, 1).Value = i * 2
Next i
'// 自動計算をオンに戻す(重要!)
Application.Calculation = xlCalculationAutomatic
End Sub
- 計算モードを手動 (
xlCalculationManual
) にしたら、必ずxlCalculationAutomatic
に戻す! - 処理後に手動でExcelを操作する場合、計算モードが「手動」のままだとミスにつながる!
- VBAの後に計算結果をすぐに反映させたい場合は、次の「注意2」もチェック!
注意2 : 手動計算モードでは数式が更新されない!Application.Calculate
を活用しよう
xlCalculationManual
に設定すると、セルの値を変更しても数式が自動的に再計算されません!
そのため、VBAでデータを変更しても、SUMやVLOOKUPなどの数式が更新されず、古い計算結果のままになってしまいます。
- セルの値を変更したのに、SUMやVLOOKUPの結果が更新されない
- データを変更してもピボットテーブルの計算が反映されない
- Excelを手動で操作しても、数式がそのままになってしまう
※ 「注意1」との違いは、VBA処理が終わった後ではなく、「VBA処理中に計算を実行するかどうか」という点にあります!
対策方法
数式を更新する必要がある場合は、適切なタイミングでApplication.Calculate
を呼び出しましょう!
Sub ManualCalculationExample()
'// 自動計算をオフ
Application.Calculation = xlCalculationManual
'// データ処理
Range("A1").Value = 100
'// ここで手動計算を実行
Application.Calculate
'// 自動計算をオンに戻す
Application.Calculation = xlCalculationAutomatic
End Sub
xlCalculationManual
を設定すると、セルを変更しても数式は更新されない!- 数式を最新の状態にするには、
Application.Calculate
を実行する必要がある! - VBA処理後に計算を再開するには「注意1」の方法をチェック!
注意3 : シート単位で計算する場合は「Worksheets(…).Calculate」を使う
Application.Calculate
を使うと、ブック全体の計算が実行されます。
しかし、特定のシートだけ計算したい場合は、無駄な処理が発生し、VBAの動作が遅くなることがあります。
このような場合は、シート単位で計算を実行できる Worksheets("シート名").Calculate
を活用しましょう!
対策方法
特定のシートだけ計算したい場合は、次のように記述します。
Sub SheetCalculationExample()
'// 特定のシートのみ計算
Worksheets("Sheet1").Calculate
End Sub
Application.Calculate
はブック全体を計算するため、不要なシートまで計算してしまう- 特定のシートだけ計算したいときは
Worksheets("シート名").Calculate
を使う! - 大規模なブックや複数シートがある場合、処理の最適化に役立つ!
この記事のまとめ
この記事では、VBAの Application.Calculation
を活用してExcelの自動計算を停止・再開する方法 を詳しく解説しました。
- VBAの
Application.Calculation
を使えば、無駄な再計算を減らし、処理を高速化できる! xlCalculationManual
に設定すると、セルの値を変更しても数式が更新されなくなるので注意!Application.Calculate
やWorksheets(…).Calculate
を活用すると、計算の制御がさらに柔軟に!
ポイントのおさらい
エクセルが自動計算するタイミングを考える!
エクセルはセルの値を変更するたびに、自動計算するタイミングということを確認しました。
👉 詳しくはこちら
⇒ 「VBAで自動計算をオフにするとは? エクセルの自動計算について解説」をもう一度見る
VBAで自動計算を制御する方法を習得!
VBAで自動計算を停止・再開するには、 Application.Calculation
を活用します。
👉 詳しくはこちら
⇒ 「VBAで自動計算を制御する「Application.Calculation」について解説」をもう一度見る
VBAで自動計算をオフにする際の注意点を把握!
VBAで xlCalculationManual
を設定すると、計算が実行されなくなるため、注意が必要です。
特に、次の3つのポイントに気をつけましょう!
- 自動計算をオフにしたままにすると、数式が更新されずエラーの原因に!
- 手動計算モードでは
Application.Calculate
を明示的に実行しないと計算が行われない! - ブック全体ではなく、特定のシートだけ計算する場合は
Worksheets(…).Calculate
を活用する!
👉 詳しくはこちら
⇒ 「VBAでApplication.Calculationを使用する際の注意点!ミスを防ぐポイントを解説」をもう一度見る




さらに学ぶために
VBAでの自動計算の制御を学んだら、次は 処理速度をさらに向上させるテクニックを学んでみましょう!
以下の機能や方法と組み合わせると、Excel作業をさらに効率化できます。

