在调用 Sub 或 Function 过程时,可以“通过位置”传递参数(即按参数出现在过程定义中的顺序),或者“通过名称”传递参数而不考虑位置。
通过名称传递参数时,指定参数的声明名称,后接冒号和等号 (:=),后面是参数值。可以按照任意的顺序提供命名参数。
例如,下面的 Sub 过程带三个参数:
Visual Basic
Sub studentInfo(ByVal name As String, _ Optional ByVal age As Short = 0, _ Optional ByVal birth As Date = #1/1/2000#) Debug.WriteLine("Name = " & name & _ "; age = " & CStr(age) & _ "; birth date = " & CStr(birth)) End Sub
调用该过程时,可以通过位置、通过名称或者两者的混合来提供参数。
通过位置传递参数 另一种方法是,可以通过名称传递参数(同样以逗号分隔)来调用 studentInfo 过程,如下例所示:
Visual Basic
Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")
通过位置和通过名称混合参数 当调用包含一个以上可选参数的过程时,通过名称传递参数尤其有用。如果通过名称提供参数,则不必用连续的逗号表示缺少的定位参数。通过名称传递参数也使跟踪正在传递和省略的参数变得更容易。
通过名称提供参数方面的限制 通过名称传递参数不能避免输入必需的参数。只能省略可选参数。
不能通过名称传递参数数组。这是因为当调用过程时,为参数数组提供的参数数量不确定且以逗号分隔,而编译器无法将多个参数与单个名称关联。

