用户表单中复选框名称的串联
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
我在一个用户窗体中有 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