用户表单中复选框名称的串联

Concatenation for checkboxs name in a userform

我在一个用户窗体中有 40 个复选框,名为 ck1 到 ck40,因为我需要检查它们是否被选中,但它在循环中不起作用。我试过类似的东西:

For i = 1 To 40

       If Me.ck & i.Value = True Then
             ticked = True
             Exit For
      End If

Next i

Me.ck & i & .Value 或许多其他东西。我也尝试使用 Set 但我的 aptents 中的 none 起作用了,因为程序在 Me.ck 处停止。我还没有找到任何使用串联的解决方案.. 我显然必须使用 Me. 因为我的代码在用户表单中

我正在寻找任何解决方案

试试下面的代码:

For i = 1 To 40
    If Me.Controls("ck" & i).Value Then
        ticked = True
        Exit For
    End If
Next i

你为什么要退出 for?您的代码会通过并执行第一个然后退出循环吗?下面应该没问题

For i = 1 To 40
    If Me.Controls("ck" & i).Value Then
        Me.Controls("ck" & i).value = True
    End If
Next i

如果你想要更动态的东西,你可以使用

Dim cCont As Control
For Each cCont In Me.Controls
    If TypeName(cCont) = "CheckBox" Then
        cCont.value = True
    End If
 Next cCont