EXCEL VBA 事件的问题。

PrivateSubWorksheet_Change(ByValTargetAsRange)这是当工作表内容发生改变时产生的事件。(ByValTargetAsRange)... Private Sub Worksheet_Change(ByVal Target As Range) 这是当工作表内容发生改变时产生的事件。

(ByVal Target As Range)的意思是什么?将发生变化的单元格记录在Target变量里,然后在代码中使用Target就能表示发生改变的单元格吗?

如果改为Byref有什么后果?
展开
 我来答
百度网友ca64c0c
2013-03-02 · TA获得超过4669个赞
知道大有可为答主
回答量:2991
采纳率:61%
帮助的人:1490万
展开全部
理解正确
Target返回的就是发生改变的单元格集合对象,就是一个完全的Range对象

ByRef:默认情况下,VBA按地址(关键字ByRef)给Function过程(或Sub子过程序)传递信息,这时被调用的函数相用函数参数中特定的原始数据。因此,如果函数改变了参数的值,原始的数值也被改变了。如果想要Function过程改变原始数值,则不必专门在参数前加关键字ByRef,因为,变量数值的传递默认就是ByRef。

ByVal: 当在参数名称前使用关键字ByVal时,VBA按值传递参数,这意味着VBA复制了一份原始数据,然后将复制的值传递给函数,如果函数改变了参数的数值,原始数据不会改变——只有复制的值变化。

参考资料: http://blog.csdn.net/ruokle/article/details/4887715

feijipao2012
2013-03-09
知道答主
回答量:51
采纳率:0%
帮助的人:22.9万
展开全部
Microsoft 窗体中的 ByVal 关键词表示将首选参数作为数值传递。这是 Visual Basic 中 ByVal 的标准含义。但是,在 Microsoft 窗体中可以将 ByVal 用于 ReturnBoolean、ReturnEffect、ReturnInteger 或 ReturnString 对象。当您如此使用时,传递的数值不是简单的数据类型;而是一个指向对象的指针。

当用于以上对象时,ByVal 将引用对象本身而非传递参数的方法。上文列出的每个对象都具有可以设置的 Value 属性。您还可以将此值传递进或传递出函数。因为您能够改变对象成员的值,所以即使该事件语法说明此参数是 ByVal,事件仍然产生与 ByRef 一致的效果。

给与 ReturnBoolean、ReturnEffect、ReturnInteger 或 ReturnString 相关的参数赋值,与给任何其他参数赋值没有区别。例如,如果事件语法指明一个用于 ReturnBoolean 对象的 Cancel 参数,语句 Cancel=True 仍然是合法的,就像对于其他数据类型一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式