Vba 如何检查是否选中了userform复选框;哪些是动态创建的?
我有一个带有动态复选框的用户表单(已编程) 下面是我的代码Vba 如何检查是否选中了userform复选框;哪些是动态创建的?,vba,excel,Vba,Excel,我有一个带有动态复选框的用户表单(已编程) 下面是我的代码 Dim Rows As Integer Dim toppart As Integer Dim Opt As Variant Dim x As Integer On Error Resume Next toppart = 20 UpdateRow = Application.WorksheetFunction.CountA(ActiveSheet.Range("C3:CU3")) For x = 3 To UpdateRow Se
Dim Rows As Integer
Dim toppart As Integer
Dim Opt As Variant
Dim x As Integer
On Error Resume Next
toppart = 20
UpdateRow = Application.WorksheetFunction.CountA(ActiveSheet.Range("C3:CU3"))
For x = 3 To UpdateRow
Set Opt = Te.Controls.Add("Forms.CheckBox.1", "CheckBox" & x, True)
Opt.Caption = ActiveSheet.Cells(x, "C").Value
Opt.Width = 70
Opt.Height = 18
Opt.Left = 18
Opt.Top = toppart
toppart = toppart + 20
Next
我知道如果复选框是通过控件设置的,我的代码将如下所示:
如果(CheckBox1.Value=False)或(CheckBox2.Value=False),则
MsgBox“您必须选择另外两个复选框”,vbCritical
但是当复选框是动态创建的时候,我想不出一个有效的方法来实现它。非常感谢您的任何建议或帮助,谢谢 未测试,但您可能可以循环表单上的控件,检查每个控件是否是复选框,如果是,则查询它的
.Value
并统计“选中”的复选框总数。如果该数字为LTE 1,则您会发出警告/MsgBox
:
Dim checked as Long
Dim ctrl as Object
For Each ctrl in Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
checked = checked + 1
End If
End If
Next
If checked <= 1 Then
MsgBox "You must select alteast 2 checkboxes", vbCritical
Exit Sub
End If
Dim选中的时间越长越好
将ctrl设置为对象
对于Me.Controls中的每个ctrl键
如果TypeName(ctrl)=“复选框”,则
如果ctrl.Value=True,则
选中=选中+1
如果结束
如果结束
下一个
如果选中如果TypeName(ctrl)=“CheckBox”,则是正确的语法感谢@thomasinzina非常感谢。它起了作用,但是,即使我选择了至少两个复选框,消息框仍然会出现