Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
如何在Excel中自定义菜单和菜单栏
作者:bengdeng | 来源:知识库文章 | 时间:2006-03-30 | 阅读权限:游客 | 会员币:0 | 【

目录

概要 概要
简介 简介
更多信息 更多信息
  本文中的示例 本文中的示例
  命令栏 命令栏
  控件常量 控件常量
  菜单栏 菜单栏
    返回命令栏控件的 ID 返回命令栏控件的 ID
    确定活动菜单栏的名称 确定活动菜单栏的名称
    保存(内置或自定义菜单栏的)活动状态 保存(内置或自定义菜单栏的)活动状态
    创建自定义命令栏 创建自定义命令栏
    显示自定义命令栏 显示自定义命令栏
    删除自定义命令栏 删除自定义命令栏
    隐藏命令栏 隐藏命令栏
    显示命令栏 显示命令栏
    还原内置命令栏 还原内置命令栏
  菜单 菜单
    向命令栏添加自定义菜单控件 向命令栏添加自定义菜单控件
    禁用命令栏上的菜单控件 禁用命令栏上的菜单控件
     启用命令栏上的菜单控件 启用命令栏上的菜单控件
    删除命令栏上的菜单控件 删除命令栏上的菜单控件
    还原命令栏上的菜单控件 还原命令栏上的菜单控件
  命令 命令
    向菜单控件添加分隔条 向菜单控件添加分隔条
    在菜单上创建自定义命令控件 在菜单上创建自定义命令控件
    在命令控件旁放置选中标记 在命令控件旁放置选中标记
    禁用命令栏上的命令控件 禁用命令栏上的命令控件
    启用命令栏上的命令控件 启用命令栏上的命令控件
    删除菜单上的命令控件 删除菜单上的命令控件
    还原菜单上的内置命令控件 还原菜单上的内置命令控件
  子菜单 子菜单
    添加子菜单 添加子菜单
    向子菜单添加命令 向子菜单添加命令
    禁用子菜单上的命令控件 禁用子菜单上的命令控件
    删除子菜单上的命令 删除子菜单上的命令
    禁用子菜单控件 禁用子菜单控件
    删除子菜单控件 删除子菜单控件
  快捷菜单栏 快捷菜单栏
    新建快捷菜单栏 新建快捷菜单栏
  快捷菜单 快捷菜单
    在快捷菜单栏上创建命令 在快捷菜单栏上创建命令
    禁用快捷菜单栏上的命令控件 禁用快捷菜单栏上的命令控件
    删除快捷菜单栏上的命令 删除快捷菜单栏上的命令
    删除快捷菜单栏 删除快捷菜单栏
    还原内置快捷菜单栏上的命令 还原内置快捷菜单栏上的命令
  快捷菜单上的子菜单 快捷菜单上的子菜单
    在快捷菜单栏上新建子菜单 在快捷菜单栏上新建子菜单
    在快捷菜单栏的子菜单上创建命令控件 在快捷菜单栏的子菜单上创建命令控件
    禁用快捷菜单上的子菜单项控件 禁用快捷菜单上的子菜单项控件
    删除快捷菜单上的子菜单项控件 删除快捷菜单上的子菜单项控件
    禁用快捷菜单上的子菜单控件 禁用快捷菜单上的子菜单控件
    删除快捷菜单上的子菜单控件 删除快捷菜单上的子菜单控件
  查找更多信息 查找更多信息
    对象浏览器 对象浏览器
    Microsoft 知识库 Microsoft 知识库
这篇文章中的信息适用于: 这篇文章中的信息适用于:
[NextPage]

概要

本文介绍如何在 Microsoft Excel 2000 以及更高版本中自定义菜单和菜单栏。其中包含关于以编程方式在 Microsoft Excel 中管理和自定义菜单栏、菜单、命令、子菜单和快捷菜单的分步说明和代码示例。

简介

