编写适用于VBA中多个复选框的代码

时间:2013-08-13 13:50:47

标签: vba excel-vba checkbox excel

我正在尝试为具有大约100个复选框的VBA用户表单编写一些代码。我想知道是否有一种方法可以让一段代码适用于任何复选框,或者我必须为checkbox1_click,checkbox2_click,checkbox3_click等编写100个单独的函数。

感谢您提前提供任何帮助:)

编辑:我意识到这将有助于解释我正在尝试做什么。将有100个复选框,只要点击一个,我想这样做:

调用CheckBoxClicked(“checkboxname”)

1 个答案:

答案 0 :(得分:1)

将它放在名为 clsCheckBoxHandler

的模块类中
Public WithEvents chk As MSForms.CheckBox

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

然后在Userform

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

这只是一个简单的处理程序,用于具有click事件的复选框,但可以扩展为涵盖多个控件和事件。