【问题标题】:How to loop checkboxes?如何循环复选框?
【发布时间】:2020-02-11 14:26:29
【问题描述】:

我有 20 个复选框,命名为 checkbox1 到 checkbox20。

当每个复选框被选中时,我想在 B 列中记录用户名。

例如,当用户点击 checkbox1 时,B1 将填充用户名,如果单击 checkbox2,B2 将填充用户名。

我知道如何为每个复选框编写代码并复制 20 次。如何将它们组合成一个子?

Private Sub CheckBox1_Click()

Dim i As Integer

For i = 1 To 20

    If Me.CheckBox & i = True Then

        Range("b1" & i).Value = Environ("USERNAME")

    Else: Range("b1" & i).Value = ""

    End If

Next

End Sub

【问题讨论】:

  • This 应该会有所帮助。
  • 您可以创建包装类并声明 Public WithEvents ctl As MSForms.CheckBox 并创建 Private Sub ctl_Click()Private Sub ctl_Change() 来处理复选框事件,然后创建该类的 20 个实例并将每个复选框分配给循环内的每个实例。请注意,您应该使用表单控件复选框。

标签: excel vba loops checkbox


【解决方案1】:

在模块中编写以下子程序,然后从CheckBox_Click 事件中调用此子程序。

Sub LoopCheckBoxes()
Dim i As Long
    For i = 1 To 20
        If ActiveSheet.Shapes("Check Box " & i).OLEFormat.Object.Value = 1 Then
            Range("B" & i) = Environ("USERNAME")
        End If
    Next i
End Sub

查看下面的屏幕截图以从复选框单击事件中调用上面的子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多