3

Excel で ActiveX フレームをワークシートに挿入します。このフレームを右クリックすると、次を選択できます。

フレームオブジェクト>編集

これで、このフレームにボタンを追加できます。偉大な。

このボタンに _Click イベントを追加して、マクロを実行するにはどうすればよいですか?

4

1 に答える 1

4

基本的に、「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
于 2013-03-20T00:35:06.287 に答える