打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA常用代码解析(第二十一讲)

 

83 定制自己的系统菜单

使用VBA开发的小型应用系统完成后,Excel原有的菜单栏完全可以舍弃不用,只使用自定义的菜单栏,更加方便快捷,如下面的代码所示。

Sub AddNowBar()

DimNewBar As CommandBar

On ErrorResume Next

WithApplication

.CommandBars('Standard').Visible= False

.CommandBars('Formatting').Visible= False

.CommandBars('Stop Recording').Visible= False

.CommandBars('toolbar list').Enabled= False

.CommandBars.DisableAskAQuestionDropdown= True

.DisplayFormulaBar = False

.CommandBars('NewBar').Delete

EndWith

SetNewBar = Application.CommandBars.Add(Name:='NewBar'Position:=msoBarTopMenuBar:=TrueTemporary:=True)

WithNewBar

.Visible = True

With .Controls.Add(Type:=msoControlPopup)

.Caption = '系统设置(&X)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)

.Caption = '保存(&S)'

.BeginGroup = True

.FaceId = 1975

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '备份(&B)'

.BeginGroup = True

.FaceId = 747

End With

End With

With .Controls.Add(Type:=msoControlPopup)

.Caption = '会计凭证(&P)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)

.Caption = '录入(&L)'

.BeginGroup = True

.FaceId = 197

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '审核(&S)'

.BeginGroup = True

.FaceId = 714

End With

End With

With .Controls.Add(Type:=msoControlPopup)

.Caption = '会计账簿(&Z)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)

.Caption = '记账(&L)'

.BeginGroup = True

.FaceId = 65

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '结账(&S)'

.BeginGroup = True

.FaceId = 47

End With

End With

With .Controls.Add(Type:=msoControlPopup)

.Caption = '会计报表(&B)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlPopup)

.Caption = '资产负债表(&Y)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)

.Caption = '月报(&M)'

.BeginGroup = True

.FaceId = 1180

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '年报(&Y)'

.BeginGroup = True

.FaceId = 1188

End With

End With

With .Controls.Add(Type:=msoControlPopup)

.Caption = '损益表(&S)'

.BeginGroup = True

With .Controls.Add(Type:=msoControlButton)

.Caption = '月报(&M)'

.BeginGroup = True

.FaceId = 1180

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '年报(&Y)'

.BeginGroup = True

.FaceId = 1188

End With

End With

End With

With .Controls.Add(Type:=msoControlButton)

.Caption = '退出系统(&C)'

.BeginGroup = True

.Style = msoButtonCaption

End With

EndWith

SetNewBar = Nothing

End Sub

代码解析:

AddNowBar过程使用Add方法创建自定义菜单栏替换工作表菜单栏。

2行代码定义变量NewBar为命令栏。

3行代码忽略错误语句,以免第11行代码在删除可能不存在的“NewBar”菜单栏时发生错误。

5行代码隐藏“常用”工具栏。

6行代码隐藏“格式”工具栏。

7行代码隐藏“停止录制”工具栏。

8行代码屏蔽工具栏的右键快捷菜单。

9行代码屏蔽工具栏的“键入需要帮助的问题”下拉框。

10行代码屏蔽工具栏的编辑栏。

11行代码,在添加命令栏前先删除“NewBar”菜单栏,以免重复增加。

13行代码,使用Add方法创建命令栏。Add方法应用于CommandBars对象的语法如下:

expression.Add(NamePositionMenuBarTemporary)

参数expression是必需的,返回一个CommandBars对象,该对象代表应用程序中的命令栏,新建命令栏的控件均以该对象为载体。

参数Name是可选的,设置新建命令栏的标题。如果忽略该参数,则为新建命令栏指定默认标题,本例中设置新建命令栏的标题为“NewBar”。

参数Position是可选的,设置新建命令栏的位置或类型,可以为表格所列的 MsoBarPosition常数之一。

本例中设置“NewBar”命令栏的Position参数为msoBarTop,使“NewBar”命令栏位于Excel窗口的顶部。

参数MenuBar是可选的,设置为True将以新命令栏替换活动菜单栏,默认值为False

在本例中,设置“NewBar”命令栏的MenuBar属性为True,以“NewBar”命令栏替换活动菜单栏。

参数Temporary是可选的,设置为True将使新建命令栏为临时命令栏,在关闭应用程序时删除,默认值为False

在本例中,设置“NewBar”命令栏的Temporary属性为True,使“NewBar”命令栏为临时命令栏,在关闭应用程序时删除。

15行代码,设置“NewBar”命令栏为可见的。

16行到95行代码,使用Add方法在“NewBar”命令栏中添加菜单、菜单项及子菜单并设置其各项属性,参阅▲79

恢复Excel原有的菜单栏的代码如下:

Sub DelNowBar()

On ErrorResume Next

WithApplication

.CommandBars('Standard').Visible= True

.CommandBars('Formatting').Visible= True

.CommandBars('Stop Recording').Visible= True

.CommandBars('toolbar list').Enabled= True

.CommandBars.DisableAskAQuestionDropdown= False

.DisplayFormulaBar = True

.CommandBars('NewBar').Delete

EndWith

End Sub

代码解析:

DelNowBar过程取消“常用”、“格式”和“停止录制”工具栏的的隐藏,恢复“键入需要帮助的问题”下拉框和编辑栏,删除“NewBar”命令栏。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用VBA添加菜单和子菜单的示例代码
[VBA]Excel工具栏代码
通过VBA制造EXCEL的菜单
CommandBar介绍-菜单栏
VBA|自定义菜单栏、工具栏、功能区
vba活用excel右键菜单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服