




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何在Excel中自定义菜单和菜单栏概要本文介绍如何在 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.如果出现“宏”对话框,请单击宏名称,然后单击“运行”。返回目录命令栏在 Microsoft Office 中,所有工具栏、菜单栏和快捷菜单都是被作为“命令栏”这样一种对象以编程方式控制的。下列所有项目在 VBA 中皆用 CommandBar 对象表示: 菜单栏、工具栏和快捷菜单。菜单栏和工具栏上的菜单。菜单、子菜单和快捷菜单上的子菜单。您可以修改任何内置的菜单栏和工具栏,还可以创建和修改用您自己的 VBA 代码交付的自定义工具栏、菜单栏和快捷菜单。您可以将程序功能以单个按钮的形式放在工具栏上,或以命令名称组的形式放在菜单上。因为工具栏和菜单都是命令栏,所以可以使用同一类型的控件。在 VBA 和 Microsoft Visual Basic 中,按钮和菜单项用 CommandBarButton 对象表示。显示菜单和子菜单的弹出控件用 CommandBarPopup 对象表示。在以下示例中,名为“Menu”的控件和名为“Submenu”的控件都是用于显示菜单和子菜单的弹出控件,并且这两个控件是各自的控件集中唯一的 CommandBar 对象。在 Microsoft Excel 中,菜单栏和工具栏被视为是同一种可编程对象,即 CommandBar 对象。可以使用 CommandBar 对象中的控件来指代菜单、菜单项、子菜单和快捷菜单。可以在 Type 参数中使用一个常量为每个控件指定要用于菜单、子菜单或命令的控件类型。返回目录控件常量下面是 Excel 2003 中的各种控件常量的列表,这些常量指定用于特定菜单栏控件的图形控件类型: MsoControlActiveX*MsoControlAutoCompleteCombo*MsoControlButtonMsoControlButtonDropdownMsoControlButtonPopupMsoControlComboBoxMsoControlCustomMsoControlDropdownMsoControlEditMsoControlExpandingGridMsoControlGaugeMsoControlGenericDropdownMsoControlGraphicComboMsoControlGraphicDropdownMsoControlGraphicPopupMsoControlGridMsoControlLabelMsoControlLabelEx*MsoControlOCXDropDownMsoControlPane *MsoControlPopupMsoControlSpinner*MsoControlSplitButtonMRUPopupMsoControlSplitButtonPopupMsoControlSplitDropdownMsoControlSplitExpandingGridMsoControlWorkPane* 表示 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 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注意:您只能重置内置菜单栏,不能重置自定义菜单栏。菜单还原菜单栏会重置(菜单和菜单项的)默认控件。以下代码示例还原内置“图表”菜单栏: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命令可以对命令进行的修改与控件的类型有关。一般来说,按钮要么被启用,要么被隐藏。而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。您可以将任何控件的操作更改为内置函数或自定义函数。下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:属性或方法用途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子菜单当您单击某个命令时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。添加子菜单以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“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快捷菜单栏快捷菜单是在用户右键单击某个对象时出现的浮动命令栏。快捷菜单栏可以包含与命令栏相同的控件类型,而这些控件的作用也和命令栏上控件的作用相同。在大多数程序中,您无法从程序界面创建或修改快捷菜单,因而必须在运行时创建和修改快捷菜单。要获取有关 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快捷菜单上的子菜单可以在快捷菜单栏上创建子菜单。当您单击某个命令控件时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。在快捷菜单栏上新建子菜单以下示例在工作表“单元格”快捷菜单上添加名为“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。删除快捷菜单上的子菜单项控件以下示例删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术项链艺术创作全解析
- 河北省鹿泉市2025年上半年公开招聘村务工作者试题含答案分析
- 河北省临西县2025年上半年事业单位公开遴选试题含答案分析
- 2025年二手房装修工程设计与施工监理、验收合同范本
- 2025年建筑项目竣工测绘服务合同
- 2025年度轻钢龙骨砌筑工程劳务承包合同
- 2025年荒山荒滩治理承包地租赁合同汇编
- 2025年充电桩安装与充电站安全保障体系合同范本
- 2025版汽车维修贷款授权委托合同
- 2025东航大客户航空保险定制服务合同
- 《新能源材料概论》 课件 第2章 热电转换新能源材料
- 矿产品买卖合同
- DB37-T 4382-2021 环保稳定型胶粉改性沥青及混合料施工技术规程
- 《当代中日关系》课件
- 大学生军事技能训练(同济大学)学习通测试及答案
- T-CSPSTC 72-2021 隧道衬砌脱空注浆治理技术规程
- 碳中和技术概论 课件 第1-3章 碳中和概述、太阳能、风能
- 2024年7月生化室内质控总结报告
- 危重症患者的血糖管理课件
- GB/T 19342-2024手动牙刷一般要求和检测方法
- 选择性必修第一册人教A版2024-2025学年上学期期中高二数学模拟测试卷含答案
评论
0/150
提交评论