有效地传递参数
所有参数都按引用传递给过程,除非您另行指定。 这非常高效,因为按引用传递的参数的传递时间相同,并在过程中占用相同的空间量(4 个字节),而无论参数的数据类型。
You can pass an argument by value if you include the ByVal keyword in the procedure's declaration. 值传递的参数在过程中使用 2-16 个字节,具体取决于参数的数据类型。 Larger data types take slightly longer to pass by value than smaller ones. Because of this, String and Variant data types generally should not be passed by value.
按值传递参数将复制原始变量。 过程内参数的更改不会反映回原始变量。 例如:
Function Factorial(ByVal MyVar As Integer) ' Function declaration.
MyVar = MyVar - 1
If MyVar = 0 Then
Factorial = 1
Exit Function
End If
Factorial = Factorial(MyVar) * (MyVar + 1)
End Function
' Call Factorial with a variable N.
Sub Test()
N = 5
Debug.Print Factorial(N) ' Displays 120 (the factorial of 5)
Debug.Print N ' Displays 5.
End Sub
Without including ByVal in the function declaration, the preceding Print statements would display 1 and 0. 这是因为 MyVar
随后将引用变量 ,该变量 S
将减少 1,直到等于 0。
由于 ByVal 会创建参数的副本,因此允许将变体传递给 Factorial 函数。 You can't pass a variant by reference if the procedure that declares the argument is another data type.
另请参阅
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。