0

この質問へのフォローアップとして、ユーザーフォームが実行時にマルチページに x # 個のタブを作成できる場合、それぞれ同じコントロールを使用して、ボタンの .OnClick 動作を設定する方法を知りたいです。私は次のコードでこれを達成しようとしています:

For Each ctl In MultiPage1.Pages(NumSegs - 1).Controls
    If TypeOf ctl Is MSForms.CommandButton Then
        ctl.Name = "Segment" & NumSegs & "Button"
        ctl.OnClick = "Span_Form_Click_Handler"
    End If
Next

しかし、もちろん.OnClickメソッドはないようです...

4

1 に答える 1

2

イベントで変数を定義します。最小限の例: UserForm + CommandButton 。UserForm モジュールのコード:

Public WithEvents btn As MSForms.CommandButton

Private Sub btn_Click()
    MsgBox "Bla"
End Sub

Private Sub UserForm_Click()
    Set btn = CommandButton1
End Sub

フォーム内をクリックすると、ボタン CommandButton にサブ btn_Click が割り当てられます。

毎回同じサブルーチンを呼び出せるようにするには、サブ変数と withevents 変数をクラスに配置し、見つけた CommandButton ごとにこのクラスのインスタンスを作成する必要があります。

于 2012-05-31T20:12:30.817 に答える