Excel中的菜单和工具栏的ID编号
下面先看看几个VBA操作Excel中的菜单和工具栏示例:
(1)如果您使用语句CommandBars(1).Controls("Help").ID或CommandBars(1).Controls("帮助").ID,将会产生“无效的过程调用或参数”错误。您必须使用CommandBars(1).Controls("帮助(H)").ID语句或采用其它的方法。产生上述错误的原因是在英文版本的Excel中“帮助”菜单是用”Help”作为它的标题,而非英文版本中的Excel菜单标题是不同的。
(2)您可以使用FindControl方法对菜单进行操作。在VBA帮助系统中,对FindControl方法给出了一个示例,可实现的功能为:在命令栏“Custom”中查找第一个控件。如果该控件是按钮,则示例将用 FindControl 方法查找 Copy 按钮(位于 Standard 工具栏上),然后复制 Copy 按钮的表面并粘贴到该控件上,代码如下:
Set oldCtrl = CommandBars("Custom").Controls(1)
If oldCtrl.Type = 1 Then
Set newCtrl = CommandBars.FindControl(Type:= _
MsoControlButton, ID:= _
CommandBars("Standard").Controls("Copy").ID)
NewCtrl.CopyFace
OldCtrl.PasteFace
End If
当您将该示例输入ExcelVBE编辑器中进行调试时,会出现“运行时错误5:无效的过程调用或参数”错误提示。其原因也是由于该程序是在英文版本的Excel中调试通过的,而非英文版本的Excel中,控件的名称可能不相同。
因此,在对Excel的菜单和工具栏进行操作时,无论您是使用Controls属性得到该类控件的所有对象,还是使用FindControl方法返回符合指定条件的CommandBarControl对象,都需要对引用的控件名称或者ID编号与所使用的Excel版本相符合,这样才能使VBA程序正确运行并得到所需要的结果。
在这里,推荐使用菜单和工具栏控件的ID编号。通常情况下,使用ID编号能在不同的语言版本中均能运行。如在VBE的调试窗口中输入以下语句并回车后得到ID相应的结果。
? commandbars(1).FindControl(Id:=30007).Caption
工具(&T)
又如:Application.CommandBars("Worksheet Menu Bar"). _
Controls("格式(O)").controls(1).execute
或Application.CommandBars.FindControl(ID:=855).Execute
执行上述语句将弹出“单元格格式”对话框。
又如:Dim NewCtrl As CommandBarControl
Set NewCtrl = CommandBars.FindControl(ID:=113)
NewCtrl.Execute
或Application.CommandBars.FindControl(ID:=113).Execute
执行上述语句将对所选单元格或单元格区域文本加粗。
下面列出了Excel 2003中主要的菜单栏各菜单项和工具栏各按钮的ID编号。在文后附有一个工作簿,可以罗列出您的Excel中所有菜单和工具栏的ID编号。
(1)一般工作表菜单栏编号为“Worksheet Menu Bar”或为1;图表菜单栏编号为“Char Menu Bar”或为1。工具栏编号为0;快捷菜单编号为2。例如CommandBars("Worksheet Menu Bar")或CommandBars(1)代表工作表菜单栏。
(2)Excel2003中文版顶级菜单的菜单名称和ID编号
菜单名称 ID编号
文件(F) 30002
编辑(E) 30003
视图(V) 30004
插入(I) 30005
格式(O) 30006
工具(T) 30007
数据(D) 30011
窗口(W) 30009
帮助(H) 30010
(3)其它控件名称和ID编号,下面举几个常见的:
名称 ID编号
剪切(T) 21
复制(C) 19
粘贴(P) 22
定位(G)… 757
清除(A) 30021
删除(D)… 478
其它的控件名称和ID编号详见示例文档 列出菜单和工具栏的ID编号.xls。
当然,在使用VBA对菜单和工具栏进行操作时,您可能也会需要进行反复调试才能找到正确的名称或ID。
Excel中的菜单和工具栏的ID编号
最新推荐文章于 2022-05-17 11:14:38 发布