可以通过引用或值将参数传递给一个过程(函数或子)。默认情况下,Excel的VBA按引用传递参数。与往常一样,我们将用一个简单的例子来使事情变得更加清晰。

将工作表上的一个命令按钮并添加以下代码行:

Dim x As Integer

x = 10

MsgBox Triple(x)

MsgBox x

该代码调用该函数三倍。这是我们感兴趣的。需要的功能被放置到一个模块第二MSGBOX的结果。

1.打开Visual Basic编辑器,然后单击插入,模块。

2.添加以下代码行:

Function Triple(ByRef x As Integer) As Integer

x = x  3

Triple = x

End Function

结果当您单击工作表上的命令按钮:

ByRef Result

ByRef Result

3.为ByVal替换为ByRef。

Function Triple(ByVal x As Integer) As Integer

x = x  3

Triple = x

End Function

结果当您单击工作表上的命令按钮:

ByVal Result

ByVal Result

说明:当传递参数作为参考,我们引用的是原来的值。 X(原始值)的值是在函数改变。其结果是,第二MSGBOX显示器30的值。当将参数传递由值我们传递副本的功能。原来的值不会改变。其结果是,第二显示MSGBOX 10的值(原始值)。