当前位置:文档之家› 自定义菜单和工具栏

自定义菜单和工具栏

关于自定义菜单和工具栏本文中的示例命令栏控件常量菜单栏返回命令栏控件的ID确定活动菜单栏的名称保存(内置或自定义菜单栏的)活动状态创建自定义命令栏显示自定义命令栏删除自定义命令栏隐藏命令栏显示命令栏还原内置命令栏菜单向命令栏添加自定义菜单控件禁用命令栏上的菜单控件启用命令栏上的菜单控件删除命令栏上的菜单控件还原命令栏上的菜单控件命令向菜单控件添加分隔条在菜单上创建自定义命令控件在命令控件旁放置选中标记禁用命令栏上的命令控件启用命令栏上的命令控件删除菜单上的命令控件还原菜单上的内置命令控件子菜单添加子菜单向子菜单添加命令禁用子菜单上的命令控件删除子菜单上的命令禁用子菜单控件删除子菜单控件快捷菜单栏新建快捷菜单栏快捷菜单在快捷菜单栏上创建命令禁用快捷菜单栏上的命令控件删除快捷菜单栏上的命令删除快捷菜单栏还原内置快捷菜单栏上的命令快捷菜单上的子菜单在快捷菜单栏上新建子菜单在快捷菜单栏的子菜单上创建命令控件禁用快捷菜单上的子菜单项控件删除快捷菜单上的子菜单项控件禁用快捷菜单上的子菜单控件删除快捷菜单上的子菜单控件查找更多信息对象浏览器Microsoft 知识库这篇文章中的信息适用于:附数组使用方法中的示例本文中的示例在Excel 2000、Excel 2002 和Excel 2003 中使用VBA 代码来自定义菜单。

要使用示例宏,请按照下列步骤操作:1. 启动Excel。

2. 在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。

3. 在“插入”菜单上,单击“模块”。

4. 键入本文中的一个宏示例,也可使用复制粘贴操作将宏示例复制到模块表中。

5. 在“运行”菜单上,单击“运行子过程/用户窗体”。

6. 如果出现“宏”对话框,请单击宏名称,然后单击“运行”。

命令栏在Microsoft Office 中,所有工具栏、菜单栏和快捷菜单都是被作为“命令栏”这样一种对象以编程方式控制的。

下列所有项目在VBA 中皆用CommandBar对象表示:•菜单栏、工具栏和快捷菜单。

•菜单栏和工具栏上的菜单。

•菜单、子菜单和快捷菜单上的子菜单。

您可以修改任何内置的菜单栏和工具栏,还可以创建和修改用您自己的VBA 代码交付的自定义工具栏、菜单栏和快捷菜单。

您可以将程序功能以单个按钮的形式放在工具栏上,或以命令名称组的形式放在菜单上。

因为工具栏和菜单都是命令栏,所以可以使用同一类型的控件。

在VBA 和Microsoft Visual Basic 中,按钮和菜单项用CommandBarButton对象表示。

显示菜单和子菜单的弹出控件用CommandBarPopup对象表示。

在以下示例中,名为“Menu”的控件和名为“Submenu”的控件都是用于显示菜单和子菜单的弹出控件,并且这两个控件是各自的控件集中唯一的CommandBar对象。

在Microsoft Excel 中,菜单栏和工具栏被视为是同一种可编程对象,即CommandBar对象。

可以使用CommandBar对象中的控件来指代菜单、菜单项、子菜单和快捷菜单。

可以在Type参数中使用一个常量为每个控件指定要用于菜单、子菜单或命令的控件类型。

返回目录控件常量下面是Excel 2003 中的各种控件常量的列表,这些常量指定用于特定菜单栏控件的图形控件类型:•MsoControlActiveX*•MsoControlAutoCompleteCombo***•MsoControlButton•MsoControlButtonDropdown•MsoControlButtonPopup•MsoControlComboBox•MsoControlCustom•MsoControlDropdown•MsoControlEdit•MsoControlExpandingGrid•MsoControlGauge•MsoControlGenericDropdown•MsoControlGraphicCombo•MsoControlGraphicDropdown•MsoControlGraphicPopup•MsoControlGrid•MsoControlLabel•MsoControlLabelEx***•MsoControlOCXDropDown•MsoControlPane **•MsoControlPopup•MsoControlSpinner***•MsoControlSplitButtonMRUPopup•MsoControlSplitButtonPopup•MsoControlSplitDropdown•MsoControlSplitExpandingGrid•MsoControlWorkPane*** 表示Microsoft Excel 2000 中的新增项** 表示Microsoft Excel 2002 中的新增项*** 表示Microsoft Office Excel 2003 中的新增项返回目录菜单栏菜单栏是一种命令栏。

