Excel VBA case à cocher et cliquez sur modifier les événements de la même manière?

J'ai 5 cases à cocher pour définir certaines options pour une macro, l'un d'eux est un Sélectionner/Désélectionner la case Tout. Je veux créer quelque chose de semblable à ce que vous avez sur le web à base de boîtes aux lettres lorsque vous sélectionnez mails à supprimer ou marquer comme lu, etc.
Quand je vérifie le Sélectionner/Désélectionner la case Tout, je tourne le reste des cases de valeurs true et vice-versa quand j'ai décocher. C'est ok.

Le problème vient quand je veux valider que si tout n'est pas cochée et un par un, j'ai cocher les autres cases à cocher, si à la fin je vérifie tous, puis le Sélectionner/Désélectionner la case Tout tourne à la vérification. Et vice-versa, ce qui signifie que si tout est coché et puis j'ai décocher l'un des quatre autres, puis-je désactiver le "Tout" de la case à false (désactivé).

Mais il semble que même quand je viens de mettre la valeur, par exemple Option1Checkbox.valeur = True, dans le SelectAllCheckbox_Click cas, il déclenche à la fois la Option1Checkbox_Click et Option1Checkbox_Change événements.

Ne devrait-elle pas simplement déclencher l'événement de Changement depuis que je ne suis pas vraiment en cliquant sur cette case?

Ce qui se passe, c'est que j'ai vérifier le SelectAll, donc il s'avère Option1 à des bagages, mais en faisant cela, Option1 déclenche aussi l'événement click de sorte qu'il décoche ce qui déclenche l'événement click de nouveau et puis décoche une fois encore, la case à cocher qui, à la fin, nous laisse tout décoché, comme au début. Espérons que cette partie est assez clair.

Comment puis-je éviter ce problème? Comment puis-je vérifier que seul le Changement événement est déclenché et pas l'événement de Clic?

Quelqu'un a déjà eu un tel arrangement de cases à cocher et a eu un problème similaire? Ou comment avez-vous réussi à le faire sans que le comportement que je reçois?

Les cases à cocher ne sont pas sur un formulaire, mais simplement sur une feuille de calcul. Ils sont des contrôles ActiveX. Et ce que j'ai, c'est rien de compliqué:

Private Sub SelectAll_Click()
    Option1Checkbox.Value = SelectAll.Value
    Option2Checkbox.Value = SelectAll.Value
    Option3Checkbox.Value = SelectAll.Value
    Option4Checkbox.Value = SelectAll.Value
End Sub

Ensuite les options de cases à cocher sur les événements ressembler à ceci:

Private Sub Option1Checkbox_Click()
    If Option1Checkbox.Value = True And Option2Checkbox.Value = True And Option3Checkbox.Value = True And Option4Checkbox.Value = True Then
        SelectAll.Value = True
    Else
        SelectAll.Value = False
    End If
End Sub

C'est assez simple, le plus gros problème que je vois est que les appels aux événements de clic lorsque la case n'est pas fait, cliquez.

Merci pour votre aide.

  • +1 je viens de rencontré le même problème de la conception d'un formulaire utilisateur dans Excel.
  • J'ai essayé de désactiver les événements avec Application.EnableEvents = False avant de changer la case de valeur, mais encore, elle a déclenché l'événement Click. Je ne sais pas pourquoi....?
InformationsquelleAutor mikebarrera | 2013-08-08