2024年6月1日发(作者:绪白卉)
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 = 1 Then
Set newCtrl = ntrol(Type:= _
MsoControlButton, ID:= _
CommandBars("Standard").Controls("Copy").ID)
ce
ace
End If
当您将该示例输入ExcelVBE编辑器中进行调试时,会出现“运行时错误5:无效的过程调
用或参数”错误提示。其原因也是由于该程序是在英文版本的Excel中调试通过的,而非英
文版本的Excel中,控件的名称可能不相同。
因此,在对Excel的菜单和工具栏进行操作时,无论您是使用Controls属性得到该类控件的
所有对象,还是使用FindControl方法返回符合指定条件的CommandBarControl对象,都需
要对引用的控件名称或者ID编号与所使用的Excel版本相符合,这样才能使VBA程序正确
运行并得到所需要的结果。
在这里,推荐使用菜单和工具栏控件的ID编号。通常情况下,使用ID编号能在不同的语
言版本中均能运行。如在VBE的调试窗口中输入以下语句并回车后得到ID相应的结果。
? commandbars(1).FindControl(Id:=30007).Caption
工具(&T)
又如:dBars("Worksheet Menu Bar"). _
Controls("格式(O)").controls(1).execute
或ntrol(ID:=855).Execute
执行上述语句将弹出“单元格格式”对话框。
又如:Dim NewCtrl As CommandBarControl
Set NewCtrl = ntrol(ID:=113)
e
或ntrol(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。
(17 KB, 下载次数: 246)
2006-9-8 21:27 上传下载次数: 246
[分享]Excel中的菜单和工具栏的ID编号
当然,在使用VBA对菜单和工具栏进行操作时,您可能也会需要进行反复调试才能找到正
确的名称或ID。
By fanjy in 2006-9-4
2024年6月1日发(作者:绪白卉)
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 = 1 Then
Set newCtrl = ntrol(Type:= _
MsoControlButton, ID:= _
CommandBars("Standard").Controls("Copy").ID)
ce
ace
End If
当您将该示例输入ExcelVBE编辑器中进行调试时,会出现“运行时错误5:无效的过程调
用或参数”错误提示。其原因也是由于该程序是在英文版本的Excel中调试通过的,而非英
文版本的Excel中,控件的名称可能不相同。
因此,在对Excel的菜单和工具栏进行操作时,无论您是使用Controls属性得到该类控件的
所有对象,还是使用FindControl方法返回符合指定条件的CommandBarControl对象,都需
要对引用的控件名称或者ID编号与所使用的Excel版本相符合,这样才能使VBA程序正确
运行并得到所需要的结果。
在这里,推荐使用菜单和工具栏控件的ID编号。通常情况下,使用ID编号能在不同的语
言版本中均能运行。如在VBE的调试窗口中输入以下语句并回车后得到ID相应的结果。
? commandbars(1).FindControl(Id:=30007).Caption
工具(&T)
又如:dBars("Worksheet Menu Bar"). _
Controls("格式(O)").controls(1).execute
或ntrol(ID:=855).Execute
执行上述语句将弹出“单元格格式”对话框。
又如:Dim NewCtrl As CommandBarControl
Set NewCtrl = ntrol(ID:=113)
e
或ntrol(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。
(17 KB, 下载次数: 246)
2006-9-8 21:27 上传下载次数: 246
[分享]Excel中的菜单和工具栏的ID编号
当然,在使用VBA对菜单和工具栏进行操作时,您可能也会需要进行反复调试才能找到正
确的名称或ID。
By fanjy in 2006-9-4