*.xlam アドインでユーザー フォームを作成し、IDE で新しいコマンド バーとボタンを作成しましたが、ボタンをクリックすると Excel でユーザー フォームが開かれ、フォーカスが IDE から離れてしまいます。.Net COM アドインを使用せずに、ホスト アプリケーションではなく IDE でユーザー フォームを開く方法はありますか?
コマンドバーとボタンを作成し、ボタン クリック イベントを処理するコードを次に示します。
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
PSコマンドバーを削除するには、このコード行が必要になる場合があります...
Application.VBE.CommandBars("VBIDE").Delete