Excel で ActiveX フレームをワークシートに挿入します。このフレームを右クリックすると、次を選択できます。
フレームオブジェクト>編集
これで、このフレームにボタンを追加できます。偉大な。
このボタンに _Click イベントを追加して、マクロを実行するにはどうすればよいですか?
基本的に、「XButton」などの独自のクラスを作成する必要があります。この「XButton」内には、フレーム内にあるボタン オブジェクトのイベント ハンドラがあります。
したがって、「btn」によって送信されるすべてのイベントを処理し、さらに転送することができます。次に、次のようなカスタム インターフェイス (空のクラス) IXButtonEventHandler を作成する必要があります。
Option Explicit
Public Sub Click(Sender as XButton)
End Sub
したがって、カスタム クラスXButtonは次のようになります。
Private WithEvents btn as MSForms.CommandButton
Private mEventHandler as IXButtonEventHandler
Public Sub CreateObject(EventHandlerOf as MSForms.CommandButton, EventHandler as IXButtonEventHandler)
Set btn = EventHandlerOf
Set mEventHandler = EventHandler
End Sub
Private Sub btn_Click()
If not mEventHandler is Nothing then mEventHandler.Click(Me)
End Sub
たとえば、Workbook がイベント ハンドラーになり、IXButtonEventHandler インターフェイスを実装する必要があるとします。
Implements IXButtonEventHandler
Private Sub IXButtonEventHandler_Click(Sender as XButton)
'your code
End Sub
Workbook_Load などで、XButton のコレクションを作成し、それらをフレーム コントロールにアタッチする必要があります。
Dim xbtn as Collection
Private Sub AttachButtons()
Set xbtn = New Collection
Dim i as Long
For i = 0 to 3
Dim xb as New XButton
xb.CreateObject <YourFrame>.Controls("CommandButton" & Cstr(i)), Me
xbtn.Add xb
Next i
End Sub