再計算のたびに更新する関数を作る(Volatile)
Application.VolatileでUDFを再計算対象にし、その計算が行われた時刻を返します。
実行前に確認
- Volatileは一定秒数ごとのタイマーではありません。Excelで再計算が発生したときに更新されます。
- 揮発性関数を大量に置くと再計算が重くなります。参照セルを引数で受け取れる計算なら、通常の非揮発UDFを優先します。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Public Function RecalcTime7043() As Date
Application.Volatile True
RecalcTime7043 = Now
End Function図で見る再計算のたびに更新する関数を作る(Volatile)の流れ
イメージ図Application.VolatileでUDFを再計算対象にし、その計算が行われた時刻を返します。
入力・開始時
セルへ=RecalcTime7043()を入力
実行する処理
Volatileで再計算対象にし、Nowを返す
結果
F9の再計算時に時刻が更新される
秒ごとに動く時計ではありません。Excelの再計算が起きた時に更新します。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用.xlsmの空の標準モジュール先頭にコード全体を貼ります。
- 2
Excel画面の空きセルへ=RecalcTime7043()を入力します。
- 3
セルの表示形式をユーザー定義のyyyy/mm/dd hh:mm:ssにします。
- 4
数秒後にF9を押し、表示時刻が更新されることを確認します。手動計算モードではセルの編集だけで更新されない場合があります。