要在 Microsoft Excel 2000、Microsoft Excel 2002 和 Microsoft Office Excel 2003 中执行许多与自定义菜单栏和菜单相关的常见任务,请使用“自定义”对话框。要执行更多高级任务或为自定义程序定制菜单栏和菜单,可能需要创建 Microsoft Visual Basic for Applications (VBA) 代码。

有关如何使用“自定义”对话框的更多信息,请单击“帮助”菜单上的“Microsoft Excel 帮助”,在“Office 助手”或“应答向导”中键入自定义菜单栏,然后单击“搜索”以查看主题。

本文帮助您学习编写 VBA 代码,掌握自定义菜单栏、菜单、菜单项、子菜单和快捷菜单的方法。

更多信息

Microsoft 提供的编程示例只用于说明目的,不附带任何明示或默示的保证。这包括但不限于对适销性或特定用途适用性的默示保证。本文假定您熟悉所演示的编程语言和用于创建和调试过程的工具。Microsoft 的支持工程师可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需求。

本文中的示例

本文中的示例在 Excel 2000、Excel 2002 和 Excel 2003 中使用 VBA 代码来自定义菜单。要使用示例宏,请按照下列步骤操作:
1. 启动 Excel。
2. 在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。
3. 在“插入”菜单上,单击“模块”。
4. 键入本文中的一个宏示例,也可使用复制粘贴操作将宏示例复制到模块表中。
5. 在“运行”菜单上,单击“运行子过程/用户窗体”。
6. 如果出现“宏”对话框,请单击宏名称,然后单击“运行”。
[NextPage]

命令栏

在 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 中的新增项

[NextPage]

菜单栏

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

有关如何在 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 常量属性之一:msoBarLeftmsoBarTopmsoBarRightmsoBarBottommsoBarFloatingmsoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(仅用于 Apple Macintosh)。
Visible 指定控件是可见的,还是隐藏的。

返回命令栏控件的 ID

以下代码示例返回活动菜单栏的 ID:
Sub Id_Control ()   
Dim myId as Object   
   set myId = CommandBars("Worksheet Menu Bar").Controls("Tools")   
   MsgBox myId.Caption & Chr(13) & MyId.Id   
End Sub   

确定活动菜单栏的名称

以下代码示例返回活动菜单栏的名称:
Sub MenuBars_GetName()   
   MsgBox CommandBars.ActiveMenuBar.Name   
End Sub   

保存(内置或自定义菜单栏的)活动状态

您可能需要将 OriginalMenuBar 变量声明为公共变量,这样,子例程就可以在其他子例程(如 Auto_Close 子例程)中使用该变量。以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。以下示例宏重置菜单栏:
Public OriginalMenuBar as Object   

Sub MenuBars_Capture()   
   Set OriginalMenuBar = CommandBars.ActiveMenuBar   
End Sub

创建自定义命令栏

以下代码示例创建名为 My Command Bar 的自定义命令栏:
Sub MenuBar_Create() Application.CommandBars.Add Name:="My command bar" End Sub   

您还可以通过使用 Temporary:=True 参数来创建自定义命令栏。Temporary:=True 参数允许命令栏在您退出 Excel 时自动重置。以下代码使用 Temporary:=True 参数创建自定义命令栏:
Sub MenuBar_Create()   
Application.CommandBars.Add Name:="My command bar", Temporary:=True   
End Sub

显示自定义命令栏

以下示例创建并显示自定义的“My Custom Bar”菜单栏,然后用它替换内置的菜单栏:
Sub MenuBar_Show()   
Dim myNewBar As Object   
   Set myNewBar = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)   
   ’ You must first enable your custom menu bar before 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 = True   
   myNewBar.Visible = True   
End Sub   

删除自定义命令栏

以下代码示例删除名为“Custom 1”的自定义菜单栏:
Sub MenuBar_Delete()   
   CommandBars("Custom1").Delete   
End Sub   

隐藏命令栏

以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:
Sub MenuBar_Display()   
   CommandBars("Chart").Enabled = False   
End Sub

显示命令栏

以下代码示例从可用菜单栏中添加内置“图表”菜单栏:
Sub MenuBar_Display()   
   CommandBars("Chart").Enabled = True   
