2017-10-09 13 views
-2

J'ai une grande rangée de 250 cases à cocher ActiveX dont je veux changer toutes les valeurs de cochée à non cochée, est-il un moyen de mettre cela dans une macro?VBA Excel valeur de plusieurs cases à cocher

noms de cases à cocher sont juste Checkbox3 à Checkbox253

Répondre

2

Un moyen facile:

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

De cette façon, les noms des cases à cocher sont très importants. Utilisez-le seulement pour cocher vos cases.

Autre façon:

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 

Dans ce cas, vous n'avez pas concerner les noms. Cependant, il désélectionnera toutes les cases de votre formulaire.

Les deux méthodes mentionnées supposent que toutes les cases à cocher ont été placées dans un formulaire utilisateur. Pour les cases à cocher dans une feuille de calcul, Excel les stocke dans une collection OLEObjects au lieu de Controls. Par conséquent, le code devrait être réécrit comme ci-dessous.

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

Et

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

deux donnent une erreur: Première voie: "Erreur de compilation: Sub ou Fonction non définie". Deuxième manière: "Erreur de compilation: utilisation incorrecte du mot-clé Me" – perbrethil

+0

Il s'agit en effet d'une case activeX, j'ai mélangé des choses en faisant 2 choses en même temps. mes excuses – perbrethil