打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA中ByVal和 ByRef有什么区别?

VBA中ByVal和 ByRef有什么区别?  

ByVal表示该参数按值传递。 

ByRef表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。

按值:一种将参数值而不是将地址传递给过程的方式,这就使过程访问到变量的复本。结果,过程不可改变变量的真正值。
按地址:一种将参数地址而不是将值传递给过程的方式,这就使过程访问到实际的变量。结果,过程可改变变量的真正值。除非另作说明,否则按地址传递参数。

简明一点说:以ByVal传递给过程,过程里有代码对这个变量做了更改,在过程结束返回后这个变量还是调用过程前的值,不会变化。以ByRef传递给过 程,过程里有代码对这个变量做了更改,在过程结束返回后这个变量的值就是过程里改成的那个值。

下面举个例子:

(1)ByVal示例

Sub TmpByVal()
Dim a As String
a = "2"
Call FunByVal(a)
MsgBox CStr(a)
End Sub

Function FunByVal(ByVal a)
a = "3"
End Function

(2)ByRef示例

Sub TmpByRef()
Dim a As String
a = "2"
Call FunByRef(a)
MsgBox CStr(a)
End Sub

Function FunByRef(ByRef a)
a = "3"
End Function

总结:vb(vba)中,除非你有足够的理由和有了足够的准备接受传址得来的值,都要使用ByVal来传值,ByRef意味梦魇的开始!但不要因为怕 ByRef就不用,而是要注意出现梦魇时要想到那可能是使用ByRef的结果。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Excel VBA之第二十五课
关于VB里 ByRef(传址) 与 ByVal(传值) 用法解析
Excel VBA中传递参数方式byval(副本)和byref(共有变量)
VBA的过程及参数详解
VB:参数传递之“传址”与“传值”的区别
【diannaoxitong】为大家详细介绍Byval 和byref的区别(举例说明)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服