名前付き引数とオプションの引数について

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キーワード が付きます。 また、プロシージャの定義でオプション引数の既定値も指定できます。 以下に例を示します。

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 のサポートおよびフィードバックを参照してください。