La détection des changements de cases à cocher via VBA
Suite à ma question précédente.
Une exigence du client est d'avoir des cases à cocher dans un rapport pour désactiver les lignes d'informations sur une autre feuille. Les lignes sont définies comme des plages nommées, formaté par P_XXXXXX. Le XXXXXX est un identifiant unique qui est aussi un champ sur la ligne, donc je peux facilement générer les noms de plage à la volée.
Le problème que j'ai est:
- Après avoir cliqué sur les postes et la fermeture de la forme Excel demande si nous voulons sauver. C'est undersirable.
J'ai besoin d'une certaine manière de l'enregistrement d'un événement de changement qui se passe sur mon généré des cases à cocher. Donc, si une ou plusieurs modifications, je peux courir à travers et hide/unhide pertinentes plages.
Mon code pour ajouter les cases à cocher ressemble:
' For each row...
' check box in column 17(=Q).
Dim lCenter As Long
lCenter = rngCurrent.Width / 4 ' not actual centre but close enough
With ActiveSheet.CheckBoxes.Add(rngCurrent.Left + lCenter, rngCurrent.Top - 2, rngCurrent.Width, rngCurrent.Height)
.Interior.ColorIndex = xlNone
.Caption = ""
End With
Alors, comment faites-vous le lien d'un changement dans une case avec un sub/function?
Vous devez vous connecter pour publier un commentaire.
Définir la propriété OnAction Cases en objet le nom d'un sous vous souhaitez exécuter chaque fois que la case est cochée ou décochée.
Je ne pense pas qu'il y a des événements disponibles avec Excel.Contrôle de case à cocher. Essayez d'utiliser le MSForms case à cocher à la place. Vous aurez besoin d'une référence à "Microsoft Forms 2.0 Object Library" - ce n'est pas redistributeable, mais si vous êtes à l'aide de VBA, alors que c'est bien.
Vous pouvez faire quelque chose comme ça, et gérer l'événement de la manière habituelle:
Évidemment, vous aurez seulement être capable de gérer un nombre de cases à cocher de cette façon - je recommande la création d'une classe à tenir chaque case.