返回目录:word文档
有时自己写的VBA功能,启用时通过宏总感觉不是很方便,能不能把自定义功能添加在右键上呢?
答案是肯定的,先看效果图:
红色框内的就是右键自定义功能
来看代码:
这段必须写在ThisWorkbook模块下,workbook的open事件中
下面是VBA代码:
Private Sub Workbook_Open()
'Function:自定义右键快捷菜单
'Author:流沙莫小虫
'Date:2017/1/4
Dim cmp As CommandBarPopup '定义一个弹出式控件
Application.CommandBars("Cell").Reset '单元格菜单重置
Set cmp = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True)
'添加右键菜单,增加位置第一个
With cmp
.Caption = "自定义右键菜单" '菜单命名
'下面添加子菜单
With .Controls.Add(Type:=msoControlButton, before:=1)
.Caption = "功能1" '子菜单名称
.FaceId = 39
.OnAction = "function1" 'function1是你自定义的功能名称
End With
With .Controls.Add(Type:=msoControlButton, before:=2)
.Caption = "功能2"
.FaceId = 39
.OnAction = "function2"
End With
With .Controls.Add(Type:=msoControlButton, before:=3)
.Caption = "功能3"
.FaceId = 39
.OnAction = "function3"
End With
End With
Set cmp = Nothing
End Sub
链接:
使用 CommandBarPopup对象
用 Controls(index) 可返回一个 CommandBarPopup对象;此处 index 是该控件的索引号。该控件的Type属性必须是 msoControlPopup、msoControlGraphicPopup、msoControlButtonPopup、msoControlSplitButtonPopup 或 msoControlSplitButtonMRUPopup。
补充:
.FaceId是EXCEL内置图标,如下图中的红色框内的图标。
.FaceId=39就是这种箭头图标
EXCEL内置图标集合