Excel VBA ComboBox-Identifizierung

8

Ich habe 4+ ComboBoxes auf einem Benutzerformular. Wenn sie feuern, feuern sie dasselbe Ereignis ab. Ich versuche herauszufinden, welche ComboBox das Ereignis ausgelöst hat. Die ComboBoxen werden abhängig davon erstellt, wie viele Komponenten vorhanden sind. Der Code, der die ComboBoxes erzeugt, ist unten gezeigt:

%Vor%

Das funktioniert gut und ich kann den Wert, den der Benutzer ausgewählt hat, abrufen, ABER ich kann nicht herausfinden, welche ComboBox verwendet wurde. Dieser Code ist das Ereignis, das ausgelöst wird ( clsButton ):

%Vor%

Dieser Code oben wurde freundlicherweise von Doug Glancy bearbeitet, um die Ereignisse mit den Code-generierten ComboBoxen zu arbeiten.

Wie bekomme ich die ComboBox, die das Ereignis ausgelöst hat? d.h. der Name oder eine andere Form der Identifikation.

    
NoLiver92 22.03.2013, 10:23
quelle

4 Antworten

4

Innerhalb der Klasse wird .Name nicht in der Intellisense-Liste für die Combobox angezeigt, da MSForms.ComboBox tatsächlich keine name-Eigenschaft besitzt (siehe im F2-Objektbrowser), sondern diese Eigenschaft wird von Die Basisklasse Control :

%Vor%     
Alex K. 22.03.2013, 11:35
quelle
5

Ich habe es geschafft, meine eigene Frage zu beantworten, nachdem ich über 500 Webseiten durchsucht hatte (dauerte lange)

das ist was ich benutzt habe und es funktioniert und wird ausgelöst, wenn auf die entsprechenden Comboboxen geklickt wird:

%Vor%

hoffentlich kann dies für andere Leute verwendet werden, die es brauchen.

    
NoLiver92 22.03.2013 11:36
quelle
2

Vielleicht nochmal auf btn.Combobox zurück? Ähnlich wie Sie die Combobox an erster Stelle der Schaltfläche zugewiesen haben, dann aber umgekehrt:

%Vor%     
K_B 22.03.2013 10:43
quelle
0

Gibt es einen Grund, warum Sie Ihrer benutzerdefinierten Klasse nicht einfach eine Eigenschaft hinzufügen und diese Eigenschaft festlegen, wenn Sie sich in der Sammlung registrieren?

%Vor%

Klassenmodul

%Vor%

Da Sie viele bis eine Zuordnung der Ereignisse benötigen, nehme ich an, Sie haben einen gemeinsamen Rückruf in Ihrem tatsächlichen Code, so dass Sie dies auch tun könnten ...

In einem Standardmodul

%Vor%

In clsButton (ersetzt den Event-Handler)

%Vor%     
Cool Blue 31.12.2013 00:08
quelle

Tags und Links