0

約 100 個のチェックボックスがある VBA ユーザーフォームのコードを書き込もうとしています。任意のチェックボックスに適用される 1 つのコードを作成する方法があるかどうか、または、checkbox1_click、checkbox2_click、checkbox3_click などに 100 個の個別の関数を記述する必要があるかどうか疑問に思っていました。

事前に助けてくれてありがとう:)

編集:私がやろうとしていることを正確に説明するのに役立つことに気付きました. 100 個のチェック ボックスがあり、いずれかがクリックされるたびに、次のようにします。

CheckBoxClicked("checkboxname") を呼び出す

4

1 に答える 1

2

これを clsCheckBoxHandler という名前のモジュール化されたクラスに入れます

Public WithEvents chk As MSForms.CheckBox

Private Sub chk_Click()
    MsgBox chk.Caption & " Clicked!"
End Sub

次に、ユーザーフォームで

Dim chkCollection As Collection


Private Sub UserForm_Initialize()
Dim cCont As Control
Dim chkH As clsCheckBoxHandler

    Set chkCollection = New Collection

    For Each cCont In Me.Controls

        If TypeName(cCont) = "CheckBox" Then

            Set chkH = New clsCheckBoxHandler
            Set chkH.chk = cCont
            chkCollection.Add chkH

        End If

    Next cCont

End Sub

これは、クリック イベントを持つチェックボックスの単純なハンドラーですが、複数のコントロールとイベントをカバーするように拡張できます。

于 2013-08-13T14:10:34.757 に答える