エクセルVBAで使うコードの備忘録。VBAでワークブックの自動計算設定を切り替える方法について。
ワークブックの自動計算設定
普段はあまり意識しないかもしれませんが、エクセルのワークブックは値が入力されると関連するセルが自動計算されるようにデフォルトで設定されています。しかし、計算負荷が重いシートを扱う際などにはワークブックを手動計算に切り替えて計算負荷を落としたりします。通常は下記のようにエクセルのリボンから「ファイル > オプション > 数式」とたどり、設定を手動で切り替えます。
上記を見てもわかりますが、ブックの計算方法として、
- 自動
- データテーブル以外自動
- 手動
- 手動(ブックの保存前に再計算を行う)
の4パターンを選択できます。これに対応する形で、VBAでもこの4パターンを選択することが可能です(後述のサンプルコードを参照)。
自動計算設定を切り替える
下記のサンプルコードでは、4パターンの設定方法をそれぞれ記載しています。
'--- 自動 ---'
Application.Calculation = xlAutomatic
'--- データテーブル以外自動 ---'
Application.Calculation = xlSemiautomatic
'--- 手動 ---'
Application.Calculation = xlManual
'--- ブックの保存前に再計算を行う ---'
Application.CalculateBeforeSave = True
ちなみに、VBAを使って保存したファイルを別のファイルから参照する際に「ブック内の一部のリンクはすぐに更新できません。」というエラーが出る場合があります。これは、保存前の再計算設定がなされていないことが問題なので、上記のコードを参考に計算設定を「自動」にするか、「ブックの保存前に再計算を行う」よう設定してから保存することで回避できるようになります(このエラーについてはこちらの記事でも紹介しています)。