【问题标题】:Writing code that applies to multiple check boxes in VBA编写适用于 VBA 中多个复选框的代码
【发布时间】:2017-07-15 03:34:19
【问题描述】:

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

提前感谢您的帮助:)

编辑:我意识到这将有助于准确解释我正在尝试做的事情。将有 100 个复选框,每当单击一个时,我都会这样做:

调用 CheckBoxClicked("checkboxname")

【问题讨论】:

  • 就你的问题而言,答案是你可以拥有:一个 piece 代码

标签: vba excel checkbox


【解决方案1】:

把它放在一个名为 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

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

【讨论】:

  • 非常感谢您的帮助。如果问的不是太多,你能告诉我如何编写这个程序,以便在单击复选框时,它会运行一个子程序,将复选框名称作为字符串传递。基本上我希望每次复选框单击它时调用 CheckBoxClicked("checkboxname")。
  • 我真的想通了。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2010-10-19
  • 2016-06-25
  • 1970-01-01
相关资源
最近更新 更多