在之前的文章中,我们介绍了很多相关的在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
效果如下:

至此,我们熟悉了如何创建一个自定义的菜单命令,如何使其显示出图形和标题。


发表评论