【VBA】再計算を制御する

エクセルVBAで使うコードの備忘録。シートを再計算に関するコード。

スポンサーリンク

共通コード

説明するコードを簡素化するために使用した変数などの共通部分です。今回のテーマの本質的な部分には関係はありません。コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[ワークシート名]")

エクセル全体の再計算をOn-Off

エクセル全体に対する再計算のOn-Off。VBAでの処理速度を上げるため、一時的に再計算をOffにしたりするのに使います。エクセル全体に対する設定なので、処理が終わったらもとに戻すようにします。エラーなどでコードの途中で止まったりするとOffのままになってしまうので手動でもとに戻しましょう。再計算設定の詳細についてはこちらの記事もご参考ください。

'--- 再計算Off(手動)---'
Application.Calculation = xlCalculationAutomatic

'--- 再計算On(自動)---'
Application.Calculation = xlCalculationManual

ワークシート単位で再計算をOn-Off

ワークシート単位での設定。

'--- 再計算Off(手動)---'
ws.EnableCalculation = False

'--- 再計算On(自動)---'
ws.EnableCalculation = True

強制的に再計算

プログラムから任意のタイミングで強制的に計算させるためのコード。通常は「
Application.Calculate」を使いますが、自作関数などが再計算されない場合は「
Application.CalculateFull」を使います。これは再計算が行われるときに必ず再計算される関数(揮発性関数)と入力値が変更されたときのみ再計算される関数(非揮発性関数)の違いによるものです。

'--- 通常はこっち(揮発性関数)---'
Application.Calculate

'--- 再計算されない関数があるときはこっち(非揮発性関数)---'
Application.CalculateFull