ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 14841|回复: 28

[分享]Excel中的菜单和工具栏的ID编号

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-9-8 21:27 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:UI界面定制

Excel中的菜单和工具栏的ID编号
分类:ExcelVBA>>菜单和工具栏
下面先看看几个VBA操作Excel中的菜单和工具栏示例:
(1)如果您使用语句CommandBars(1).Controls("Help").IDCommandBars(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


点评

适用于Excel 2003版  发表于 2013-9-24 16:12

TA的精华主题

TA的得分主题

发表于 2006-9-9 00:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

不错,谢谢

TA的精华主题

TA的得分主题

发表于 2006-9-9 13:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享。

TA的精华主题

TA的得分主题

发表于 2006-9-9 13:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

又学了一招,多谢!

TA的精华主题

TA的得分主题

发表于 2006-11-7 16:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢你了

TA的精华主题

TA的得分主题

发表于 2006-11-24 01:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-11-24 08:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-11-24 16:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢

TA的精华主题

TA的得分主题

发表于 2006-12-9 09:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-12-24 21:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢Fanjy!!辛苦了,发那么多好帖帮助我们这样的菜鸟。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 13:13 , Processed in 0.038103 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表