2017-10-09 72 views

回答

2

一个简单的方法:

Private Sub UnchkAllBox() 
    For i = 3 to 253 
     Controls("Checkbox" & i).Value = False 
    Next i 
End Sub 

这样,复选框的名字是非常重要的。只有使用它才能有序地为您的复选框命名。

其他方式:

Private Sub UnchkAllBox2() 
    Dim Ctrl As Control 
    For Each Ctrl In Me.Controls 
     If TypeName(Ctrl) = "CheckBox" Then Ctrl.Value = False 
    Next Ctrl 
End Sub 

在这种情况下,你不必关心的名称。但是,它将取消选中表单中的所有复选框。

提到的两种方法都假设所有复选框都放置在用户窗体中。对于工作表中的复选框,Excel将它们存储在OLEObjects集合中而不是控件中。因此,代码应该重写如下。

Private Sub UnChkAllBox() 
    For i = 1 To 5 
     OLEObjects("CheckBox" & i).Object.Value = False 
    Next i 
End Sub 

而且

Private Sub UnChkAllBox2() 
    Dim Obj As OLEObject 
    For Each Obj In Me.OLEObjects 
     If TypeOf Obj.Object Is MSForms.CheckBox Then Obj.Object.Value = False 
    Next Obj 
End Sub 
+0

双方给出一个错误: 第一种方式: “编译错误:Sub或函数未定义”。第二种方式:“编译错误:使用Me关键字无效” – perbrethil

+0

这确实是一个activeX复选框,我在同一时间混合了两个东西。我的appologies – perbrethil