End Sub

还原内置命令栏

还原菜单栏会重置(菜单和菜单项的)默认控件。以下代码示例还原内置“图表”菜单栏:
Sub MenuBar_Restore()   
   CommandBars("Chart").Reset   
End Sub
注意:您只能重置内置菜单栏,不能重置自定义菜单栏。

[NextPage]

菜单

还原菜单栏会重置(菜单和菜单项的)默认控件。以下代码示例还原内置“图表”菜单栏:
Sub MenuBar_Restore()   
   CommandBars("Chart").Reset   
End Sub
注意:您只能重置内置菜单栏,不能重置自定义菜单栏。

向命令栏添加自定义菜单控件

以下代码示例将您通过编程方式添加的菜单名称添加到“工作表”菜单栏中。例如,此代码会将菜单名称“New Menu”添加到“工作表”菜单栏中。

注意:您可以根据需要为该菜单指定任何名称。
Sub Menu_Create()   
Dim myMnu As Object   
   Set myMnu = CommandBars("Worksheet menu bar").Controls. _   
      Add(Type:=msoControlPopup, before:=3)   
   With myMnu   
   ’ The "&" denotes a shortcut key assignment (Alt+M in this case).   
      .Caption = "New &Menu"   
   End With   
End Sub   

禁用命令栏上的菜单控件

禁用的菜单控件在命令栏中显示为灰色,并且不可用。以下示例禁用“New Menu”菜单:
Sub Menu_Disable()   
   CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = False   
End Sub

启用命令栏上的菜单控件

以下代码示例启用您在“禁用命令栏上的菜单控件”一节中禁用的 New Menu 菜单:
Sub Menu_Disable()   
   CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = True   
End Sub

删除命令栏上的菜单控件

以下代码示例从“工作表”菜单栏中删除您在“向命令栏添加自定义菜单控件”一节中创建的“New Menu”菜单:
Sub Menu_Delete()   
   CommandBars("Worksheet menu bar").Controls("New &Menu").Delete   
End Sub   

还原命令栏上的菜单控件

以下代码示例还原“工作表”菜单栏上的内置“图表”菜单栏:
Sub Menu_Restore()   
Dim myMnu As Object   
   Set myMnu = CommandBars("Chart")   
   myMnu.Reset   
End Sub

[NextPage]

命令

可以对命令进行的修改与控件的类型有关。一般来说,按钮要么被启用,要么被隐藏。而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。您可以将任何控件的操作更改为内置函数或自定义函数。

下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:
属性或方法 用途
Add 向命令栏添加命令。
AddItem 向下拉列表框或组合框的下拉列表部分添加项目。
Style 指定按钮上是显示图标还是显示标题。
OnAction 指定用户更改控件值时所运行的过程。
Visible 指定控件是可见的,还是隐藏的。

要了解有关 Excel 2003 和 Excel 2002 中菜单的更多信息,请按照下列步骤操作:
1. 启动 Visual Basic 脚本编辑器。
2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。
3. 在“搜索帮助”框中,键入菜单,然后按 Enter。
4. 单击“添加和管理菜单栏和菜单项 (Office)”。

向菜单控件添加分隔条

以下代码示例在“插入”菜单上的工作表命令之前添加分隔条:
Sub menuItem_AddSeparator()   
   CommandBars("Worksheet menu bar").Controls("Insert") _   
   .Controls("Worksheet").BeginGroup = True   
End Sub
注意:要删除分隔条,请将 BeginGroup 属性设置为 False

在菜单上创建自定义命令控件

以下代码示例在“工作表”菜单栏的“工具”菜单上创建名为 Custom1 的新命令,然后,当您单击“Custom1”时,它将运行 Code_Custom1 宏:
Sub menuItem_Create()   
   With CommandBars("Worksheet menu bar").Controls("Tools")   
      .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom1"   
      .Controls("Custom1").OnAction = "Code_Custom1"   
   End With   
End Sub

在命令控件旁放置选中标记

