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