VBA通用代码:在Excel中创建弹出菜单

2022-06-04 10:16:41 浏览数 (1)

标签:VBA,快捷菜单

弹出菜单(有时也称为上下文菜单或快捷菜单)是用户界面(UI)中的菜单,提供了一组命令选项,通过某些用户操作(如鼠标右键单击)在应用程序的当前状态或上下文中可用。

由于在2007 MicrosoftOffice系统中,Microsoft用功能区UI取代了命令栏菜单结构,这造成了创建在不同版本的MicrosoftOffice中工作的菜单的技术会有所不同。本文使用一种有效的技术创建在所有Excel版本中都可使用的弹出菜单。

注意,内置或自定义上下文菜单不同于弹出菜单的一种方式是,上下文菜单仅在右键单击鼠标时显示,而弹出菜单可以在需要时显示。

在VBE中,单击“插入——模块”,在标准模块中的代码如下:

代码语言:javascript复制
Public Const Mname As String ="MyPopUpMenu"
Sub DeletePopUpMenu()
    ' 如果该弹出菜单已存在则删除.
   On Error Resume Next
   Application.CommandBars(Mname).Delete
   On Error GoTo 0
End Sub
Sub CreateDisplayPopUpMenu()
    ' 删除已存在的弹出菜单.
   Call DeletePopUpMenu
    ' 创建弹出菜单.
   Call Custom_PopUpMenu_1
    ' 显示弹出菜单.
   On Error Resume Next
   Application.CommandBars(Mname).ShowPopup
   On Error GoTo 0
End Sub
Sub Custom_PopUpMenu_1()
   Dim MenuItem As CommandBarPopup
    ' 添加弹出菜单.
   With Application.CommandBars.Add(Name:=Mname, _
         Position:=msoBarPopup, _
         MenuBar:=False, Temporary:=True)
        ' 首先, 在菜单中添加两个按钮.
        With.Controls.Add(Type:=msoControlButton)
            .Caption = "按钮1"
            .FaceId = 71
            .OnAction = "'" &ThisWorkbook.Name & "'!" & "TestMacro"
        End With
        With.Controls.Add(Type:=msoControlButton)
            .Caption = "按钮2"
            .FaceId = 72
            .OnAction = "'" &ThisWorkbook.Name & "'!" & "TestMacro"
        End With
        ' 接着, 添加包含两个按钮的菜单.
        Set MenuItem =.Controls.Add(Type:=msoControlPopup)
        With MenuItem
            .Caption = "我的特定菜单"
            With.Controls.Add(Type:=msoControlButton)
                .Caption = "菜单中的按钮 1"
                .FaceId = 71
                .OnAction = "'" &ThisWorkbook.Name & "'!" & "TestMacro"
            End With
            With.Controls.Add(Type:=msoControlButton)
                .Caption = "菜单中的按钮2"
                .FaceId = 72
                .OnAction = "'" &ThisWorkbook.Name & "'!" & "TestMacro"
            End With
        End With
        ' 最后, 添加单个按钮.
        With.Controls.Add(Type:=msoControlButton)
            .Caption = "按钮3"
            .FaceId = 73
            .OnAction = "'" &ThisWorkbook.Name & "'!" & "TestMacro"
        End With
   End With
End Sub
Sub TestMacro()
   MsgBox "Hello! 成功啦!"
End Sub

回到Excel界面,按Alt F8键,调出“宏”对话框,选择“CreateDisplayPopUpMenu”宏,单击“选项”按钮,在“宏选项”对话框中的“快捷键”中输入字母m,如下图1所示。

图1

这样,在Excel工作表中,按Ctrl m组合键,会出现如下图2所示的弹出菜单。

图2

当单击菜单中的按钮时,会弹出一个信息框,如下图3所示。

图3

注:本文整理自microsoft.com,供有兴趣的朋友参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