Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ereignis bei Auswahl in ComboBox

Ereignis bei Auswahl in ComboBox
Frank
Hallo,
ich habe eine UserForm mit einer ComboBox, die eine einfache Liste als Drop-down enthält.

Dazu 2 kleine Fragen an die Experten:
:-)
1) Gibt es eine Möglichkeit, bei Auswahl eines Begriffs im Drop-down der ComboBox ein Ereignis auszulösen ?
Das Ereignis soll dabei für alle Begriffe der Liste gleichermaßen gelten, d.h. es soll immer ausgelöst werden, wenn ein Begriff ausgewählt wird, egal welcher das ist.
2) Beim Springen mittels Tab-Taste in eine TextBox (UserForm) wird bei mir immer der ganze Inhalt der TextBox markiert.
Gibt es einen Weg, dass beim Springen in die TextBox der Cursor immer automatisch ans Ende des Textes in der Box gesetzt wird ?
VG und vielen Dank Euch im Voraus für jede Hilfe !
Frank
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 13:50:08
Nepumuk
Hallo,
1. Private Sub ComboBox1_Change()
2. Ändere die EnterFieldBehavior-Eigenschaft auf 1 - fmEnterFieldBehaviorRecallSelection
Gruß
Nepumuk
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 14:15:41
Frank
Hallo Nepumuk,
vielen Dank für Deine Antwort !
zu 1) Klappt bestens.
zu 2) Klappt leider nicht bzw. das hatte ich schon, es bewirkt aber keine Änderung bei mir.
Sobald ich einen Eintrag auswähle, wird immer der ganze Begriff markiert.
Kann das daran liegen, dass mein erster Eintrag in der Liste Leerzeichen am Anfang enthält und falls ja, gibt es hier eine Alternative ?
VG,
Frank
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 14:29:00
Nepumuk
Hallo,
die Eigenschaft bestimmt dass die letze Auswahl wiederhergestellt wird. Wenn natürlich zuletzt der ganze Text markiert war dann wird diese Markierung wiederhergestellt. Du kannst es aber auch per Code lösen:
Private Sub TextBox1_Enter()
    With TextBox1
        .SelStart = .TextLength
    End With
End Sub

Private Sub TextBox2_Enter()
    With TextBox2
        .SelStart = .TextLength
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 14:43:04
Frank
Hallo Nepumuk,
vielen Dank nochmal !
Es tut mir leid aber auch das klappt nicht oder muss ich nach TextLength noch eine 0 etc. eingeben ?
Vielleicht habe ich es auch falsch beschrieben:
Ich klicke mit der Maus auf einen Eintrag in der Drop-down-Liste.
Wenn dieser Eintrag nun ausgewählt ist, soll er nicht markiert werden, sondern statt dessen der Cursor entweder am Anfang oder am Ende des ausgewählten Eintrags (das ist egal) stehen.
Hast Du vielleicht noch eine Idee dazu ?
VG,
Frank
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 15:05:49
Nepumuk
Hallo,
wie wählst du aus einer Textbox was aus? Bzw. seit wann gibt es eine Dropdown-Liste in einer Textbox?
Gruß
Nepumuk
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 15:11:00
Frank
Hallo Nepumuk,
es ist eine ComboBox, zumindest hast das bei meinem englischen Excel so, also eine Box mit einem kleinen Pfeil, der beim Anklicken eine Liste als Dropdown nach unten öffnet.
In der Dropdown kann man Einträge durch Anklicken auswählen, die dann in der eigentlichen Box erscheinen.
Bei mir ist das Standard in der UserForm-ToolBox.
VG,
Frank
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 15:25:39
Nepumuk
Hallo,
2) Beim Springen mittels Tab-Taste in eine TextBox (UserForm) wird bei mir immer der  _
ganze Inhalt der TextBox markiert.
Gibt es einen Weg, dass beim Springen in die TextBox der Cursor immer automatisch ans Ende des Textes in der Box gesetzt wird ?
Also doch keine Textbox?
Bei einer Combobox wird es schwierig. Da müsste nach den Chage-Event ein Timer gestartet werden den sagen wir mal 10 Millisekunden später die Cursor-Position setzt. Denn der Change-Event ist in dem Moment durchgelaufen in dem du auf einen Eintrag in der Liste geklickt hast.
Gruß
Nepumuk
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 15:30:58
Frank
Hallo Nepumuk,
vielen Dank und sorry, da war ich wohl in der ersten Email ein bisschen zu schnell.
Das hilft mir schonmal weiter - jetzt muss ich mal ein bisschen herumprobieren. :-)
Ich hätte aber noch eine kleine andere Frage - vielleicht hast Du da ja auch eine Idee dazu:
Ich habe bei zwei ComboBoxen ein Sub für das Enter-Ereignis erstellt, damit beim Springen zu den Boxen mittels Tab automatisch die Drop-downs nach unten geöffent werden.
Das komische ist, das funktioniert super, solange sich irgend etwas zwischen den ComboBoxen befindet, sobald ich sie jedoch hintereinander setze, funktioniert es nur noch bei der ersten.
Weisst Du vielleicht, woran das liegen könnte oder wie man es umgeht ?
Private Sub ComboBox71_Enter()
ComboBox71.DropDown
End Sub
Private Sub ComboBox72_Enter()
ComboBox72.DropDown
End Sub
VG,
Frank
Anzeige
AW: Ereignis bei Auswahl in ComboBox
24.07.2012 15:49:51
Nepumuk
Hallo,
ich kann dir sagen warum es nicht funktioniert: Weil beim Enter der anderen Box die Liste der einen durch die DropDown-Methode der anderen erst eingeklappt werden muss. Es kann immer nur eine Liste sichtbar sein. Aber eine Lösung hab ich keine. Warum benutzt du nicht Listboxen wenn die Auswahl sowieso immer offen sein soll?
Was soll eigentlich das ganze bewirken? Der User hat ein Formular vor sich was völlig anders reagiert wie die Standards in Windows. Da klappt in keinem einzigen Programm ein Combobox von selber auf und wieder zu. Das ist doch SchnickSchnak und kunterbunt wahrscheinlich dazu.
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ereignis bei Auswahl in ComboBox


