在之前的文章中,我们介绍了很多相关的在vba中操作菜单、命令栏的方法。
比如给“菜单命令”中添加一个自定义的命令,可以使用如下的代码:
Sub QQ1722187970() Dim oCB As CommandBar Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") Dim oCBC As CommandBarControl Dim oCBB As CommandBarButton With oCB .Reset '给菜单增加一个命令控件 Set oCBB = .Controls.Add End With End Sub
运行后的效果如下图所示:
从图中可以看出,“加载项”选项卡下的“菜单命令”组中没有看到有新增的命令控件,这是因为没有给控件进行“装饰”。
我们将代码修改如下:
Sub QQ1722187970() Dim oCB As CommandBar Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") Dim oCBC As CommandBarControl Dim oCBB As CommandBarButton With oCB .Reset '给菜单增加一个命令控件 Set oCBB = .Controls.Add With oCBB '设置新增命令的标题 .Caption = "新增命令" '设置新增命令的图形 .FaceId = 100 End With End With End Sub
结果如下:
对比上图,可以看出,这次新增的命令看的出来了,但是我们明明设置了命令的标题,为什么没有显示呢?
原来要显示命令的标题还需要通过设置CommandBarButton对象的Style属性才行。
CommandBarButton对象的Style属性可以有如下的值:
msoButtonAutomatic | 0 | 默认 |
msoButtonCaption | 2 | 只显示文本 |
msoButtonIcon | 1 | 只显示图形 |
msoButtonIconAndCaption | 3 | 显示图形和文本,文本在图形的右侧 |
msoButtonIconAndCaptionBelow | 11 | 显示图形和文本,文本在图形的下方 |
msoButtonIconAndWrapCaption | 7 | 显示图形和文本,文本在图形的右侧,并且自动换行 |
msoButtonIconAndWrapCaptionBelow | 15 | 显示图形和文本,文本在图形的下方,并且自动换行 |
msoButtonWrapCaption | 14 | 只显示文本,居中自动换行 |
代码如下:
Sub QQ1722187970() Dim oCB As CommandBar Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") Dim oCBC As CommandBarControl Dim oCBB As CommandBarButton With oCB .Reset '给菜单增加一个命令控件 Set oCBB = .Controls.Add With oCBB '设置新增命令的标题 .Caption = "新增命令" '设置新增命令的图形 .FaceId = 100 '设置显示的样式 .Style = msoButtonIconAndCaption End With End With End Sub
效果如下:
至此,我们熟悉了如何创建一个自定义的菜单命令,如何使其显示出图形和标题。
发表评论