2009-12-21 8 views
1

Quelqu'un pourrait-il m'expliquer la différence entre la zone de liste déroulante disponible via le Ruban développeur dans Excel 2007 et la commande Zone de liste déroulante dans l'éditeur VBA? Je ne peux pas obtenir cette simple ligne de code pour travailler en utilisant la zone de liste déroulante Développeur:Excel 2007 Combo Box - Module Ribbon du développeur vs. VBA

MsgBox Combo1.Value

Je suis attaché à l'événement de changement et il semble être syntaxiquement correcte (je ne suis pas Codeur VBA par n'importe quel étirement).

La version Developer Ribbon est-elle un raccourci Microsoft fastidieux de Microsoft?

Ce que j'essaie de faire est de remplir une deuxième zone de liste déroulante basée sur la sélection de la première zone de liste déroulante. Je préfère ne pas construire une déclaration de cas pour chaque sélection possible. Est-ce possible en utilisant la version du ruban Developer?

+0

Mettez un arrêt dans le code là, puis mettez une «montre» sur Combo1 et voyez ce que vous voyez. –

+0

Voici mon code entier défini pour l'événement Change: Sous CB_Entity_Change() MsgBox End Sub CB_Entity.Value Ajout de l'arrêt ne change pas le point échec - il arrête juste avec la même erreur, car je J'évalue juste la ligne. – jhc

Répondre

3

Vous parlez du bouton Insérer dans l'onglet Développeur correct? À partir de ce bouton, vous pouvez ajouter un contrôle ActiveX ou un contrôle Form. Il est préférable d'utiliser les contrôles de formulaire si vous êtes novice en programmation, car ils se comporteront mieux en fonction de la lecture d'Excel VBA que vous avez effectuée et du fichier d'aide. Avec les contrôles de formulaire, vous pouvez faire un clic droit et choisir "Afficher le code" et/ou "Renommer le contrôle et le code". Renommer le contrôle vous permet de l'adresser dans VBA comme vous le souhaitez. par exemple. - Combo1.value ou myFavoriteCombo.value

Cela étant dit, pour répondre directement à votre question, assurez-vous de connaître le nom complet des contrôles. Si vous avez utilisé un contrôle de formulaire et qu'il était le premier que vous avez placé sur la feuille, il sera nommé Combo Box 1. Pour accéder aux propriétés de la liste déroulante, vous devez parcourir sa feuille 'parent'.

-à-dire
MsgBox Sheet1.ComboBox1.value (en utilisant le nom de code de feuille)
ou
Worksheets MsgBox ("SheetName"). ComboBox1.Value (en utilisant les feuilles nom tel qu'il apparaît dans l'onglet Excel)

+0

Oui, j'ai utilisé ce bouton pour insérer ma combo. Apparemment, j'ai choisi la version Form Control. Pourquoi y a-t-il des limites entre les deux? Est-ce que l'un est meilleur que l'autre? Et y a-t-il un moyen pour moi de lier deux listes déroulantes basées sur des formulaires afin que la sélection que je fais dans le premier casse la sélection dans l'autre? – jhc

+1

Le code que j'ai posté devrait corriger l'erreur que vous aviez. Si oui, veuillez cocher la case verte pour marquer ceci comme réponse. Voici une explication décente des différences entre les formulaires et les contrôles ActiveX dans Excel. http://peltiertech.com/WordPress/forms-controls-and-activex-controls-in-excel/ Quant à vos autres questions, Google est votre ami. Si vous ne trouvez pas de réponses à l'aide de la recherche, envoyez-en une autre à StackOverflow. – GollyJer

+0

Merci GollyJer. apprécie l'aide. – jhc