-2
我有一大堆250個ActiveX複選框,我想將所有的值都從check複選到unchecked,有沒有辦法將它放到宏中?VBA excel更改多個複選框的值
複選框名都只是Checkbox3到Checkbox253
我有一大堆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