Excel VBA自定义菜单和菜单栏Word文档格式.docx
- 文档编号:20061703
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:19
- 大小:46.10KB
Excel VBA自定义菜单和菜单栏Word文档格式.docx
《Excel VBA自定义菜单和菜单栏Word文档格式.docx》由会员分享,可在线阅读,更多相关《Excel VBA自定义菜单和菜单栏Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
•MsoControlButtonPopup
•MsoControlComboBox
•MsoControlCustom
•MsoControlDropdown
•MsoControlEdit
•MsoControlExpandingGrid
•MsoControlGauge
•MsoControlGenericDropdown
•MsoControlGraphicCombo
•MsoControlGraphicDropdown
•MsoControlGraphicPopup
•MsoControlGrid
•MsoControlLabel
•MsoControlLabelEx***
•MsoControlOCXDropDown
•MsoControlPane**
•MsoControlPopup
•MsoControlSpinner***
•MsoControlSplitButtonMRUPopup
•MsoControlSplitButtonPopup
•MsoControlSplitDropdown
•MsoControlSplitExpandingGrid
•MsoControlWorkPane**
*表示MicrosoftExcel2000中的新增项
**表示MicrosoftExcel2002中的新增项
***表示MicrosoftOfficeExcel2003中的新增项
四、菜单栏
菜单栏是一种命令栏。
它是一种可在其中添加菜单、菜单项和子菜单的对象。
有关如何在Excel中管理菜单栏和菜单项的更多信息,请按照下列步骤操作:
1.启动MicrosoftVisualBasic编辑器。
2.在“帮助”菜单上,单击“MicrosoftVisualBasic帮助”。
3.在“Office助手”框或“应答向导”框中,键入菜单栏,然后单击“搜索”。
4.在Excel2003和Excel2002中,单击“添加和管理菜单栏和菜单项”。
在Excel2000中,单击“关于菜单和工具栏”。
可以在运行时修改菜单栏及该菜单栏上的控件。
对菜单栏所做的更改可能会影响菜单栏的外观或位置。
可对控件进行的更改取决于控件类型。
下表列出了最常见的属性和常用于更改控件的状态、操作或内容的方法:
属性或方法
用途
Add
添加菜单栏,方法是使用CommandBars对象集合的Add方法,然后为Menubar参数指定TRUE值。
Enabled
如果Enabled属性的值为TRUE,那么用户可以使用VisualBasic代码使指定的菜单栏可见。
如果Enabled属性的值为FALSE,用户就无法让菜单栏可见。
不过,菜单栏将出现在可用命令栏列表中。
Protection
使您可以通过特定用户操作来保护菜单栏。
Position
指定新菜单栏相对于程序窗口的位置。
菜单栏相对于程序窗口的位置可以是以下MsoBarPosition常量属性之一:
msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于创建快捷菜单)或msoBarMenuBar(仅用于AppleMacintosh)。
Visible
定控件是可见的指,还是隐藏的。
4.1Add方法应用于CommandBars对象
新建一个命令栏并添加到命令栏集合。
返回CommandBar对象。
expression.Add(Name,Position,MenuBar,Temporary)
●expression必需。
该表达式返回一个CommandBars对象。
●Name(Variant类型)可选。
新命令栏的名称。
如果忽略该参数,则为命令栏指定默认名称(例如:
Custom1)。
●Position(Variant类型)可选。
新命令栏的位置或类型。
可以为下表所列的MsoBarPosition常量之一。
常量
说明
msoBarLeft、msoBarTop、msoBarRight和msoBarBottom
指定新命令栏的左侧、顶部、右侧和底部坐标
msoBarFloating
指定新命令栏不固定
msoBarPopup
指定新命令栏为快捷菜单
msoBarMenuBar
仅适用于Macintosh机
●MenuBar(Variant类型)可选。
设置为True将以新命令栏替换活动菜单栏。
默认值为False。
●Temporary(Variant类型)可选。
设置为True将使新命令栏为临时命令栏。
临时命令栏在关闭容器应用程序时删除。
4.2返回命令栏控件的ID
以下代码示例返回活动菜单栏的ID:
SubId_Control()
DimmyIdasObject
SetmyId=CommandBars("
WorksheetMenuBar"
).Controls("
工具(&
T)"
)
MsgBoxmyId.Caption&
Chr(13)&
MyId.Id
EndSub
4.3确定活动菜单栏的名称
以下代码示例返回活动菜单栏的名称:
SubMenuBars_GetName()
MsgBoxCommandBars.ActiveMenuBar.Name
4.4保存(内置或自定义菜单栏的)活动状态
您可能需要将OriginalMenuBar变量声明为公共变量,这样,子例程就可以在其他子例程(如Auto_Close子例程)中使用该变量。
以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。
以下示例宏重置菜单栏:
PublicOriginalMenuBarasObject
SubMenuBars_Capture()
SetOriginalMenuBar=CommandBars.ActiveMenuBar
4.5创建自定义命令栏
以下代码示例创建名为MyCommandBar的自定义命令栏:
SubMenuBar_Create()
Application.CommandBars.AddName:
="
Mycommandbar"
您还可以通过使用Temporary:
=True参数来创建自定义命令栏。
Temporary:
=True参数允许命令栏在您退出Excel时自动重置。
以下代码使用Temporary:
=True参数创建自定义命令栏:
SubMenuBar_Create()
Temporary:
=True
4.6显示自定义命令栏
以下示例创建并显示自定义的“MyCustomBar”菜单栏,然后用它替换内置的菜单栏:
SubMenuBar_Show()
DimmyNewBarAsObject
SetmyNewBar=CommandBars.Add(Name:
Custom1"
Position:
=msoBarFloating)
'
您必须先启用您的自定义菜单栏,然后看见它。
'
使菜单栏添加到自定义对话框列表中的可用菜单栏上。
'
设置菜单属性设置为True取代内置的菜单栏。
myNewBar.Enabled=True
myNewBar.Visible=True
4.7删除自定义命令栏
以下代码示例删除名为“Custom1”的自定义菜单栏:
SubMenuBar_Delete()
CommandBars("
).Delete
4.8隐藏命令栏
以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:
SubMenuBar_Display()
Chart"
).Enabled=False
4.9显示命令栏
以下代码示例从可用菜单栏中添加内置“图表”菜单栏:
).Enabled=True
4.10还原内置命令栏
还原菜单栏会重置(菜单和菜单项的)默认控件。
示例代码还原内置“图表”菜单栏:
SubMenuBar_Restore()
).Reset
注意:
您只能重置内置菜单栏,不能重置自定义菜单栏。
五、菜单
5.1Add方法用于CommandBarControls对象
新建一个CommandBarControl对象并添加到指定命令栏上的控件集合。
Expression.Add(Type,Id,Parameter,Before,Temporary)
该表达式返回一个CommandBarControls对象。
●Type(Variant类型)可选。
添加到指定命令栏的控件类型。
可以为下列MsoControlType常量之一:
msoControlButton
命令按钮
msoControlEdit
文本框
msoControlDropdown
下拉列表
msoControlComboBox
组合框
msoControlPopup
弹出菜单
●Id(Variant类型)可选。
指定内置控件的整数。
如果该参数为1,或者忽略该参数,将在命令栏中添加一个空的指定类型的自定义控件。
●Parameter(Variant类型)可选。
对于内置控件,该参数用于容器应用程序运行命令。
对于自定义控件,可以使用该参数向VisualBasic过程传递信息,或用其存储控件信息(类似于第二个Tag属性值)。
●Before(Variant类型)可选。
表示新控件在命令栏上位置的数字。
新控件将插入到该位置控件之前。
如果忽略该参数,控件将添加到指定命令栏的末端。
●Temporary(Variant类型)可选。
设置为True将使新命令栏为临时命令栏。
5.2向命令栏添加自定义菜单控件
以下代码示例将您通过编程方式添加的菜单名称添加到“工作表”菜单栏中。
例如,此代码会将菜单名称“NewMenu”添加到“工作表”菜单栏中。
您可以根据需要为该菜单指定任何名称。
SubMenu_Create()
DimmyMnuAsObject
SetmyMnu=CommandBars("
Worksheetmenubar"
).Controls._
Add(Type:
=msoControlPopup,before:
=3)
WithmyMnu
"
&
"
用以指定快捷键字符(相当于Alt+M).
.Caption="
New&
Menu"
EndWith
5.3禁用命令栏上的菜单控件
禁用的菜单控件在命令栏中显示为灰色,并且不可用。
以下示例禁用“NewMenu”菜单:
SubMenu_Disable()
5.4启用命令栏上的菜单控件
以下代码示例启用您在“禁用命令栏上的菜单控件”一节中禁用的NewMenu菜单:
5.5删除命令栏上的菜单控件
以下代码示例从“工作表”菜单栏中删除您在“向命令栏添加自定义菜单控件”一节中创建的“NewMenu”菜单:
SubMenu_Delete()
5.6还原命令栏上的菜单控件
以下代码示例还原“工作表”菜单栏上的内置“图表”菜单栏:
SubMenu_Restore()
myMnu.Reset
六、命令
可以对命令进行的修改与控件的类型有关。
一般来说,按钮要么被启用,要么被隐藏。
而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。
另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。
您可以将任何控件的操作更改为内置函数或自定义函数。
下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:
向命令栏添加命令。
AddItem
向下拉列表框或组合框的下拉列表部分添加项目。
Style
指定按钮上是显示图标还是显示标题。
OnAction
指定用户更改控件值时所运行的过程。
指定控件是可见的,还是隐藏的。
要了解有关Excel2003和Excel2002中菜单的更多信息,请按照下列步骤操作:
1.启动VisualBasic脚本编辑器。
3.在“搜索帮助”框中,键入菜单,然后按Enter。
4.单击“添加和管理菜单栏和菜单项(Office)”。
6.1向菜单控件添加分隔条
以下代码示例在“插入”菜单上的工作表命令之前添加分隔条:
SubmenuItem_AddSeparator()
插入(&
I)"
)_
.Controls("
工作表(&
W)"
).BeginGroup=True
要删除分隔条,请将BeginGroup属性设置为False。
6.2在菜单上创建自定义命令控件
以下代码示例在“工作表”菜单栏的“工具”菜单上创建名为Custom1的新命令,然后,当您单击“Custom1”时,它将运行Code_Custom1宏:
SubmenuItem_Create()
WithCommandBars("
.Controls.Add(Type:
=msoControlButton,Before:
=1).Caption="
).OnAction="
Code_Custom1"
6.3在命令控件旁放置选中标记
以下代码示例在Custom1命令未选中的情况下在其旁边放置一个选中标记;
如果Custom1命令已选中,则将删除该选中标记:
SubmenuItem_checkMark()
DimmyPopupasObject
SetmyPopup=CommandBars("
IfmyPopup.Controls("
).State=msoButtonDownThen
删除选中标记旁边的菜单项。
myPopup.Controls("
).State=msoButtonUp
MsgBox"
Custom1isnowunchecked"
Else
添加复选标记旁边的菜单项。
).State=msoButtonDown
Custom1isnowchecked"
EndIf
6.4禁用命令栏上的命令控件
以下代码示例禁用您在“在菜单上创建自定义命令控件”一节中在“工具”菜单上创建的Custom1命令:
SubMenuItem_Disable()
DimmyCmdasObject
SetmyCmd=CommandBars("
myCmd.Controls("
6.5启用命令栏上的命令控件
以下代码示例启用您在“禁用命令栏上的命令控件”一节中禁用的Custom1命令:
SubMenuItem_Enable()
6.6删除菜单上的命令控件
以下代码示例删除“文件”菜单上的“保存”命令:
SubmenuItem_Delete()
DimmyCmdAsObject
文件(&
F)"
保存(&
S)"
6.7还原菜单上的内置命令控件
要还原菜单上的命令控件,必须知道该控件的标识(ID)号。
要确定ID号,请参见“返回命令栏控件的ID”一节。
以下示例先删除您在“删除菜单上的命令控件”一节中删除的“保存”命令,然后又将其还原:
SubmenuItem_Restore()
Id3为保存子菜单项ID号.
myCmd.Controls.AddType:
=msoControlButton,ID:
=3,Before:
=5
七、子菜单
当您单击某个命令时,父菜单的一侧会出现子菜单。
作为子菜单控件的命令在其名称右边有一个黑色小箭头。
7.1添加子菜单
以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“NewSub”的新子菜单:
SubSubMenu_Create()
DimnewSubasObject
SetnewSub=CommandBars("
WithnewSub
=msoControlPopup,Before:
=1).Caption="
NewSub"
7.2向子菜单添加命令
以下代码示例向“NewSub”子菜单添加名为“SubItem1”的新命令,然后,当您单击“SubItem1”时,它将运行Code_SubItem1宏:
SubSubMenu_AddItem()
DimnewSubItemasObject
SetnewSubItem=CommandBars("
WithnewSubItem
=msoControlButton,Before
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel VBA自定义菜单和菜单栏 VBA 自定义 菜单 菜单栏