首页 > 解决方案 > 如何循环复选框?

问题描述

我有 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

标签: excelvbaloopscheckbox

解决方案


在模块中编写以下子程序,然后从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

请参阅下面的屏幕截图以从复选框单击事件调用上面的子。

在此处输入图像描述


推荐阅读