VBA(Visal Basic for Applications)のコーディングに慣れ、ユーザー定義関数を作り始めた方からいただく質問があります。
引数を省略可能にするにはどうすればいいのでしょうか?
というご質問です。
例えば、ワークシート関数のVLOOKUP関数では引数を4つ指定しますが、第4引数の「検索の型」は省略することができます。
引数にOptionalキーワードをつける
例えば、会員価格を求める「MemberPrice」というユーザー定義関数を作成するようなケースを考えてみます。
会員種別に一般会員と特別会員があり、引数に元の価格と、会員種別を判別する数字を指定する仕様にした場合、Functionプロシージャは以下のような感じになります。
Function MemberPrice(curOrg As Currency, intOpt As Integer) As Currency
Select Case intOpt
'特別会員価格:25%引き
Case 0
MemberPrice = Int(curOrg * 0.75)
'一般会員価格:10%引き
Case 1
MemberPrice = Int(curOrg * 0.9)
End Select
End Function
引数intOptが「0」のときに特別会員価格として25%引きの、「1」の場合に一般会員価格として10%引きの価格を返す仕様です。
このときにintOptを省略可能として、省略された場合には一般会員の「1」が指定されたとする場合、Functionステートメントは以下のとおりです。
Function MemberPrice(curOrg As Currency, Optional intOpt As Integer = 1) As Currency
省略可能な引数intOptの前に「Optional」キーワードをつけ、省略された場合の値を末尾に「= 1」という形で指定します。
なお、「Optional」キーワードを指定した場合、それ以降の引数も省略可能にしなければなりません。
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ユーザー定義関数で引数を省略可能に−Optionalキーワード