标签: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,供有兴趣的朋友参考。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。