成果
- VBE右键菜单可以创建
- 菜单点击可以运行
下面分享步骤:
1. 背景:关于VBE右键
平时我使用word,比较喜欢自定义一些右键菜单结合自己做的小功能,代码多了其实有时候代码也需要管理了---->而VBE编辑器也有接口
Application.VBE.CommandBars(“Code Window”)
但是当我创建好右键后,发现并没有用:点击没反应。我初始以为:
- 接口有问题,明明没用微软还开放出来,啥意思
- 或许只能用Visual studio来开发
在我尝试网络搜索“VBE外接程序”、“VBE 插件开发”…结果:搜索信息很少{要么是收费要么怎么怎么样},后来我看到罗刚君老师,对没错,罗老师,是他真是他的一篇 ExcelHome文章 ,然后我付费下载了他的编程书籍,得到了结果,如下写出。这可真是念念不忘必有回响
用VB编写VBE右键
1.生成菜单
代码需要注意以下:
- 事件BtnEvent 作用域是模块级别(个人理解VB开发的作用域如果word退出后,VBE右键需重新生成)
- 为每一个事件都加入到集合之中(执行成功后你就会找到,只管加就好)
Dim BtnEvent As BtnEvent, btns As New Collection
Sub 【右键】菜单小功能_VBE20240606()
On Error Resume Next
Dim oneBar As CommandBar
Dim btnOne As CommandBarButton, popupOne As CommandBarPopup
'步骤一:初始化VBE右键
Set oneBar = Application.VBE.CommandBars("Code Window")
oneBar.Reset '重置
【右键】隐藏按钮fnc_20240606 "Code Window", "21,19,22,2529,2530,2531,2532,2533,32805,473,865" '隐藏不必要右键菜单
'步骤二:生成菜单
With oneBar.Controls
.Add Type:=msoControlButton, before:=1, Temporary:=False
.Add Type:=msoControlButton, before:=2, Temporary:=False
.Add Type:=msoControlButton, before:=3, Temporary:=False
End With
'-->
Set btnOne = oneBar.Controls(1)
With btnOne
.caption = "当前过程[导出]"
.OnAction = "sub【快捷键】宏_导出单独sub20240422"
.FaceId = 25
End With
Set BtnEvent = New BtnEvent '需为每一个按钮添加VBE事件,且该事件作用域为模块级别
Set BtnEvent.BarEvents = VBE.Events.CommandBarEvents(btnOne)
btns.Add BtnEvent
.....
.....
End Sub
2.为按钮添加事件
VBE按钮其实没有添加事件,是没有反应的正如开头所说加了事件就可以正常运行
Public WithEvents BarEvents As VBIDE.CommandBarEvents
Private Sub BarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
Application.Run CommandBarControl.OnAction
CancelDefault = True
End Sub
总结
念念不忘必有回响,分享之