Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何检查是否选中了userform复选框;哪些是动态创建的?_Vba_Excel - Fatal编程技术网

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非常感谢。它起了作用,但是,即使我选择了至少两个复选框,消息框仍然会出现