Excel VBA: ユーザー定義関数を自動再計算型に改良する方法・揮発性の設定
Excel VBAを利用したユーザー定義関数は、デフォルトではその引数に関連するセルの値が変わらない限り再計算されません。しかし、特定のケースでは、関数がシート計算時に自動的に再計算される「揮発性」を持たせることが望ましい場合があります。今回は、ユーザー定義関数を自動再計算型に改良する方法と揮発性の設定について解説します。
揮発性(Volatile)とは?
揮発性とは、Excelの関数がシートの再計算が行われるたびに自動的に再計算される特性を指します。組み込み関数の中には、RAND関数,RANDBETWEEN関数, NOW関数,TODAY関数 といった関数のようにデフォルトで揮発性を持つものもあります。VBAで作成したユーザー定義関数も、この揮発性を設定することができます。
揮発性を設定する方法
ユーザー定義関数に揮発性を設定するには、関数のコード内で
Application.Volatile
メソッドを使用します。以下に基本的な形を示します。
Function MyVolatileFunction() Application.Volatile ' 処理 End Function
このコードにより、MyVolatileFunction
関数はシートが再計算されるたびに自動的に再計算されるようになります。
揮発性関数の注意点
揮発性関数は便利な一方で、多用するとワークブックのパフォーマンスに影響を与える可能性があります。特に大規模なデータや複雑な計算を行うワークシートでは、適切な使い方と最適化が必要です。
例として、現在の日時を表示し、シートが再計算されるたびに自動更新される関数を作成してみましょう。
Function CurrentDateTime() Application.Volatile CurrentDateTime = Now End Function
この関数は、Excelのシートが再計算されるたび(例えば、他のセルの値を変更する、F9キーを押すなど)に、現在の日時を更新します。
(通常のユーザー定義関数ではF9での更新に対応していないが、Application.Volatile
の効果で更新される)
まとめ
揮発性は、Excel VBAで作成した関数を動的でリアクティブなものにする強力なツールです。ただし、その再計算にはコストがかかるため、適切な場面と方法で使用することが重要です。上手に揮発性を利用し、データ分析やレポート作成を更に効果的に行いましょう。
コメント