エクセル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