銀河鉄道

【VBA】指定のシートを再計算する|Calculate

サムネイル
[VBA]Control the calculation再計算

Calculate|強制的に再計算する

' Recalculate only the specified worksheet|指定シートだけ再計算
Public Sub RecalcSheet(ByVal ws As Worksheet)
    ws.Calculate
End Sub

' Recalculate all open workbooks|開いている全ブックを再計算
Public Sub RecalcBook()
    Application.Calculate
End Sub

Extended Option(発展版)

' Full recalculation|全セル強制再計算
Application.CalculateFull

' Full rebuild of dependencies|依存関係グラフを再構築
Application.CalculateFullRebuild

これらは通常、計算モード切替(自動↔手動)後や、名前定義の大規模変更時などに使用する。

再計算する目的

最初に計算を止めているので、途中で計算後の値を取りたいときは再計算をする

ws.Calculate|シート単位再計算

Public Sub RecalcSheet(ByVal ws As Worksheet)
    ws.Calculate
End Sub
  • 対象範囲:渡された Worksheet オブジェクトのみ
  • 動作内容:そのシート内の全数式セルを再計算
  • 用途例
    • あるシートだけをリフレッシュしたいとき
    • 外部データリンクを持たない軽量再計算

高速で安全。シート単位での依存関係チェックが走るため、他シートは再計算されない。

Application.Calculate|ブック全体再計算

Public Sub RecalcBook()
    Application.Calculate
End Sub
  • 対象範囲:すべての開かれているブック(全セル)
  • 動作内容:全ての再計算が強制的に実行される
  • 用途例
    • 複数ブック間リンクがある場合
    • VBAによって値が大量変更された後の同期

大規模ブックでは計算コストが高い。必要に応じて .CalculateFull(完全再計算)や .CalculateFullRebuild(依存関係再構築)を使い分ける。

可能な限りシート単位で再計算し、ブック全体再計算は最後の手段にする。

Use sheet-level recalculation whenever possible;
full-book recalculation should be your last resort.

Referenced Insights & Citations

| Recalculation|再計算 |
| Worksheet Object|ワークシートオブジェクト |
| Application Object|アプリケーションオブジェクト |
| Dependency Graph|依存関係グラフ |
| Performance Cost|処理コスト |

Control the calculation
—Excel won’t wait for you.

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