このサイトではこれまでいくつかユーザー定義関数をご紹介してきました。
- ファイルの最終更新日時を取得したい−LastSaveTime関数
- 数式を別のセルに表示させたい−ViewFormula関数
- ユーザー定義書式を表示させたい−ViewFormat関数
- 範囲指定で文字列を連結−ConcatenateRangeText関数
しかし通常のワークシート関数と異なっている部分もあります。
[関数の挿入][関数の引数]ダイアログなどに、通常のワークシート関数ならば、関数の説明が表示されていますが、ユーザー定義関数では説明が表示されないのです。
例えば、
ISERROR関数なら、「セルの内容がエラー値(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、または#NULL)の場合に、TRUEを返します。」
VLOOKUP関数なら、「テーブルの左端列を検索し、指定した列と同じ行にある値を返します。テーブルは昇順で並べ替えておく必要があります。」
といった説明が表示されますが、
ユーザー定義関数の場合、「ヘルプがありません。」
と表示されてしまいます。
ユーザー定義関数は何をするものかわかるように名前をつけるのは当然ですが、自分で作った関数でさえも数が増えれば何をする関数だったか名前だけから判断するのは難しくなってくるのは否めません。
※LastSaveTime関数とViewFormula関数が含まれているブックで説明を表示する例
Excelのメニュー[ツール]−[マクロ]−[Visual Basic Editor]をクリック
↓
Visual Basic Editorのプロジェクトエクスプローラで、「ThisWorkbook」をダブルクリック
↓
「Workbook_Open」プロシージャを以下のように記述する
Private Sub Workbook_Open()
Application.MacroOptions _
Macro:="LastSaveTime", _
Description:="ファイルの最終更新日時を取得します。"
Application.MacroOptions _
Macro:="ViewFormula", _
Description:="指定されたセルの数式を表示します。"
↓
Visual Basic Editorを終了
Workbook_Openプロシージャは、ブックが開いたときに実行されるイベントプロシージャで、このプロシージャ内で[関数の挿入]ダイアログなどでどういった説明を表示させるかを、MacroOptionsメソッドで指定するわけです。
MacroOptionsメソッドの、
引数:Macroにはユーザー定義関数名を
引数:Descriptionには説明を
記述します。
もちろん、LastSaveTime関数・ViewFormula関数の実際のコードは、同じブックの標準プロシージャに記述しておいてください。
上記の、Workbook_Openプロシージャと、ユーザー定義関数のLastSaveTime関数・ViewFormula関数の記述されているブックを開くと、[関数の挿入]ダイアログなどにユーザー定義関数の説明が表示されるようになります。
ユーザー定義関数をたくさん作っている方は、是非使っていただくと便利じゃないかと思います。
- Newer:文字のロールオーバー−リンクの移動
- Older:Office Onlineが英語で表示される
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ユーザー定義関数の説明をダイアログに表示−MacroOptionsメソッド