← コード一覧へ戻る
実務プロシージャ

再計算のたびに更新する関数を作る(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を再計算対象にし、その計算が行われた時刻を返します。

  1. 入力・開始時

    セルへ=RecalcTime7043()を入力

  2. 実行する処理

    Volatileで再計算対象にし、Nowを返す

  3. 結果

    F9の再計算時に時刻が更新される

秒ごとに動く時計ではありません。Excelの再計算が起きた時に更新します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    練習用.xlsmの空の標準モジュール先頭にコード全体を貼ります。

  2. 2

    Excel画面の空きセルへ=RecalcTime7043()を入力します。

  3. 3

    セルの表示形式をユーザー定義のyyyy/mm/dd hh:mm:ssにします。

  4. 4

    数秒後にF9を押し、表示時刻が更新されることを確認します。手動計算モードではセルの編集だけで更新されない場合があります。

使っている機能の公式ドキュメント(Microsoft Learn)