我正在尝试为具有大约100个复选框的VBA用户表单编写一些代码。我想知道是否有一种方法可以让一段代码适用于任何复选框,或者我必须为checkbox1_click,checkbox2_click,checkbox3_click等编写100个单独的函数。
感谢您提前提供任何帮助:)
编辑:我意识到这将有助于解释我正在尝试做什么。将有100个复选框,只要点击一个,我想这样做:
调用CheckBoxClicked(“checkboxname”)
答案 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事件的复选框,但可以扩展为涵盖多个控件和事件。