Schritt-für-Schritt-Anleitung

Um ein Ereignis bei der Auswahl eines Eintrags in einer ComboBox in Excel VBA auszulösen, kannst du den Change-Event der ComboBox nutzen. Hier ist, wie du es machst:

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge eine UserForm hinzu, wenn du noch keine hast.
  3. Füge eine ComboBox zu deiner UserForm hinzu.
  4. Klicke doppelt auf die ComboBox, um das Codefenster zu öffnen.
  5. Füge den folgenden Code ein:

    Private Sub ComboBox1_Change()
       ' Dein Code für das Ereignis
       MsgBox "Du hast " & ComboBox1.Value & " ausgewählt."
    End Sub

Dieser Code zeigt eine Nachricht an, wenn ein Eintrag in der ComboBox ausgewählt wird. Du kannst den Code nach deinen Bedürfnissen anpassen.


Häufige Fehler und Lösungen

  • Problem: Der gesamte Text in einer TextBox wird markiert, wenn du die ComboBox verlässt.

    • Lösung: Verwende den Enter-Event der TextBox, um den Cursor ans Ende zu setzen:
    
    Private Sub TextBox1_Enter()
        With TextBox1
            .SelStart = Len(.Text) ' Cursor ans Ende setzen
        End With
    End Sub
  • Problem: Der Change-Event wird nicht ausgelöst, wenn kein Eintrag ausgewählt wird.

    • Lösung: Stelle sicher, dass die ComboBox nicht leer ist, bevor der Change-Event ausgeführt wird.

Alternative Methoden

Wenn du eine Dropdown-Liste haben möchtest, die immer sichtbar ist, kannst du anstelle einer ComboBox eine ListBox verwenden. Das hat den Vorteil, dass der Benutzer sofort alle Optionen sieht, ohne die Dropdown-Liste öffnen zu müssen.

Hier ein Beispiel, wie du eine ListBox verwenden kannst:

Private Sub ListBox1_Click()
    MsgBox "Du hast " & ListBox1.Value & " ausgewählt."
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele für den ComboBox Change Event:

  1. Dynamische Inhalte basierend auf der Auswahl:

    Private Sub ComboBox1_Change()
       If ComboBox1.Value = "Option 1" Then
           TextBox1.Text = "Du hast Option 1 gewählt."
       Else
           TextBox1.Text = "Du hast eine andere Option gewählt."
       End If
    End Sub
  2. Öffnen einer Dropdown-Liste beim Fokussieren:

    Private Sub ComboBox1_Enter()
       ComboBox1.DropDown
    End Sub

Tipps für Profis

  • Nutze verschiedene VBA ComboBox Events, um die Benutzererfahrung zu optimieren.
  • Ketten von If-Bedingungen können helfen, unterschiedliche Aktionen basierend auf der Auswahl auszuführen.
  • Überlege dir, wie Benutzer mit deinem Formular interagieren. Manchmal kann das Verhalten von Standard-Controls wie ComboBoxes verwirrend sein.

FAQ: Häufige Fragen

1. Wie kann ich den Inhalt einer ComboBox dynamisch ändern?
Du kannst den Inhalt einer ComboBox mit der AddItem-Methode ändern:

ComboBox1.AddItem "Neuer Eintrag"

2. Was ist der Unterschied zwischen ComboBox und ListBox?
Eine ComboBox zeigt eine Dropdown-Liste an, während eine ListBox mehrere Einträge gleichzeitig anzeigt, die der Benutzer auswählen kann.

3. Wie kann ich den ComboBox Change Event in Excel VBA verwenden?
Der ComboBox Change Event wird ausgelöst, wenn der Benutzer einen neuen Wert auswählt. Du kannst ihn verwenden, um Aktionen basierend auf der Auswahl auszuführen.

4. Was ist die beste Methode, um sicherzustellen, dass der Benutzer eine gültige Auswahl trifft?
Verwende den ComboBox Change Event zusammen mit Validierungslogik, um sicherzustellen, dass die Auswahl gültig ist, bevor du weitere Schritte unternimmst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige