省略可能な引数・デフォルト値を設定( Optional キーワード )
Optional キーワード
Optional キーワードを使用するとプロシージャの引数を省略したり、引数を省略した場合の初期値を設定することができます。
【構文】
Sub name ( Optional varname [ As varname_type ] [ = default ] )
【項目の説明】
- name ・・・ 定義するプロシージャ(Sub プロシージャ・Function プロシージャなど)の名前
- varname ・・・ プロシージャを呼び出したときに引き渡す引数を指定します。複数指定する場合はカンマ(,)で区切ります。
- varname_type ・・・ 引数 varname のデータ型を指定します。省略すると引数 varname は、バリアント型(Variant)となります。
- default ・・・ プロシージャを呼び出した際、Optional キーワードが付けられた引数が省略された場合のデフォルト値を指定します。(省略可)
※ 引数 varname が、バリアント型(Variant)で、引数のデフォルト値 default が設定されていない場合は、IsMissing 関数 を使って引数 varname が省略されたかどうかを判定することができます。
Optional キーワードのデフォルト値に設定できる値は、定数式のみで、オブジェクトを指定することはできません。
Optional キーワードの使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Sub Sample() 'Sample_optional01 Debug.Print Sample_optional01(1, 2, 3) '引数すべてを設定 Debug.Print Sample_optional01(1, , 3) '2番目の引数を省略 Debug.Print Sample_optional01(1, 2) '3番目の引数を省略 Debug.Print Sample_optional01(1) '2番目、3番目の引数を省略 'Sample_optional02 Debug.Print Sample_optional02() '引数省略 Debug.Print Sample_optional02(25) '引数に整数値を設定 Debug.Print Sample_optional02(ActiveSheet) '引数に「ActiveSheet」を設定 End Sub '------------------------------------------------------------------------------- 'Optional キーワードを使った例 Function Sample_optional01(val1 As Integer, Optional val2 As Integer = 999, _ Optional val3 = "省略されました") As Variant If IsNumeric(val3) Then Sample_optional01 = val1 + val2 + val3 Exit Function End If Sample_optional01 = val3 End Function '------------------------------------------------------------------------------- 'オブジェクト型の引数 Function Sample_optional02(Optional obj) As String '※オブジェクト型の場合は、デフォルト値を設定することが出来ません 'IsMissing 関数を使用して引数が省略されたかどうか確認 If IsMissing(obj) Then Set obj = ActiveWorkbook End If '引数の型チェック(上記IsMissing 関数は、バリアント型でしか使用できないため) If VarType(obj) = vbObject Then Sample_optional02 = obj.Name Else Sample_optional02 = "引数が間違っています" End If End Function |
実行結果
関連記事
-
set ステートメントを使う
Set ステートメントを使う 【構文 1】 Dim objectvar [ As …
-
引数を可変にする( ParamArray )
ParamArray キーワード ParamArray キーワードを使用すると任 …
-
繰り返し処理(For Each…Next ステートメント)
For Each…Next ステートメントの使い方 【構文】 For …
-
With ステートメントを使う
With ステートメントを使う With ステートメントを使うことで、1度指定し …
-
条件分岐 If文(If…Then…Else ステートメント)
If…Then…Else ステートメントの使い方 【構文 …
-
エラー処理(On Error ステートメント / Errオブジェクト)
On Error ステートメントの使い方 【構文 1】 On Error GoT …
-
配列が引数のプロシージャを作成する
配列が引数のプロシージャを作成する 【構文】 { Sub | Function …
-
条件分岐(Select Case ステートメント)
Select Case ステートメントの使い方 【構文】 Select Case …
-
繰り返し処理(While…Wend ステートメント)
While…Wend ステートメントの使い方 【構文】 While …
-
ユーザー定義型変数を使う(Type ステートメント)
Type ステートメントを使う Type ステートメントを使うと1つまたは複数の …