ListBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
Bild

Betrifft: ListBox
von: Go too
Geschrieben am: 28.10.2015 22:58:06

Hallo zusammen,
ich möchte gerne in einer ListBox mir nur die Daten anzeigen lassen, die in Spalte B einen bestimmten Begriff haben.
Also: Listbox = Daten aus Spalte A nur dann anzeigen, wenn in Spalte B die Zahl 1 steht.
Danke schon mal im Voraus für die Hilfe.

Bild

Betrifft: eine Variante ist: AddItem ...
von: Matthias L
Geschrieben am: 29.10.2015 00:25:44
Hallo
https://www.herber.de/bbs/user/101112.xlsm
Gruß Matthias

Bild

Betrifft: AW: eine Variante ist: AddItem ...
von: Beverly
Geschrieben am: 29.10.2015 08:10:03
Hi,
den Code könnte man noch etwas schneller machen, wenn man nicht jede Zeile durchläuft sondern mittels der FindNext-Methode nur die relevanten Treffer sucht:

Private Sub UserForm_Activate()
    Dim rngZelle As Range
    Dim strStart As String
    Dim lngLetzte As Long
    ' letzte belegte Zeile in Spalte A ermitteln
    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
        Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
    ' in Spalte B nach 1 suchen, dabei nach der letzten belegten Zeile beginnen
    Set rngZelle = Columns(2).Find(1, lookat:=xlWhole, after:=Cells(lngLetzte, 2))
    ' 1 wurde gefunden
    If Not rngZelle Is Nothing Then
        ' Adresse der gefundenen Zelle auf die Variable schreiben
        ' ist erforderlich, damit die Suchschleife verlassen werden kann, wenn die
        ' erste gefundene Zelle erneut gefunden und die Schleife nicht endlos läuft
        strStart = rngZelle.Address
        ' Schuchschleife
        Do
            ' Zelle links von der gefundenen Zelle in die ListBox schreiben
            ListBox1.AddItem rngZelle.Offset(0, -1)
            ' nächsten Treffer suchen
            Set rngZelle = Columns(2).FindNext(rngZelle)
        ' Schleife so lange durchlaufen bis 1 nicht mehr gefunden wird und
        ' die Adresse der gefundenen Zelle <> von der Startadresse ist
        Loop While Not rngZelle Is Nothing And strStart <> rngZelle.Address
    End If
End Sub



Bild

Betrifft: Not rngZelle Is Nothing ...
von: Rudi Maintaire
Geschrieben am: 29.10.2015 09:32:56
Hallo Karin,
... ist überflüssig!
Die Schleife wird ja nur ausgeführt, wenn rngZelle nicht Nothing ist. Somit kann rngZelle auch nie Nothing werden, sondern nur zur ersten Fundzelle.
Loop While strStart <> rngZelle.Address
reicht völlig.
Wahrscheinlich stammt die Abbruchbedingung aus der VBA-Hilfe und wird seit Jahrzehnten kritiklos übernommen.
Gruß
Rudi

Bild

Betrifft: Danke für den Hinweis - o.w.T.
von: Beverly
Geschrieben am: 29.10.2015 16:32:26




 Bild

Beiträge aus den Excel-Beispielen zum Thema "ListBox"