VBA过程 传递参数—按顺序与按名称

先回顾有参过程定义语法

Sub 过程名称(参数1 As 数据类型1 , 参数2 As 数据类型2,…参数n As 数据类型n)
  语句块
End Sub

示例

Sub sum3(a As Integer, b As Integer, c As Integer)
  Debug.Print "a=" & a & ",b=" & b & ",c=" & c
  Debug.Print "结果为:" & a + b + c
End Sub

VBA过程传递参数,可分为:按顺序、按名称,以及两者混合。


1、按顺序传递参数

参数调用语法

过程名称 参数1 , 参数2…参数n

通常我们按照顺序传递参数,以sum3为例,sum3用于求3个数的和。


按参数顺序调用如下

Sub sum3_call()
  ' 1按顺序传递
  sum3 2000, 20, 3
End Sub

会分别将2000传给参数a;20传给参数b;3传给参数c。


2、按名称传递参数

除了按顺序,还能够按名称传递参数。

语法

过程名称 参数名x := 值x, 参数名y:=值y,…参数名z:=值z

参数名需要与过程声明的参数名称一致。

参数不用按照顺序。


按名称传递参数示例如下。

Sub sum3_call()
  ' 2按名称传递
  sum3 b:=20, c:=3, a:=2000
End Sub

过程定义的参数顺序是a、b、c,此时传递使用b、c、a,顺序可以不一致。


3、混合按顺序与按名称

VBA参数传递支持:部分按顺序,部分按名称。

要求:按顺序的参数必须是前面的几个。


示例1。正确用法。

sum3 2000, c:=3, b:=20

第1个参数按照顺序传递,后2个参数按照名称传递。


示例2。以下为错误用法。试图前面用名称传递,后面用顺序传递。会报错:语法错误。

sum3 b:=20, c:=3, 2000