以下代码示例在 Custom1 命令未选中的情况下在其旁边放置一个选中标记;如果 Custom1 命令已选中,则将删除该选中标记:
Sub menuItem_checkMark()   
Dim myPopup as Object   

   Set myPopup = CommandBars("Worksheet menu bar").Controls("Tools")   
   If myPopup.Controls("Custom1").State = msoButtonDown Then   
      ’ Remove check mark next to menu item.   
      myPopup.Controls("Custom1").State = msoButtonUp   
      MsgBox "Custom1 is now unchecked"   
      Else   
        ’ Add check mark next to menu item.   
         myPopup.Controls("Custom1").State = msoButtonDown   
         MsgBox "Custom1 is now checked"   
    End If   
End Sub

禁用命令栏上的命令控件

以下代码示例禁用您在“在菜单上创建自定义命令控件”一节中在“工具”菜单上创建的 Custom1 命令:
Sub MenuItem_Disable()   
Dim myCmd as Object   
   Set myCmd = CommandBars("Worksheet menu bar").Controls("Tools")   
   myCmd.Controls("Custom1").Enabled = False   
End Sub

启用命令栏上的命令控件

以下代码示例启用您在“禁用命令栏上的命令控件”一节中禁用的 Custom1 命令:
Sub MenuItem_Enable()   
Dim myCmd as Object   
   Set myCmd = CommandBars("Worksheet menu bar").Controls("Tools")   
   myCmd.Controls("Custom1").Enabled = True   
End Sub   

删除菜单上的命令控件

以下代码示例删除“文件”菜单上的“保存”命令:
Sub menuItem_Delete()   
Dim myCmd As Object   
   Set myCmd = CommandBars("Worksheet menu bar").Controls("File")   
   myCmd.Controls("Save").Delete   
End Sub   

还原菜单上的内置命令控件

要还原菜单上的命令控件,必须知道该控件的标识 (ID) 号。要确定 ID 号,请参见“返回命令栏控件的 ID”一节。以下示例先删除您在“删除菜单上的命令控件”一节中删除的“保存”命令,然后又将其还原:
Sub menuItem_Restore()   
Dim myCmd As Object   
   Set myCmd = CommandBars("Worksheet menu bar").Controls("File")   
   ’ Id 3 refers to the Save menu item control.   
   myCmd.Controls.Add Type:=msoControlButton, ID:=3, Before:=5   
End Sub

[NextPage]

子菜单

当您单击某个命令时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

添加子菜单

以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“NewSub”的新子菜单:
Sub SubMenu_Create()   
Dim newSub as Object   
   Set newSub = CommandBars("Worksheet menu bar").Controls("Tools")   
   With newSub   
      .Controls.Add(Type:=msoControlPopup, Before:=1).Caption="NewSub"   
   End With   
End Sub

向子菜单添加命令

以下代码示例向“NewSub”子菜单添加名为“SubItem1”的新命令,然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:
Sub SubMenu_AddItem()   
Dim newSubItem as Object   
   Set newSubItem = CommandBars("Worksheet menu bar") _   
   .Controls("Tools").Controls("NewSub")   
   With newSubItem   
      .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "SubItem1"   
      .Controls("SubItem1").OnAction = "Code_SubItem1"   
   End With   
End Sub   

禁用子菜单上的命令控件

以下代码示例禁用您在“向子菜单添加命令”一节中创建的 SubItem 命令:
Sub SubMenu_DisableItem()   
   CommandBars("Worksheet menu bar").Controls("Tools") _   
   .Controls("NewSub").Controls("SubItem1").Enabled = False   
End Sub


以下代码示例启用同一 SubItem 命令:
Sub SubMenu_DisableItem()   
   CommandBars("Worksheet menu bar").Controls("Tools") _   
   .Controls("NewSub").Controls("SubItem1").Enabled = True   
End Sub

删除子菜单上的命令

