打开APP
userphoto
未登录

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

开通VIP
Excel VBA之第二十五课

   又是美好的一天,我们继续前行,上次课我们学习了过程的基础知识,形参与实参,今天我们来学习过程基础之地址传递和值传递。

   1、地址传递

   按地址传递参数就是将实参的地址给相应的实参,就好像你把自己家的地址给了人家,人家就可以随便找到你家,然后改变你家里的物品(或添置或拿走),此时形式参数与实际参数使用相同的内存地址单元,这样通过调用被调程序可以改变实参的值。系统缺省参数传递方式是按地址传递。有两种格式:

  (1)、Sub 过程名(ByRef i%, ByRef sr$)

  (2)、Sub 过程名(i%,sr$)

   还记得上节课的例子嘛:

 

   运行过程“实参示例”,得到如下结果:

 

   为什么结果的i和sr的结果变化了?现在我们知道了“形参示例”中的参数是地址传递的,在被调用之后它把i和sr的原始值给改变了。如果我们写成这样:Sub形参示例(ByRef i%, ByRef sr$),得到的结果也是一样的。


   2、值传递

   值传递是指形参在接受实参时,接受的是实参的实际值,而非实参的地址,实参是不受任何影响的,如果过程定义形参时使用了ByVal关键字,此时实参与形参之间就是值传递方式。语法格式如下:

   Sub 过程名(ByVal i%, ByVal sr$)

   示例:

   结果:

   看,在这段代码中,虽然“形参示例”被调用了,但由于它是值传递方式,故无论怎么折腾,它都不会对i和sr任何影响!

   那么VBA为什么要有这么样的功能呢?直接统一按照值传递,互不影响不就好了,还这么麻烦,这是一位网友问我的。我只能说,萝卜青菜,各有所爱,有的程序需要这样或那样的传递方式。我们还是默默接受吧~

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA中ByVal和 ByRef有什么区别?
(转载)VB中ByVal与ByRef的区别
Excel VBA中传递参数方式byval(副本)和byref(共有变量)
关于VBA参数传递 byval 和 Byref(默认)
第十一节 过程和函数
函数的形参,实参和传值方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服