了解命名参数和可选参数

调用 SubFunction 过程时,可以按过程定义中出现的顺序按位置提供 参数 ,也可以按名称提供参数,而不考虑位置。

例如,下面的 Sub 过程采用三个参数。

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

当您使用可选参数调用过程时,可以选择是否指定可选参数。 如果不指定可选参数,则会使用默认值(如果有)。 如果未指定默认值,则参数将为指定类型的任何变量。

以下过程包括两个可选参数, varRegionvarCountry 变量。 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。