2017-10-09 787 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