Excel VBA常用技巧 第07章 菜单和工具栏Word文档格式.docx
- 文档编号:15157248
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:36
- 大小:606.66KB
Excel VBA常用技巧 第07章 菜单和工具栏Word文档格式.docx
《Excel VBA常用技巧 第07章 菜单和工具栏Word文档格式.docx》由会员分享,可在线阅读,更多相关《Excel VBA常用技巧 第07章 菜单和工具栏Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
技巧15在工具栏上添加下拉列表框29
技巧16屏蔽工作表的复制功能31
技巧17禁用工具栏的自定义32
技巧18屏蔽所有的命令栏35
技巧19恢复Excel的命令栏36
第7章菜单和工具栏
技巧1在菜单中添加菜单项
在Excel工作表的菜单中可以添加新的菜单项和子菜单,如下面的代码所示。
#001SubmyTools()
#002DimmyToolsAsCommandBarPopup
#003DimmyCapAsVariant
#004DimmyidAsVariant
#005DimiAsByte
#006myCap=Array("
基础应用"
"
VBA程序开发"
函数与公式"
图表与图形"
数据透视表"
)
#007myid=Array(281,283,285,287,292)
#008WithApplication.CommandBars("
Worksheetmenubar"
#009.Reset
#010SetmyTools=.Controls("
帮助(&
H)"
).Controls.Add(Type:
=msoControlPopup,Before:
=1)
#011WithmyTools
#012.Caption="
ExcelHome技术论坛"
#013.BeginGroup=True
#014Fori=1To5
#015With.Controls.Add(Type:
=msoControlButton)
#016.Caption=myCap(i-1)
#017.FaceId=myid(i-1)
#018.OnAction="
myC"
#019EndWith
#020Next
#021EndWith
#022EndWith
#023SetmyTools=Nothing
#024EndSub
代码解析:
myTools过程使用Add方法在Excel工作表菜单栏中的“帮助”菜单中添加一个标题为“ExcelHome技术论坛”的菜单项和5个子菜单。
第2行到第5行代码声明变量类型。
第6、7行代码使用Array函数创建两个数组用于保存子菜单的名称和图标ID。
第9行代码,在添加菜单项前先使用Reset方法重置菜单栏以免重复添加菜单项。
Reset方法重置一个内置控件,恢复该控件原来对应的动作,并将各属性恢复成初始状态,语法如下:
expression.Reset
参数expression
是必需的,返回一个命令栏或命令栏控件对象。
第10行代码,使用Add方法在Excel工作表菜单栏中的“帮助”菜单中添加菜单项。
Add方法应用于CommandBarControls对象时,新建一个CommandBarControl对象并添加到指定命令栏上的控件集合,语法如下:
expression.Add(Type,Id,Parameter,Before,Temporary)
是必需的,返回一个CommandBarControls对象,代表命令栏中的所有控件。
参数Type是可选的,添加到指定命令栏的控件类型,可以为表格791所列的MsoControlType常数之一。
常数
值
控件类型
msoControlButton
1
命令按钮
msoControlEdit
2
文本框
msoControlDropdown
3
下拉列表控制框
msoControlComboBox
4
下拉组合控制框
msoControlPopup
10
弹出式控件
表格791MsoControlType常数
因为在本例中将添加的是带有子菜单的菜单项,所以将参数Type设置为弹出式控件。
参数Id是可选的,标识整数。
如果将该参数设置为1或者忽略,将在命令栏中添加一个空的指定类型的自定义控件。
参数Parameter是可选的,对于内置控件,该参数用于容器应用程序运行命令。
对于自定义控件,可以使用该参数向VisualBasic过程传递信息,或用其存储控件信息。
参数Before是可选的,表示新控件在命令栏上位置的数字。
新控件将插入到该位置控件之前。
如果忽略该参数,控件将添加到指定命令栏的末端。
本例中将Before参数设置为1,菜单项添加到“帮助”菜单的顶端。
参数Temporary是可选的。
设置为True将使添加的菜单项为临时的,在关闭应用程序时删除。
默认值为False。
第12行代码,设定新添加菜单项的Caption属性为“ExcelHome技术论坛”。
Caption属性返回或设置命令栏控件的标题。
第13行代码,设置新添加菜单项的BeginGroup属性为True,分组显示。
第14行到第19行代码,在“ExcelHome技术论坛”菜单项上添加五个子菜单并设置其Caption属性、FaceId属性和OnAction属性。
FaceId属性设置出现在菜单标题左侧的图标,以数字表示,一个数字代表一个内置的图标。
OnAction属性设置一个VBA的过程名,该过程在用户单击子菜单时运行,本例中设置为下面的过程。
#001PublicSubmyC()
#002MsgBox"
您选择了:
"
&
Application.CommandBars.ActionControl.Caption
#003EndSub
myC过程是单击新添加子菜单所运行过程,为了演示方便在这里只使用MsgBox函数显示所其Caption属性。
删除新添加的菜单项及子菜单的代码如下所示。
#001SubDelmyTools()
#002Application.CommandBars("
).Reset
DelmyTools过程使用Reset方法重置菜单栏,删除添加的菜单项及子菜单。
为了在打开工作簿时自动添加菜单项,需要在工作簿的Activate事件中调用myTools过程,如下面的代码所示。
#001PrivateSubWorkbook_Activate()
#002CallmyTools
为了在关闭工作簿时删除新添加的菜单项,还需要在工作簿的Deactivate事件中调用DelmyTools过程,如下面的代码所示。
#001PrivateSubWorkbook_Deactivate()
#002CallDelmyTools
如果希望这个菜单为所有工作簿使用,那么就应该在工作簿的Open事件中调用myTools过程,在BeforeClose事件中调用DelmyTools过程。
运行myTools过程,将在Excel工作表菜单栏中的“帮助”菜单中添加一个名为“ExcelHome技术论坛”的菜单项及五个子菜单,如图791所示。
图791在“帮助”菜单中添加菜单项及子菜单
技巧2在菜单栏指定位置添加菜单
除了可以在工作表菜单中添加菜单项外,还可以在工作表菜单栏的指定位置添加菜单,如下面的代码所示。
#001SubAddNewMenu()
#002DimHelpMenuAsCommandBarControl
#003DimNewMenuAsCommandBarPopup
#004WithApplication.CommandBars("
#005.Reset
#006SetHelpMenu=.FindControl(ID:
=.Controls("
).ID)
#007IfHelpMenuIsNothingThen
#008SetNewMenu=.Controls.Add(Type:
=msoControlPopup)
#009Else
#010SetNewMenu=.Controls.Add(Type:
=msoControlPopup,_
#011Before:
=HelpMenu.Index)
#012EndIf
#013WithNewMenu
#014.Caption="
统计(&
S)"
#016.Caption="
输入数据(&
D)"
#017.FaceId=162
"
#020With.Controls.Add(Type:
#021.Caption="
汇总数据(&
T)"
#022.FaceId=590
#023.OnAction="
#024EndWith
#025EndWith
#026EndWith
#027SetHelpMenu=Nothing
#028SetNewMenu=Nothing
#029EndSub
AddNewMenu过程使用Add方法在工作表“帮助”菜单前添加一个标题为“统计”的菜单和两个菜单项。
第6行代码,使用FindControl方法在工作表菜单栏中查找“帮助”菜单。
应用于CommandBars对象的FindControl方法返回一个符合指定条件的CommandBarControl对象。
语法如下:
expression.FindControl(Type,Id,Tag,Visible,Recursive)
参数expression是必需的,返回一个CommandBars对象。
参数Type是可选的,要查找控件的类型。
参数Id是可选的,要查找控件的标识符。
参数Tag是可选的,要查找控件的标记值。
参数Visible是可选,如果该值为True,那么只查找屏幕上显示的命令栏控件。
参数Recursive是可选的,如果该值为True,那么将在命令栏及其全部弹出式子工具栏中查找。
此参数仅应用于CommandBar对象。
如果没有控件符合搜索条件,那么FindControl方法返回Nothing。
第7行到第12行代码,如果工作表菜单栏中存在“帮助”菜单,将“统计”菜单添加到“帮助”菜单之前,否则添加到工作表菜单栏末尾。
第12行到第25行代码,在“统计”菜单中添加两个子菜单并设置其各种属性。
运行AddNewMenu过程,将在工作表菜单栏的“帮助”菜单之前添加一个“统计”菜单,如图801所示。
图801在工作表菜单栏中添加菜单
技巧3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel VBA常用技巧 第07章 菜单和工具栏 VBA 常用 技巧 07 菜单 工具栏