以下示例删除您在“向子菜单添加命令”一节中在“NewSub”子菜单上创建的 SubItem1 命令:
Sub SubMenu_DeleteItem()   
   CommandBars("Worksheet menu bar").Controls("Tools") _   
   .Controls("NewSub").Controls("SubItem1").Delete   
End Sub   

禁用子菜单控件

以下代码示例禁用您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:
Sub SubMenu_DisableSub()   
   CommandBars("Worksheet menu bar").Controls("Tools") _   
   .Controls("NewSub").Enabled = False   
End Sub
注意:要启用已禁用的控件,请将 Enabled 属性设置为 True

删除子菜单控件

以下代码示例删除您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:
Sub SubMenu_DeleteSub()   
   CommandBars("Worksheet menu bar").Controls("Tools") _   
   .Controls("NewSub").Delete   
End Sub

[NextPage]

快捷菜单栏

快捷菜单是在用户右键单击某个对象时出现的浮动命令栏。快捷菜单栏可以包含与命令栏相同的控件类型,而这些控件的作用也和命令栏上控件的作用相同。在大多数程序中,您无法从程序界面创建或修改快捷菜单,因而必须在运行时创建和修改快捷菜单。

要获取有关 Excel 2002 和 Excel 2003 中的快捷菜单的更多信息,请按照下列步骤操作:
1. 启动 Visual Basic 脚本编辑器。
2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。
3. 在“搜索帮助”框中,键入快捷方式,然后按 Enter。
4. 单击“添加和显示快捷菜单”。

新建快捷菜单栏

以下代码示例创建名为“myShortcutBar”的快捷菜单栏:
Sub Shortcut_Create()   
Dim myShtCtBar as Object   
   Set myShtCtBar = CommandBars.Add(Name:="myShortcutBar", _   
   Position:=msoBarPopup)   
   ‘ This displays the shortcut menu bar.   
   ‘ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   myShtCtBar.ShowPopup 200,200   
End Sub   

注意:由于没有添加任何控件(菜单项或子菜单),因此快捷菜单栏出现时是空的。

快捷菜单

当您右键单击特定的 Excel 对象时会出现快捷菜单栏。Excel 有很多快捷菜单栏,其中包含各种菜单。您还可以创建自定义快捷菜单栏和自定义内置菜单栏。

在快捷菜单栏上创建命令

以下代码示例在“myShortcutBar”快捷菜单栏上创建名为 Item1 的新菜单命令。当您单击“Item1”时,它将运行 Code_Item1 宏:
Sub Shortcut_AddItem()   
Dim myBar as Object   
   Set myBar = CommandBars("myShortcutBar")   
   With myBar   
      .Controls.Add (Type:=msoControlButton, before:=1).Caption = "Item1"   
      .Controls("Item1").OnAction = "Code_Item1"   
   End With   
   myBar.ShowPopup 200,200   
End Sub

禁用快捷菜单栏上的命令控件

以下代码示例禁用您在“创建快捷菜单上的命令”一节中创建的 Item1 命令:
Sub Shortcut_DisableItem()   
   Set myBar = CommandBars("myShortcutBar")   
   myBar.Controls("Item1").Enabled = False   
   myBar.ShowPopup 200,200   
End Sub
注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

删除快捷菜单栏上的命令

以下代码示例删除“myShortcutBar”快捷菜单栏上的名为 Item1 的菜单命令:
Sub Shortcut_DeleteItem()   
   Set myBar = CommandBars("myShortcutBar")   
   myBar.Controls("Item1").Delete   
   myBar.ShowPopup 200,200   
End Sub

删除快捷菜单栏

删除快捷菜单栏将导致删除所有菜单项。您无法还原已删除的自定义菜单栏。要还原它,必须重新创建该菜单栏及其所有菜单项和子菜单。

以下代码示例删除您在“在快捷菜单栏上创建命令”一节中创建的“myShortCutBar”快捷菜单栏:
Sub Shortcut_DeleteShortCutBar()   
   CommandBars("MyShortCutBar").Delete   
End Sub

还原内置快捷菜单栏上的命令

