例:
Private Function Func(ByRef argv1 As String, ByVal argv2 As String)
argv1 = "I love WYC!"
argv2 = "I love WYC!"
End Function
argv1 = "I love WYC!"
argv2 = "I love WYC!"
End Function
Sub Main()
Dim a As String, b As String
a = "This is a!"
b = "This is b!"
Func a, b
MsgBox a & ";" & b
End Sub
Dim a As String, b As String
a = "This is a!"
b = "This is b!"
Func a, b
MsgBox a & ";" & b
End Sub
原因是:ByRef 类型的参数在函数过程中被重新赋值,所以函数调用结束后,a变量的值为新被赋予的“I love WYC!”,而作为 ByVal 类型的参数b,由于不能被程序修改,即使在函数过程中对该变量重新赋值,其值仍为函数调用前的“This is b!”。另外,声明 ByRef 类型的参数时,可以不声明为 ByRef <参数><类型>,而只用 <参数><类型> 即可, ByVal 则必须使用 ByVal <参数><类型>。