なお、残念ながら以下のようなセル入力時の関数一覧の
ツールチップや、関数入力時の
インテリセンスは表示することはできません。
下図 SUM の場合のようなインテリセンスは、ユーザ定義関数では表示不可
ユーザー定義関数として作成した Helon との表示相違
通常(自動再役さんスイッチがオンの場合)、セルの値を変更すると、そのセルを参照しているセルの計算式は、全て
再計算されます。
しかし、
参照しているセルの値が変化していない場合は、ユーザー定義関数は再計算されません。
本例のような簡単な関数の場合は問題ありませんが、内部で
Now() のように、呼び出すたびに異なる値を返す関数などを使用している場合は、少々、不都合が生じます。
「
シート再計算(F9)」を実行しても、変更されたセルを参照していないセルの計算式は
再計算されず、常に同じ値となります。
そのために用意されているメソッドが、
Application.Volatile です。
書式:
Application.Volatile( Volatile )
Volatile:
True を指定すると、その関数は
自動再計算関数になります。
参照していないセルでも、値が」変化すると、
全てのセルの式が再計算されます。
False を指定すると、非自動再計算関数となります。既定値は True です。
下記のように関数処理の先頭行に追加します。
Sub RegisterMyFunction()
Application.Volatile True '強制再計算
Application.MacroOptions Macro:="Heron", _
Description:="3辺の長さから三角形の面積を求めます", _
Category:="数学/三角", _
ArgumentDescriptions:=Array("辺Aの長さ", "辺Bの長さ", "辺Cの長さ"), _
HelpFile:="../../../../kyozai/excel_mid/150_macro/50_userfunction.htm"
End Sub
ただし、この関数は常に再計算されるので、ワークシートを開いたりセルの値を変更する場合、VBAの内容によっては、表示速度が
遅くなることがありますのでご注意!