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

Forumthread: Listbox Change Prozedur

Listbox Change Prozedur
19.09.2016 10:10:38
Thomas
Hallo exelfreunde,
ich habe eine ComboBox1 und eine Listbox (ListBox_ALN) auf einer Userform.
Nach der Auswahl eines Datensatzes in der Combobox werden die dazugehörigen Daten in die Listbox geladen. Dies habe ich auch super im Griff.
nun möchte ich aber gern das immer der erste Datensatz in der Listbox blau markiert wird. Dies mache ich mit:
Me.ListBox_ALN.SetFocus
Me.ListBox_ALN.ListIndex = 0
soweit kappt dies auch. Aber wenn ich in der combobox den Datensatz (ein Namen ) in die Combobox schreibe ( damit ich Ihn schneller finde ) erhalte ich natürlich schon nach dem ersten Buchstaben die Meldung "Kunde hat keine Daten" was ja auch klar ist wenn ich das so Pogrammiere.
Nun zur Frage. kann man diesen Teil des Codes
Private Sub ComboBox1_Change()
If ListBox_ALN.ListCount = 0 Then
MsgBox " Kunde hat keine Daten"
Else
MsgBox "Das ist noch testmodul" '
End If
irgendwie so umschreiben das er nicht sofort ( Change) gestartet wird sondern erst beim 4. Buchstaben? Falls ja kann mir dies jemand zeigen?
gern nehme ich eine komplett andere idee auf.
habt schon mal recht vielen dank für euer interesse
liebe grüsse thomas
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Change Prozedur
19.09.2016 11:42:00
snb
Die Kombination einer Combobox, Listbox und msgbox is sehr überflüssig.
Private Sub ComboBox1_Change()
Listbox_ALN.Listindex=combobox1.listindex
End If

AW: Listbox Change Prozedur
19.09.2016 12:57:13
Thomas
Hallo snb,
dies passt super.
manchmal steht man einfach im wald.
hab recht vielen dank für den tipp
liebe grüsse thomas
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox Change Prozedur in VBA


Schritt-für-Schritt-Anleitung

Um das Verhalten der ComboBox und ListBox in Deiner Userform zu optimieren, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel (ALT + F11).

  2. Wähle die Userform aus, in der sich Deine ComboBox und ListBox befinden.

  3. Füge den folgenden Code in das Code-Fenster der Userform ein:

    Private Sub ComboBox1_Change()
       If Len(ComboBox1.Text) >= 4 Then
           If ListBox_ALN.ListCount = 0 Then
               MsgBox "Kunde hat keine Daten"
           Else
               ' Hier kannst Du die Logik hinzufügen, die bei der Auswahl ausgeführt werden soll
               MsgBox "Das ist noch ein Testmodul"
           End If
       End If
    End Sub
  4. Dieser Code überprüft, ob mindestens vier Zeichen in der ComboBox eingegeben wurden, bevor die Meldung "Kunde hat keine Daten" ausgegeben wird.


Häufige Fehler und Lösungen

  • Fehler: Meldung "Kunde hat keine Daten" erscheint zu früh.

    • Lösung: Stelle sicher, dass die Überprüfung der Zeichenlänge in der ComboBox korrekt implementiert ist (mindestens 4 Zeichen).
  • Fehler: ListBox wird nicht aktualisiert.

    • Lösung: Vergiss nicht, die ListBox mit den entsprechenden Daten zu füllen, nachdem die Auswahl in der ComboBox geändert wurde.

Alternative Methoden

Eine alternative Methode zur Handhabung des Listbox Change Event in VBA ist die Verwendung des AfterUpdate-Ereignisses der ComboBox:

Private Sub ComboBox1_AfterUpdate()
    If ListBox_ALN.ListCount > 0 Then
        ListBox_ALN.ListIndex = 0
    End If
End Sub

Hierbei wird die ListBox aktualisiert, nachdem die Auswahl in der ComboBox abgeschlossen ist.


Praktische Beispiele

Angenommen, Du hast eine ComboBox, in die Du Kundennamen eingibst. Um die ListBox entsprechend zu füllen, könntest Du folgenden Code verwenden:

Private Sub ComboBox1_Change()
    Dim KundenDaten As Collection
    Set KundenDaten = New Collection

    ' Füge hier Daten hinzu (Beispiel)
    KundenDaten.Add "Kunde A"
    KundenDaten.Add "Kunde B"

    ListBox_ALN.Clear

    For Each Kunde In KundenDaten
        ListBox_ALN.AddItem Kunde
    Next Kunde

    If Len(ComboBox1.Text) >= 4 Then
        If ListBox_ALN.ListCount = 0 Then
            MsgBox "Kunde hat keine Daten"
        End If
    End If
End Sub

Tipps für Profis

  • Nutze ListBox und ComboBox effizient, um die Benutzererfahrung zu verbessern.
  • Vermeide unnötige MsgBox-Anzeigen, um die Leistung Deiner Anwendung nicht zu beeinträchtigen.
  • Berücksichtige das Listbox Change Event VBA, um dynamische Interaktionen zu ermöglichen.

FAQ: Häufige Fragen

1. Wie kann ich die ListBox automatisch filtern? Du kannst die ListBox dynamisch aktualisieren, basierend auf den Eingaben in der ComboBox, indem Du die entsprechenden Filterlogiken im Change-Event implementierst.

2. Kann ich mehrere ListBoxen gleichzeitig aktualisieren? Ja, Du kannst innerhalb des ComboBox-Change-Events mehrere ListBoxen ansprechen und ihre Inhalte entsprechend anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige