作者:绿色风
分类:
时间:2022-08-17
浏览:111
楼主 水星钓鱼 |
Q:在VBA中使用以过程名为参数的方法或属性时要注意什么? A:VBA中有很多方法或者属性需要提供过程名作为参数,如Application.OnTime、Shape.OnAction、CommandBarControl.OnAction 等。 当将代码放置在“标准模块”中时,无需指定模块名 如以下代码只需要指定.OnAction = "xyf"就可以直接运行,- Sub AddCmd()
- Dim oCmb As CommandBar
- Dim oCmt As CommandBarControl
- Set oCmb = Application.CommandBars("cell")
- With oCmb
- .Reset
- Set oCmt = .Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
- With oCmt
- .Caption = "测试"
- .OnAction = "xyf"
- End With
- End With
- End Sub
- Sub xyf()
- '这里写要执行的功能代码
- MsgBox "你在使用右键菜单中的自定义按钮"
- End Sub
但是相同的代码如果放在Sheet1、Sheet2、ThisWorkbook这些对象模块(类模块)则当单击单元格右键菜单中的“测试”命令按钮时 将出错,弹出如下图所示的提示
这个时候需要将参数指定为"类名.过程名"的形式
如以下代码放置在Sheet1中,需要将.OnAction 指定为.OnAction = "sheet1.xyf"的形式,这点容易被忽略。- Sub AddCmd()
- Dim oCmb As CommandBar
- Dim oCmt As CommandBarControl
- Set oCmb = Application.CommandBars("cell")
- With oCmb
- .Reset
- Set oCmt = .Controls.Add(Type:=msoControlButton, Before:=1, Temporary:=True)
- With oCmt
- .Caption = "测试"
- .OnAction = "sheet1.xyf"
- End With
- End With
- End Sub
- Sub xyf()
- '这里写要执行的功能代码
- MsgBox "你在使用右键菜单中的自定义按钮"
- End Sub
|
2楼 angel928 |
我要先从最简单的VBA开始学起。这个留存。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一