2016年1月1日金曜日

Excel 2013で シートのEnableCalculationプロパティをFalseに設定したときの挙動

背景

特定のシートだけを再計算させたくない場合がある。

この場合,該当シートのEnableCalculationプロパティをFalseに設定すればよいが,どのようなときに再計算されるのか,または再計算されないのかを検証した。


検証環境

Excel 2013(64bit) + Windows 10 Pro(64bit)
CPU: Core i7 2.4GHz
RAM: 16GB
仮想メモリ: OFF



検証方法

以下の手順で検証した。
  1. Sheet1のA1セルにRAND関数を入力する。
  2. Sheets("Sheet1").EnableCalculation = False を実行する。
  3. 以下の再計算メソッドを1個ずつ実行し,再計算されるかどうかを確認する。
  • 手動でF9キーを押す。
  • Range("A1").Calculate
  • Sheets("Sheet1").Calculate
  • Application.Calculate
  • Application.CalculateFull
  • Application.CalculateFullRebuild



結果

上記のすべての方法で,再計算されなかった。
再計算させるには,Sheets("Sheet1").EnableCalculation = True を実行するしかない。

https://msdn.microsoft.com/JA-JP/library/ff841201.aspx  に書かれている

このプロパティが False の場合、シートの再計算を要求できません。False から True に値を変更すると、シートの再計算を実行します。 

の具体的な意味はこういうことである。 こういう具体的なことがヘルプに書いてあれば助かるのだが,いちいち自分で検証せねばならん。 

なお,ファイルを開き直すと, EnableCalculation はTrueに毎回設定されるので,Falseにしたい場合はWorkbooks_Openイベントを使う必要がある。





0 件のコメント:

コメントを投稿