VBA中ByVal和 ByRef有什么区别?

如题所述

ByRef表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。按值:一种将参数值而不是将地址传递给过程的方式,这就使过程访问到变量的复本。结果,过程不可改变变量的真正值。按地址:一种将参数地址而不是将值传递给过程的方式,这就使过程访问到实际的变量。结果,过程可改变变量的真正值。除非另作说明,否则按地址传递参数。简明一点说:以ByVal传递给过程,过程里有代码对这个变量做了更改,在过程结束返回后这个变量还是调用过程前的值,不会变化。以ByRef传递给过 程,过程里有代码对这个变量做了更改,在过程结束返回后这个变量的值就是过程里改成的那个值。下面举个例子:(1)ByVal示例Sub TmpByVal()Dim a As Stringa = "2"Call FunByVal(a)MsgBox CStr(a)End SubFunction FunByVal(ByVal a)a = "3"End Function(2)ByRef示例Sub TmpByRef()Dim a As Stringa = "2"Call FunByRef(a)总结:vb(vba)中,除非你有足够的理由和有了足够的准备接受传址得来的值,都要使用ByVal来传值,ByRef意味梦魇的开始!
温馨提示:答案为网友推荐,仅供参考
相似回答