VBA 代码生成VBE右键菜单(注意是VBE右键)

成果

在这里插入图片描述

  • 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

总结

念念不忘必有回响,分享之

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值