VBA excel更改多个复选框的值
问题描述:
我有一大堆250个ActiveX复选框,我想将所有的值都从check复选到unchecked,有没有办法将它放到宏中?VBA excel更改多个复选框的值
复选框名都只是Checkbox3到Checkbox253
答
一个简单的方法:
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
双方给出一个错误: 第一种方式: “编译错误:Sub或函数未定义”。第二种方式:“编译错误:使用Me关键字无效” – perbrethil
这确实是一个activeX复选框,我在同一时间混合了两个东西。我的appologies – perbrethil