|
背景:最近学习VBA准备做个代码小助手学习下,但是制作过程中遇到一个问题。
描述:我在VBE中添加了一个工具条(CommandBar)并添加了一个按钮(CommandBarButton)。因为VBE环境中的按钮不能使用OnAction属性,只能通过定义的Click事件触发。
问题:如果正常使用没问题,但是,一旦执行某些语句就会导致事件失效。比如下面代码中的InsertLines,注释它就不会出问题,一旦使用它,按钮只会在第一次点击时有效,之后就不会触发点击。
后来我尝试将所有操作封装到类模块,结果一样,并且会看到执行一次后,实例化的对象就会被自动释放,从而导致点击按钮无法触发Click事件。
请教各位大佬,这是什么原因导致的?
事件类clsCommandHandler
- Option Explicit
- Public WithEvents cmd As VBIDE.CommandBarEvents
- Private Sub cmd_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
- Dim sl As Long, sc As Long, el As Long, ec As Long
- Application.VBE.ActiveCodePane.GetSelection sl, sc, el, ec
-
- ' 下面这条语句只会执行一次,之后按钮不会再触发事件
- ' 注释它就没有任何问题了
- Application.VBE.ActiveCodePane.CodeModule.InsertLines sl, "' ok"
- Debug.Print "Button Click"
- handled = True
- CancelDefault = True
- End Sub
复制代码
|
|