はじめに
Excel でユーザー定義関数を作る際に、よく調べることをまとめました。
参考
以下の記事が割と詳しい。
引数を受け取る
わりと普通の引数
Function TestMyFunction(myParam As Long) As Long
Function TestMyFunction2(myParam As Single) As Single
セル選択範囲引数
Range オブジェクトである。
Function TestMyFunction3(selectedRange As Range) As Boolean
@IT:Windows TIPS -- Tips:ユーザー定義関数で任意のセル範囲の値を取得する
Variant で受け取って、期待する型かどうかチェックする
Function TestMyFunction4(myParam As Variant) As Boolean
If TypeName(myParam) = "Variant/Object/Range" Then ...
返り値
配列を返すことで、複数のセルに別々の値を格納することができる。
@IT:Windows TIPS -- Tips:Excelのユーザー定義関数で複数の結果値を返す
エラーの出し方
CVErr()関数でエラーを発生させることができる。CVErr()関数の引数は以下の定数。
定数 | 表示されるエラー | 意味 |
---|---|---|
xlErrNull | #NULL! | 指定した2つのセルに共通部分がない。 |
xlErrDiv0 | #DIV/0 | 値が0もしくは空のセルで割られている |
xlErrValue | #VALUE! | 引数の形式が過っている。 |
xlErrRef | #REF! | 無効なセルが参照されている |
xlErrName | #NAME? | 利用できない文字列が含まれている。 |
xlErrNum | #NUM! | 値の指定に誤りがある。正当な結果が得られない。 |
xlErrNA | #N/A | 対象となるデータが存在しない。 |
Function SampleFunction() As Variant
SampleFunction = CVErr(xlErrNA)
End Function
関数内にアクションコードを含めると #VALUE! エラーを返せる。
関数の情報を登録する
Workbook_Open イベントにて関数を登録する処理を行うと、ヘルプなども追加できるようだ。