Excel中的菜单和工具栏的ID编号 分类:ExcelVBA>>菜单和工具栏 下面先看看几个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。
YTy1djV2.rar
(17 KB, 下载次数: 1918)
当然,在使用VBA对菜单和工具栏进行操作时,您可能也会需要进行反复调试才能找到正确的名称或ID。 By fanjy in 2006-9-4
|