了解命名参数和可选参数
调用 Sub 或 Function 过程时,可以按过程定义中出现的顺序按位置提供 参数 ,也可以按名称提供参数,而不考虑位置。
例如,下面的 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
当您使用可选参数调用过程时,可以选择是否指定可选参数。 如果不指定可选参数,则会使用默认值(如果有)。 如果未指定默认值,则参数将为指定类型的任何变量。
以下过程包括两个可选参数, varRegion
和 varCountry
变量。
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。