我在*.xlam插件中创建了一个用户窗体,并在IDE中创建了一个新的命令栏和按钮,但当我单击按钮时,用户窗体会在Excel中打开,并且焦点被强制从IDE中移开。有没有一种方法可以在IDE中打开用户窗体而不是宿主应用程序,而不必使用.Net COM Add-in?
以下是创建命令栏和按钮以及处理按钮单击事件的代码。
以下是创建命令栏和按钮以及处理按钮单击事件的代码。
Option Explicit
Public WithEvents cmdBarEvents As VBIDE.CommandBarEvents
Private Sub Class_Initialize()
CreateCommandBar
End Sub
Private Sub Class_Terminate()
Application.VBE.CommandBars("VBIDE").Delete
End Sub
Private Sub CreateCommandBar()
Dim bar As CommandBar
Set bar = Application.VBE.CommandBars.Add("VBIDE", MsoBarPosition.msoBarFloating, False, True)
bar.Visible = True
Dim btn As CommandBarButton
Set btn = bar.Controls.Add(msoControlButton, , , , True)
btn.Caption = "Show Form"
btn.OnAction = "ShowForm"
btn.FaceId = 59
Set cmdBarEvents = Application.VBE.Events.CommandBarEvents(btn)
End Sub
Private Sub cmdBarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
CallByName Me, CommandBarControl.OnAction, VbMethod
End Sub
Public Sub ShowForm()
Dim frm As New UserForm1
frm.Show
End Sub
P.S. 你可能需要以下代码来移除命令栏...
Application.VBE.CommandBars("VBIDE").Delete