它是一种可在其中添加菜单、菜单项和子菜单的对象。

有关如何在Excel 中管理菜单栏和菜单项的更多信息,请按照下列步骤操作:1. 启动Microsoft Visual Basic 编辑器。

2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

3. 在“Office 助手”框或“应答向导”框中,键入菜单栏,然后单击“搜索”。

4. 在Excel 2003 和Excel 2002 中,单击“添加和管理菜单栏和菜单项”。

在Excel 2000 中,单击“关于菜单和工具栏”。

可以在运行时修改菜单栏及该菜单栏上的控件。

对菜单栏所做的更改可能会影响菜单栏的外观或位置。

可对控件进行的更改取决于控件类型。

下表列出了最常见的属性和常用于更改控件的状态、操作或内容的方法:属性或方法用途Add 添加菜单栏,方法是使用CommandBars对象集合的Add方法,然后为Menubar参数指定TRUE 值。

Enabled 如果Enabled属性的值为TRUE,那么用户可以使用Visual Basic 代码使指定的菜单栏可见。

如果Enabled属性的值为FALSE,用户就无法让菜单栏可见。

不过,菜单栏将出现在可用命令栏列表中。

Protection使您可以通过特定用户操作来保护菜单栏。

Position 指定新菜单栏相对于程序窗口的位置。

菜单栏相对于程序窗口的位置可以是以下MsoBarPosition常量属性之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于创建快捷菜单)或msoBarMenuBar(仅用于Apple Macintosh)。

Visible指定控件是可见的,还是隐藏的。

返回命令栏控件的ID以下代码示例返回活动菜单栏的ID:Sub Id_Control ()Dim myId as Objectset myId = CommandBars("Worksheet Menu Bar").Controls("Tools") MsgBox myId.Caption & Chr(13) & MyId.IdEnd Sub确定活动菜单栏的名称以下代码示例返回活动菜单栏的名称:Sub MenuBars_GetName()MsgBox End Sub保存(内置或自定义菜单栏的)活动状态您可能需要将OriginalMenuBar变量声明为公共变量,这样,子例程就可以在其他子例程(如Auto_Close 子例程)中使用该变量。

以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。

以下示例宏重置菜单栏:Public OriginalMenuBar as ObjectSub MenuBars_Capture()Set OriginalMenuBar = CommandBars.ActiveMenuBarEnd Sub创建自定义命令栏以下代码示例创建名为My Command Bar 的自定义命令栏:Sub MenuBar_Create() mandBars.Add Name:="My command bar" End Sub您还可以通过使用Temporary:=True参数来创建自定义命令栏。

Temporary:=True参数允许命令栏在您退出Excel 时自动重置。

以下代码使用Temporary:=True参数创建自定义命令栏:Sub MenuBar_Create()mandBars.Add Name:="My command bar", Temporary:=TrueEnd Sub显示自定义命令栏以下示例创建并显示自定义的“My Custom Bar”菜单栏,然后用它替换内置的菜单栏:Sub MenuBar_Show()Dim myNewBar As ObjectSet myNewBar = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating) ’ You must first enable your custom menu bar befo re you make it visible.’ Enabling a menu bar adds it to the list of available menu bars on’ the Customize dialog box.’ Setting the menubar property to True replaces the built-in menu bar.myNewBar.Enabled = TruemyNewBar.Visible = TrueEnd Sub删除自定义命令栏以下代码示例删除名为“Custom 1”的自定义菜单栏:Sub MenuBar_Delete()CommandBars("Custom1").DeleteEnd Sub隐藏命令栏以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:Sub MenuBar_Display()CommandBars("Chart").Enabled = FalseEnd Sub显示命令栏以下代码示例从可用菜单栏中添加内置“图表”菜单栏:Sub MenuBar_Display()CommandBars("Chart").Enabled = TrueEnd Sub还原内置命令栏还原菜单栏会重置(菜单和菜单项的)默认控件。

相关主题