以下代码示例还原工作表“单元格”快捷菜单栏上的默认命令:
Sub Shortcut_RestoreItem()   
   CommandBars("Cell").Reset   
End Sub

[NextPage]

快捷菜单上的子菜单

可以在快捷菜单栏上创建子菜单。当您单击某个命令控件时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

在快捷菜单栏上新建子菜单

以下示例在工作表“单元格”快捷菜单上添加名为“NewSub”的新子菜单:
Sub ShortcutSub_Create()   
   CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1) _   
   .Caption = "NewSub"   
    ’ This displays the shortcut menu bar.   
    ’ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub
注意:由于没有添加任何菜单项,因此该子菜单为空。

在快捷菜单栏的子菜单上创建命令控件

下面的宏向您在“单元格”快捷菜单上创建的子菜单“NewSub”中添加 SubItem1 命令。然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:
Sub ShortcutSub_AddItem()   
Dim newSubItem as Object   
   Set newSubItem = CommandBars("Cell").Controls("NewSub”)   
   With newSubItem   
      .Controls.Add(Type:=msoControlButton, before:=1).Caption = "subItem1"   
      ’ This will run the subItem1_Code macro when subItem1 is clicked.   
      .Controls("subItem1").OnAction = "Code_subItem1"   
   End With   
   ’ This displays the Cell shortcut menu bar.   
   ’ 200, 200 refers to the screen position in pixels as x and y coordinates   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub

禁用快捷菜单上的子菜单项控件

以下代码示例禁用“NewSub”子菜单上的 SubItem1 命令:
Sub ShortcutSub_DisableItem()   
   CommandBars("Cell").Controls("NewSub") _   
   .Controls("subItem1").Enabled = False   
   ’ This displays the Cell shortcut menu bar.   
   ’ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub
注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

删除快捷菜单上的子菜单项控件

以下示例删除“NewSub”子菜单上的 SubItem1 命令:
Sub ShortcutSub_DeleteItem()   
   CommandBars("Cell").Controls("NewSub").Controls("subItem1").Delete   
   ’ This displays the Cell shortcut menu bar.   
   ’ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub   

禁用快捷菜单上的子菜单控件

以下代码示例禁用“单元格”快捷菜单栏上的“NewSub”子菜单:
Sub ShortcutSub_DisableSub()   
   CommandBars("Cell").Controls("NewSub").Enabled = False   
   ’ This displays the Cell shortcut menu bar.   
   ’ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub
注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

删除快捷菜单上的子菜单控件

以下代码示例删除您在“单元格”快捷菜单栏上创建的“NewSub”子菜单:
Sub ShortcutSub_DeleteSub()   
   CommandBars("Cell").Controls("NewSub").Delete   
   ’ This displays the Cell shortcut menu bar.   
   ’ 200, 200 refers to the screen position in pixels as x and y coordinates.   
   CommandBars("Cell").ShowPopup 200, 200   
End Sub   

[NextPage]

查找更多信息

以下资源可以提供更多关于如何在 Excel 中自定义菜单和菜单栏的信息。

对象浏览器

对象浏览器包含特定命令的所有属性和所有方法的完整列表。要查找此信息,请切换到 Visual Basic 编辑器(按 Alt+F11),单击“视图”菜单上的“对象浏览器”(或按 F2),在“搜索”框中键入控件名称,然后按 Enter 或单击“搜索”。

Microsoft 知识库

Microsoft 知识库是主要面向 Microsoft 产品支持服务技术支持人员的 Microsoft 产品信息源,同时也向 Microsoft 客户开放。它是一个综合性数据库,其中包含有关 Microsoft 产品、记录的修复程序列表、文档错误和常见技术支持问答的详细技术信息文章。

要连接到 Microsoft 知识库,请访问以下 Microsoft 网站,然后按照页面上出现的说明进行操作:
http://support.microsoft.com (http://support.microsoft.com/)

这篇文章中的信息适用于:
Microsoft Office Excel 2003
Microsoft Excel 2002 标准版
Microsoft Excel 2000 标准版
文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口