在excel 中自定义菜单栏和工具栏-添加删除禁止等

在Excel 中自定义菜单栏和工具栏-添加、删除、禁止等

 

关于在 Excel 中如何自定义菜单栏和工具栏,甚至快捷菜单,微软有篇很详细的文档:如何在 Excel 中自定义菜单和菜单栏。我再把自己的经验补充一下:

当我们打开 Excel 的时候,我们会看到一个菜单栏,还有根多工具栏。具体显示哪些工具栏,我们可以通过 View->Toolbars 来控制。同时,这个长长的列表最后一项“Customize”很有用,我们可以通过这个命令来修改 Offcie 系统本身提供的各种各样的菜单项和工具栏,包括改名,删除,添加分隔线等,我们还可以添加自己的菜单项和工具栏。

对 Excel 菜单和工具栏的操作,用

“Customize”命令和用VBA 的效果是一样的,不过,用VBA 可以进行更多的自定义操作,我这里总结的就是用 VBA 操作 Excel 菜单和工具栏的知识和经验。 Excel 里的所有菜单栏,工具栏,以及快捷菜单,在 Office 系统里都是用 CommandBar (命令栏)这个类来表示的。每个工具栏都是一个 CommandBar 对象,比如我们点 View->Toolbars 看到的 “Standard”、

“Formatting”等都是单独的 CommandBar 对象。对于一个 Office 应用程序,比如 Excel,里面的所有菜单栏都放在一个 CommandBars 集合对象里。CommandBars 类是 CommandBar 类的集合,当我们想访问某个具体的菜单栏和工具栏,还有快捷菜单时,我们可以使用如下的表达方式:

Application.CommandBars(index)

Application 对象指当前的应用程序,在这里具体的就是 Excel。这里的 CommandBars 是 Application 对象的属性,返回一个 CommandBars 对象,CommandBars(index) 这种表示法则返回一个具体的 CommandBar 对象。index 可以是 CommandBar 对象的编号,也可以是 CommandBar 对象的名称。我编了段代码把我自己机器上安装的 Excel 的所有 CommandBar 对象的名称的编号打了份列表出来。如果想通过 VBA 来控制 Excel 的 命令栏,其中有几个常用的名称我们应该要了解的。Excel 的菜单栏名称是

“Worksheet Menu Bar”,编号是 1。常用的工具栏有“Standard”,编号 3;

“Formatting”, 编号 4。鼠标右键点工作表区域出来的快捷菜单名称是“Cell”,编号是 36。用名称和用编号访问 CommandBar 对象是等价的。 Application.CommandBars(“Worksheet Menu

Bar”) 和 Application.CommandBars(1) 两个写法效果是一样的。

当我们想添加自己的工具栏时,我们是用 CommandBars 的 Add 方法,语法如下:

CommandBars.Add(Name, Position, MenuBar, Temporary) Name 参数是我们给自定义的工具栏起的名称。已经存在的名字不能重复使用,否则会报错(Run-Time error 5,无效的参数)。

Position 参数不仅决定自定义工具栏的位置,还决定自定义工具栏的类型。这个参数是 MsoBarPosition 枚举常量里的一个。msoBarLeft, msoBarTop, msoBarRight,

msoBarBottom 四个值表示 自定义工具栏出现在 Excel 窗口的上、下、左、右四个位置,是 docked 的。msoBarFloating 表示新工具栏 不是 docked 的,浮在窗体上方。msoBarPopup 则表示创建的是快捷菜单。msoBarMenuBar 这个值 Windows 用不到,只用在 Macintosh 操作系统。 MenuBar 参数是个布尔值,决定创建的新命令栏是菜单栏还是工具栏,因为 Windows 的传统是一个程序只有一个菜单栏。当我们指定为 True 时,我们自定义的菜单栏将替换 Excel 默认的菜单栏,最好不要做这件事情。这个参数默认是 False,也就意味着我们新建的命令栏是工具栏或者快捷菜单。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4