浏览器之家


利用VBA创建Excel新菜单

使用VBA,可以很方便地向Excel菜单栏添加新菜单。
背景知识
1、菜单栏属于CommandBars集合,可以通过菜单栏名称或索引值对其进行引用:
CommandBars(“Worksheet Menu Bar”)或CommandBars(1)
2、新添加的菜单是一个弹出式控件,其类型为msoControlPopup。
3、通过Add方法向Controls集合中添加新的控件。Add方法可以指定控件的类型、内置控件的ID号、位置及是否是一个临时控件。如果是一个临时控件,则在关闭Excel时会自动删除该菜单。
4、可以指定新菜单的位置。如果不指定,则会在菜单工具栏末尾添加新菜单。
5、使用Caption属性指定新菜单的名称,使用OnAction属性指定单击菜单后的行为。
6、为了避免指定的菜单不存在,可以使用FindControl方法查找要指定的菜单。若指定的菜单不存在,则在工作表菜单栏末尾添加新菜单。
添加菜单
向Excel工作表菜单栏中添加菜单的过程清单如下:
Sub AddNewMenu()
    Dim HelpMenu As CommandBarControl
    Dim NewMenu As CommandBarPopup
    
    '利用ID属性查找帮助菜单
    Set HelpMenu = CommandBars(1).FindControl(ID:=30010)
    
    If HelpMenu Is Nothing Then
        '如果该菜单不存在,则将新菜单添加到末尾
        '设置新菜单为临时的
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Temporary:=True)
    Else
        '将新菜单添加到帮助菜单之前
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Before:=HelpMenu.Index, _
          Temporary:=True)
    End If
    
    '添加标题并指定快捷键
    NewMenu.Caption = "统计(&S)"
End Sub
运行该过程后,将在工作表菜单的“帮助”菜单左侧添加一个名为“统计”的新菜单。

评论

没安装畅言模块