您可以通过引用或值将参数传递给过程(函数或子函数)。默认情况下,Excel VBA通过引用传递参数。与往常一样,我们将使用一个简单的示例来使情况更清楚。
在您的工作表上放置一个命令按钮,并添加以下代码行:
昏暗 x 作为 整数
x = 10
MsgBox Triple(x)
MsgBox x
x = 10
MsgBox Triple(x)
MsgBox x
该代码调用函数Triple。这是我们感兴趣的第二个MsgBox的结果。需要将功能放入模块中。
1.打开Visual Basic编辑器,然后单击“插入”,“模块”。
2.添加以下代码行:
函数 Triple(ByRef x As Integer)As Integer
x = x * 3
Triple = x
End Function
x = x * 3
Triple = x
End Function
单击工作表上的命令按钮时的结果:
3.用ByVal替换ByRef。
函数 Triple(ByVal x As Integer)As Integer
x = x * 3
Triple = x
End Function
x = x * 3
Triple = x
End Function
单击工作表上的命令按钮时的结果:
说明:通过引用传递参数时,我们引用的是原始值。x的值(原始值)在函数中更改。结果,第二个MsgBox显示值为30。按值传递参数时,我们会将副本传递给函数。原始值不变。结果,第二个MsgBox显示的值为10(原始值)。