定义一个函数:
Function fun(a As Integer, Optional ByVal b As Integer = 5)
Debug.Print (a)
Debug.Print (b)
a = 100
b = 200
End Function
Sub run()
Dim a As Integer
Dim b As Integer
a = 10
b = 20
Call fun(a, b)
Debug.Print (a)
Debug.Print (b)
End Sub
运行run的结果:
vba默认是ByRef
ByRef是把自己本身传递给函数,在函数内修改它,就是修改它的本身
ByVal是把自己复制一份再传递给函数,在函数内修改它,只是修改它的分身,对它的本身没有修改