Office VBA教程:添加和管理菜单栏和菜单项

有些容器应用程序不提供新建菜单栏的方法,因此,需用 Visual Basic 创建菜单栏。在用 Visual Basic 创建了一个菜单栏之后,就可用容器应用程序接口或继续用 Visual Basic 定义该菜单栏。

在运行时间添加菜单栏

要在运行时间给应用程序添加一个菜单栏,可用 CommandBars集合的 Add方法并将 MenuBar参数指定为 True。以下示例将添加一个不可移动的菜单栏,并将该菜单栏固定在应用程序窗口的右边。


Set menubar = CommandBars.Add _
    (Name:="mBar", Position:=msoBarRight, MenuBar:=True)
With menubar
    .Protection = msoBarNoMove
    .Visible = True
End With

运行时间修改菜单栏

在运行时间可同时修改菜单栏及其控件。对菜单栏的修改可能会影响其外观或位置;对控件的修改取决于该控件的类型。下表是在运行时间修改菜单栏的最常用属性和方法。

属性或方法 说明
Add 用 CommandBars集合的 Add方法添加一个菜单栏并指定 MenuBar参数为 True。
Enabled 如果该属性设置为 True,那么用户可用 Visual Basic 代码显示指定的菜单栏;如果该属性设置为 False,那么用户不能显示菜单栏,但该菜单栏将列在有效菜单栏列表中。
Protection 禁止用户对菜单栏进行特定操作。可将该值设置为以下 MsoBarProtection 常量之一或组合:msoBarNoChangeDock、msoBarNoChangeVisible、msoBarNoCustomize、msoBarNoHorizontalDock、msoBarNoMove、msoBarNoProtection、msoBarNoResize 和 msoBarNoVerticalDock。
Position 指定新菜单栏相对于应用程序窗口的位置。可将其设置为以下 MsoBarPosition 常量之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(Macintosh 专用)。
Visible 指定对用户是显示还是隐藏控件。如果该控件对用户是隐藏的,那么该菜单栏名仍将显示在有效命令栏列表中。

以下示例可实现:隐藏活动菜单栏并用一个临时菜单栏代替,该临时菜单栏固定在应用程序窗口右边,并且对用户处于保护状态。


Set oldMbar = CommandBars.ActiveMenuBar
Set newMbar = CommandBars.Add _
(Name:="newMenubar", Position:=msoBarRight, _
MenuBar:=True, temporary:=True)
With newMbar
    .Visible = True
    .Protection = msoBarNoMove
End With

在运行时间合并菜单栏

对加载应用程序中的自定义菜单栏,如果要指定其在容器应用程序中的表示方式,可用 CommandBarPopup对象的OLEMenuGroup属性指定菜单栏合并的方式。

对菜单项作运行时间修改

对菜单项的修改范围取决于控件的类型。通常,按钮具有有效和隐藏两种状态,而编辑框、下拉式列表框和组合框可进行的操作更为多样化:可在列表中添加或删除列表项,也可根据选中的值确定要执行的动作。用户可将任意控件的动作改为内置功能或自定义功能。

下表是改变控件状态、动作或内容的最常用的属性和方法。

属性或方法 目的
Add 在命令栏中添加一个菜单项。对内置控件,Type 变量可以是以下 MsoControlType 常量之一:msoControlButton、msoControlEdit、msoControlDropdown 或 msoControlComboBox。
AddItem 在下拉式列表框或组合框的下拉式列表区中添加一个列表项。可为已有列表中的新项指定一个索引号,但其数值不能大于列表中的项目数,否则 AddItem方法失败。
Style 指定按钮外观是显示其图标还是显示其标题。该值可为以下 MsoButtonStyle 常量之一:msoButtonAutomatic、msoButtonIcon、msoButtonCaption、msoButtonIconAndCaption、msoButtonIconAndCaptionBelow、msoButtonIconAndWrapCaption、msoButtonIconAndWrapCaptionBelow 或 msoButtonWrapCaption。
OnAction 指定当用户改变特定控件的值时要运行的过程。
Visible 指定控件对用户是显示还是隐藏。

以下示例在活动菜单栏的末尾添加一个命名为“Custom”的临时弹出式控件,然后在该自定义弹出式命令栏中添加一个按钮控件“Import”。


Set myMenuBar = CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, _
    Temporary:=True)
newMenu.Caption = "Custom"
Set ctrl1 = newMenu.Controls _
    .Add(Type:=msoControlButton, Id:=1)
ctrl1.Caption = "Import"
ctrl1.TooltipText = "Import"
ctrl1.Style = msoButtonCaption

上页:Office VBA教程:获得有关 Macintosh 关键词的帮助 下页:Office VBA教程:在运行时间修改气球

Office VBA教程:添加和管理菜单栏和菜单项

Office VBA教程:在运行时间修改气球 Office VBA教程:“Office 助手”概述
Office VBA教程:命令栏概述 Office VBA教程:返回集合中的对象
Office VBA教程:添加和显示快捷菜单 Office VBA教程:添加和修改工具栏
Office VBA教程:使用“Office 助手” Office VBA教程:使用命令栏
Office VBA教程:无法使用帮助主题 Office VBA教程:OLE 编程标识符(ActiveX 控件)
Office VBA教程:ActivateWizard方法 Office VBA教程:Add方法
Office VBA教程:AddItem方法 Office VBA教程:AddToSearchFolders方法
Office VBA教程:ApplyFilter方法 Office VBA教程:Clear方法
Office VBA教程:ClearFileList方法 Office VBA教程:Close方法
Office VBA教程:Commit方法 Office VBA教程:Copy方法
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号