vba obtenir de vrais bouton radio val de groupe
Dans Excel VBA:
Je suis en création d'un formulaire. Ce formulaire a plusieurs stations de radio bouton de groupes, dont certains ont de nombreuses options (mais un seul bouton radio peut être vrai par groupe). Je voudrais être en mesure d'obtenir le nom de la case d'option qui est "vrai" par groupe, au lieu d'avoir à vérifier chaque bouton radio.
Par exemple:
DE LA FAMILLE D'UN
- Option1 - F
- Option2 - T
DE LA FAMILLE B
- Option11 - F
- Option12 - F
- Option13 - F
- Option14 - F
- Option15 - T
Ce que j'ai à faire:
- Est Option1 Vrai?
- Est Option2 Vrai? (oui... si Option2 pour Une Famille)
- Est Option11 Vrai?
- Est Option12 Vrai?
- Est Option13 Vrai?
- Est Option14 Vrai?
- Est Option15 Vrai? (oui... si Option15 pour la Famille B)
Ce que je voudrais faire:
- Ce bouton est Vrai pour Une Famille? (Option2)
- Ce bouton est Vrai pour la Famille B? (Option15)
Est-ce possible?
Merci pour regarder!
EDIT:
Solution! Basé sur David conseils ci-dessous:
Dim ctrl As MSForms.Control
Dim dict(5, 1)
Dim i
'## Iterate the controls, and associates the GroupName to the Button.Name that's true.
For Each ctrl In Me.Controls
If TypeName(ctrl) = "OptionButton" Then
If ctrl.Value = True Then
dict(i, 0) = ctrl.GroupName
dict(i, 1) = ctrl.Name
i = i + 1
End If
End If
eh bien, comment pouvez-vous définir les groupes et les familles? Les boutons à l'intérieur de Cadres? Comment feriez-vous pour savoir quand un groupe commence et se termine? Il n'est pas possible d'atteindre cet objectif sans une sorte d'itération ou sans une variable supplémentaire pour stocker les
Le groupe/nom de famille est une propriété appelée GroupName. il définit tous à être le même groupe par défaut, mais vous pouvez modifier cette propriété pour créer de nouvelles familles. Donc, chaque composant radiobutton sait à quel groupe il appartient, car il a sauvé dans la propriété GroupName.
Boutons à l'intérieur de cadres semblent être un beaucoup plus fiable que la propriété GroupName. Dans tous les cas, vous êtes certainement allez avoir à parcourir chaque groupe dans un
Je pensais à une classe (Liste) qui stocke tous les vrais ceux-là, car il ne peut être une vraie famille, vous avez seulement besoin de stocker de la famille et il est courant de vraie valeur. Ce serait seulement besoin d'autant d'itération que la liste est longue = nombre de familles.
true
boutons de nom en tout temps.Le groupe/nom de famille est une propriété appelée GroupName. il définit tous à être le même groupe par défaut, mais vous pouvez modifier cette propriété pour créer de nouvelles familles. Donc, chaque composant radiobutton sait à quel groupe il appartient, car il a sauvé dans la propriété GroupName.
Boutons à l'intérieur de cadres semblent être un beaucoup plus fiable que la propriété GroupName. Dans tous les cas, vous êtes certainement allez avoir à parcourir chaque groupe dans un
For...Next
boucle, avec un Exit For
instruction lorsque la True
est trouvé. Ce n'est pas particulièrement compliqué. Je vais voir si je peux imaginer quelque chose qui pourrait être plus facile avec votre set-up.Je pensais à une classe (Liste) qui stocke tous les vrais ceux-là, car il ne peut être une vraie famille, vous avez seulement besoin de stocker de la famille et il est courant de vraie valeur. Ce serait seulement besoin d'autant d'itération que la liste est longue = nombre de familles.
OriginalL'auteur Amit Kohli | 2014-03-31
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela semble fonctionner. J'ai mis cela dans un gestionnaire d'événement click du bouton de commande, mais vous pouvez le mettre n'importe où.
OriginalL'auteur David Zemens
Si vous ne voulez pas construire un dictionnaire, cette obtiendrez le bouton d'option sélectionné pour un groupe. La propriété .Les contrôles dans l'acceptation de réponse ne semble pas exister dans Excel 2010.
OriginalL'auteur Jbjstam