名前付き引数とオプションの引数について
Sub プロシージャまたは Function プロシージャを呼び出すときは、プロシージャの定義に表示される順序で引数を位置指定することも、位置に関係なく名前で引数を指定することもできます。
たとえば、次の Sub プロシージャは 3 つの引数を受け取ります。
Sub PassArgs(strName As String, intAge As Integer, dteBirth As Date)
Debug.Print strName, intAge, dteBirth
End Sub
次の例に示すように、引数をコンマで区切られた正しい位置に指定することで、このプロシージャを呼び出すことができます。
PassArgs "Mary", 29, #2-21-69#
また、コンマで区切った名前付き引数を指定することで、このプロシージャを呼び出すこともできます。
PassArgs intAge:=29, dteBirth:=#2/21/69#, strName:="Mary"
名前付き引数は、引数の名前、コロン、等号 (:=)、および引数の値の順番に記述します。
名前付き引数は、オプションの引数があるプロシージャを呼び出すときに特に便利です。 名前付き引数を使用した場合は、省略した位置引数を示すためにコンマを含める必要がありません。 また、名前付き引数を使用すると、渡した引数と省略した引数を簡単に追跡できます。
省略可能な引数の前には、プロシージャ定義の Optionalキーワード (keyword) が付きます。 また、プロシージャの定義でオプション引数の既定値も指定できます。 以下に例を示します。
Sub OptionalArgs(strState As String, Optional strCountry As String = "USA")
...
End Sub
オプション引数のあるプロシージャを呼び出すときは、オプションの引数を指定するかしないかを選択できます。 オプションの引数を指定しないと、既定値がある場合はそれが使用されます。 既定値が指定されていない場合、引数は指定した型の任意の変数に対してになります。
次のプロシージャには、 と varCountry
変数という 2 つの省略可能な引数がvarRegion
含まれています。
IsMissing 関数は、オプションの Variant 引数がプロシージャに渡されたかどうかを判断します。
Sub OptionalArgs(strState As String, Optional varRegion As Variant, Optional varCountry As Variant = "USA")
If IsMissing(varRegion) And IsMissing(varCountry) Then
Debug.Print strState
ElseIf IsMissing(varCountry) Then
Debug.Print strState, varRegion
ElseIf IsMissing(varRegion) Then
Debug.Print strState, varCountry
Else
Debug.Print strState, varRegion, varCountry
End If
End Sub
次の例に示すように、名前付き引数を使用してこのプロシージャを呼び出すことができます。
OptionalArgs varCountry:="USA", strState:="MD"
OptionalArgs strState:= "MD", varRegion:=5
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。