VBA|自定义菜单栏、工具栏、功能区

VBA|自定义菜单栏、工具栏、功能区

Excel2007中,功能区替代了以前的分层菜单、工具栏和任务窗格系统。

自定义菜单栏、工具栏的效果:

主要是使用CommandBars对象模型:

VBA代码:

1自定义菜单命令组

‘自定义菜单命令组PublicSubcreatediyMenu()ForEachconInApplication.CommandBars(“Data”).Controlscon.DeleteNextDimdiyMenuAsObjectDimMenuItemAsVariantDimMenusubAsVariantMenuItem=Array(“首行标题和冻结及边框”,“创建工作表目录”,“工作表按名称排序”,“设置页眉页脚”,“隔行插入空行”,“删除空行”,“删除选定列空单元格的行”,“删除超级链接”,“删除形状(图形、文本框等)”,“设置最后一个字符为上标”,“多条件排序(ABCD列)”,“多条件筛选(AB列)”,“Setting”,“选区字符统计”,“借书记录”,“定位到D列最后一行”,“显示或隐藏批注”,“删除当前表中批注”)Menusub=Array(“PERSONAL.XLSB!行操作.首行标题和冻结及边框”,“PERSONAL.XLSB!表操作.创建工作表目录”,“PERSONAL.XLSB!表操作.sortShtByName”,“PERSONAL.XLSB!表操作.设置页眉页脚”,“PERSONAL.XLSB!行操作.insertBlankRow”,“PERSONAL.XLSB!行操作.DeleteBlankRow”,_“PERSONAL.XLSB!行操作.批量删除空行先选定列”,“PERSONAL.XLSB!数据编辑.删除超级链接”,“PERSONAL.XLSB!数据编辑.删除形状”,“PERSONAL.XLSB!数据编辑.设置单元格最后一个字符为上标”,“PERSONAL.XLSB!排序与筛选和统计.MoreKeySort”,“PERSONAL.XLSB!排序与筛选和统计.FilterMoreCriteria”,“PERSONAL.XLSB!自定义菜单.ExcelSetting”,“PERSONAL.XLSB!排序与筛选和统计.textcount”,“PERSONAL.XLSB!借书记录.借书记录”,“PERSONAL.XLSB!自定义菜单.newRowPos”,“PERSONAL.XLSB!排序与筛选和统计.显示或隐藏批注”,“PERSONAL.XLSB!排序与筛选和统计.删除当前表中批注”)Fori=0ToUBound(MenuItem)SetdiyMenu=Application.CommandBars(“Data”).Controls.Add(Type:=msoControlButton)WithdiyMenu.Caption=MenuItem(i).OnAction=Menusub(i)EndWithNextiSetdiyMenu=NothingEndSub

2插入自定义工具栏命令

Sub插入自定义工具栏命令()DimcmbAsOffice.CommandBarDimbtAsOffice.CommandBarButton’Call删除菜单栏Setcmb=Application.CommandBars(“Formatting”)Setbt=cmb.Controls.Add(Type:=Office.MsoControlType.msoControlButton)Withbt.Caption=“借书记录”.FaceId=2560.Style=msoButtonIconAndCaption.OnAction=“PERSONAL.XLSB!借书记录.借书记录”EndWithEndSub‘下面的Right过程是自定义按钮的回调函数?SubRight()Selection.HorizontalAlignment=Excel.Constants.xlRightEndSub

3创建新的菜单栏

ConststrBarNameAsString=“我的菜单栏”PublicSub创建新的菜单栏()DimcbrAsCommandBar,ctlAsCommandBarControlCall删除菜单栏’ForEachconInApplication.CommandBars(strBarName).Controls‘con.Delete’NextSetcbr=Application.CommandBars.Add(strBarName,MenuBar:=True)cbr.Visible=TrueSetctl=Application.CommandBars(“WorksheetMenuBar”).FindControl(ID:=30002)ctl.CopyApplication.CommandBars(strBarName)‘30002文件下拉菜单Setctl=Application.CommandBars(“WorksheetMenuBar”).FindControl(ID:=30003)’Setctl=Application.CommandBars(“ChartMenuBar”).FindControl(ID:=30003)‘30003编辑、30004视图、30005插入、30006格式、30007工具ctl.CopyApplication.CommandBars(strBarName)Withcbr.Controls.Add(msoControlPopup).Caption=“帮助”With.Controls.Add(msoControlButton).Caption=“重置”.OnAction=“删除菜单栏”EndWithWith.Controls.Add(msoControlButton).Caption=“关于”.OnAction=“关于”EndWithEndWithEndSubSub删除菜单栏()OnErrorResumeNextApplication.CommandBars(strBarName).DeleteOnErrorGoTo0EndSubSub关于()DimstrMsgAsStringstrMsg=“这是一个新的菜单栏”&vbCrLfstrMsg=strMsg&“由”&Application.UserName&“创建”MsgBoxstrMsg,,“关于”EndSub

自定义功能区参照:

Excel2007|RibbonX控件&自定义功能区

在Excel2013中,创建功能区选项卡的操作非常简单,用户可通过打开“Excel选项“对话框直接进行功能区选项卡和组的创建。

-End-

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。