Détecter si une Forme de Contrôle bouton d'option est sélectionnée en VBA
J'ai un code qui fonctionne très bien à l'aide d'ActiveX boutons d'option. Cependant, je veux que la macro à exécuter sur un Mac, donc je cherche à remplacer mon contrôles ActiveX avec les contrôles de formulaire. Avec ActiveX, tout ce que j'avais à faire pour vérifier si l'un de mes deux boutons d'option a été choisi est:
Sub OptionButton1_Click
If OptionButton1.Value = true then
(action...)
End if
End sub
J'ai essayé de trouver un équivalent pour les Contrôles de Formulaire sur Google, mais chaque fois que je reçois un:
Objet requis erreur
Merci beaucoup pour vos réponses @L42 et @Sai Nishank! Maintenant, si je veux vérifier dans un OptionButton_Click si un bouton d'option à partir d'un autre groupe qui est vrai ? J'ai essayé cette syntaxe, mais je reçois un message d'erreur : "erreur de Compilation de Méthode ou de Données introuvable"
Sub USDButton_Click()
MsgBox "USD"
If Sheet1.BTUButton = True Then
(action1)
End If
If Sheet1.kWhButton = True Then
(action2)
End If
Je ne suis pas sûr si BTUButton est le nom correct de la touche, mais je ne sais pas où vérifier, les contrôles de formulaire n'avez pas à portée de main "Clic Droit > Propriétés" comme ActiveX
pouvez-vous me dire si ur de la création de tout dans un userform ou ur à l'aide de contrôles de formulaire dans la feuille excel
Je suis à l'aide de contrôles de formulaire dans un fichier excel. Les deux de vos réponses et L42 m'a aidé à comprendre, merci !
OriginalL'auteur Ettelaiv | 2015-06-05
Vous devez vous connecter pour publier un commentaire.
Vous devez supprimer
.Value
de tous les boutons d'option parce que les boutons d'option à ne pas retenir la valeur résultante, l'option de contrôle du groupe. Si vous omettez.Value
alors la valeur par défaut de l'interface de rapport sur le bouton d'option d'état, que vous attendez. Vous devez écrire tous les code sous commandbutton_click événements, car à chaque fois que le bouton est cliqué sur le bouton d'option d'action sera exécuté.Si vous souhaitez exécuter le code d'une action lorsque l'option est cliqué, puis ne pas écrire une boucle pour que.
EXEMPLE:
OriginalL'auteur Nishank
Si vous utilisez un
Form Control
, vous pouvez obtenir la même propriété queActiveX
en utilisantOLEFormat.Object
propriété de laShape Object
. Mieux encore, l'affecter à une variable déclarée comme OptionButton pour obtenir le Intellisense coup de pied dans.Mais là encore, vous n'avez pas vraiment besoin de connaître la valeur.
Si vous utilisez
Form Control
, vous associez unMacro
ou sous-routine avec elle qui est exécuté quand il est sélectionné. Donc, vous avez juste besoin de mettre en place une sous-routine qui identifie le bouton qui a été cliqué, puis d'exécuter une action correspondante.Par exemple, vous avez 2
Form Control
Boutons d'Option.Dans le code ci-dessus, vous n'avez qu'une sous-routine attribué à deux boutons d'option.
Ensuite vous testez, qui appelle la sous-routine en cochant
Application.Caller
.De cette façon, pas besoin de vérifier si le bouton d'option valeur est true ou false.
Sub USDButton_Click() MsgBox "USD" If Sheet1.BTUButton = True Then (action1) End If If Sheet1.kWhButton = True Then (action2) End If
Quel genre de message d'erreur que vous obtenez lorsque vous cliquez sur le bouton de commande.
"Erreur de compilation de Méthode ou de Données introuvable", j'ai édité ma question d'origine avec plus de détails si vous voulez prendre un coup d'oeil. Merci @Sai Nishank!!
À l'aide de
If ActiveSheet.Shapes("Option4").OLEFormat.Object.Value = 1 Then 'Range("B39").Value = "what I want to set this cell to" End If
travaillera également en pré-2010 version Excel 2007 VBA macro scripts - versions antérieures ne prennent pas en charge le raccourciOption4.Value = True
qui est mentionné partout. M'a pris des heures pour trouver ce post, merci @L42.OriginalL'auteur L42