我有一大堆250个ActiveX复选框,我希望将所有值从检查更改为未检查,是否有办法将其放入宏中?
复选框名称只是Checkbox3到Checkbox253
答案 0 :(得分: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