ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 在VBA中使用以过程名为参数的方法或属性时要注意什么?

在VBA中使用以过程名为参数的方法或属性时要注意什么?

作者:绿色风 分类: 时间:2022-08-17 浏览:85
楼主
水星钓鱼
Q:在VBA中使用以过程名为参数的方法或属性时要注意什么?
A:VBA中有很多方法或者属性需要提供过程名作为参数,如Application.OnTime、Shape.OnAction、CommandBarControl.OnAction 等。
当将代码放置在“标准模块”中时,无需指定模块名
如以下代码只需要指定.OnAction = "xyf"就可以直接运行,
  1. Sub AddCmd()
  2.     Dim oCmb As CommandBar
  3.     Dim oCmt As CommandBarControl
  4.     Set oCmb = Application.CommandBars("cell")
  5.     With oCmb
  6.         .Reset
  7.         Set oCmt = .Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
  8.         With oCmt
  9.             .Caption = "测试"
  10.             .OnAction = "xyf"
  11.         End With
  12.     End With
  13. End Sub
  14. Sub xyf()
  15.     '这里写要执行的功能代码
  16.     MsgBox "你在使用右键菜单中的自定义按钮"
  17. End Sub
但是相同的代码如果放在Sheet1、Sheet2、ThisWorkbook这些对象模块(类模块)则当单击单元格右键菜单中的“测试”命令按钮时
将出错,弹出如下图所示的提示

 
这个时候需要将参数指定为"类名.过程名"的形式

如以下代码放置在Sheet1中,需要将.OnAction 指定为.OnAction = "sheet1.xyf"的形式,这点容易被忽略。
  1. Sub AddCmd()
  2.     Dim oCmb As CommandBar
  3.     Dim oCmt As CommandBarControl
  4.     Set oCmb = Application.CommandBars("cell")
  5.     With oCmb
  6.         .Reset
  7.         Set oCmt = .Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
  8.         With oCmt
  9.             .Caption = "测试"
  10.             .OnAction = "sheet1.xyf"
  11.         End With
  12.     End With
  13. End Sub
  14. Sub xyf()
  15.     '这里写要执行的功能代码
  16.     MsgBox "你在使用右键菜单中的自定义按钮"
  17. End Sub
2楼
angel928
我要先从最简单的VBA开始学起。这个留存。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap