前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA通用代码:在Excel中创建弹出菜单

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

作者头像
fanjy
发布2022-06-04 10:16:41
3K0
发布2022-06-04 10:16:41
举报
文章被收录于专栏:完美Excel完美Excel完美Excel

标签:VBA,快捷菜单

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

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

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

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

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,供有兴趣的朋友参考。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档