【发布时间】: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 个实例并将每个复选框分配给循环内的每个实例。请注意,您应该使用表单控件复选框。