|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
之前应朋友要求,做了一个在多个窗体的TEXTBOX的右击事件中创建自定义菜单的示例,
由于是相同类型控件的相同事件操作,所以使用类模块来整合所有的TEXTBOX,这个不是此
贴的重点,创建右键菜单时,会用到OnAction,但是百度不到OnAction传递对象参数的说明,
只有传递数值或字符参数的说明(当然也可以是变量的形式)。
最后没办法,使用了投机取巧的方式实现,就是每个窗体在加载时将窗体名称装入字典,
再把触发类模块操作的对象的所在窗体名称和对象名称以字符串变量的形式,传递给OnAction
的宏事件。虽然最终可以实现基本功能,但感觉不完美,郁闷至极。
偶然从论坛某贴得到启发,某些情况下可以传递对象,比如cells(1,1),但是据说target
未能实现,其它控件也未能实现。虽然只有一丝希望,但仍然使我重新拾起信心,再次尝试。
通过几次尝试,最终实现了当初希望的完美,实际上只要在传递对象参数时,参数两端
不加上双引号就行了,并且不限于控件等对象,数组等变量均可以,甚至可以是一个表达式,
如此简单我竟然百度不到。除此之外还有一个关键点,传递的对象必须设置成公有变量,
过程内的私有变量已经确认过传递不了。
以上内容本来可以用一个非常简单的示例来演示,但是既然我已经有一个完整的示例,
就不想重新做一个了,附件里面涉及的知识点:
1、类模块
2、右键菜单创建
3、OnAction传参演示,重点是传递一个对象(控件)
4、剪贴板操作
以上供有需要的朋友参考。
补充内容 (2024-3-4 11:10):
2024/3/4补充:上述说明中有一处错误,或者说不充分,传递的对象不一定是公有变量,也可以是所有过程都可以访问的固定对象,作为参数传递的时候,必须是这个固定对象的完整名称而不是变量名。 |
评分
-
1
查看全部评分
-
|