Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.05.2024 14:51:38
07.05.2024 13:27:17
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListBox und TextBox

ListBox und TextBox
16.03.2023 18:16:27
Antonio

Hallo Gemeinde,
ich habe eine listbox und ein textbox um die listbox zu filtern
Listbox zum füllen:

Private Sub UserForm_Activate()
Dim iLastRow As Integer
    With Worksheets("Daten")
        iLastRow = .Cells(.Rows.Count, 1).End(xlUp).row
        arrData = .Range(.Cells(2, 1), .Cells(iLastRow, 3)).Value
    End With       
    With ListBox1
'        .ColumnCount = 8
'        .ColumnWidths = "5cm;5cm;4cm;2cm;3cm;1,5cm;2cm;3cm;"
        .ColumnHeads = False
        .List() = arrData
'        .ListIndex = .ListCount - 1
    TextBox1.SetFocus
    End With
  Label1 = ListBox1.ListCount & " Daten "
End Sub

für den Textbox suchen:
Private Sub TextBox1_Change()       'Listbox1 filtern
Dim zeile As Long
Me.ListBox1.Clear
Me.ListBox1.List = arrData
For zeile = Me.ListBox1.ListCount - 1 To 0 Step -1
    If Not LCase(Me.ListBox1.List(zeile, 0)) Like LCase(Me.TextBox1) & "*" Then Me.ListBox1.RemoveItem (zeile)
Next
Label2 = ListBox1.ListCount & " Daten gefunden "
End Sub

Beim Tippen in der TextBox kommt mir vor wie in einer Zeitlupe,
gibt es änderung die ich vornehmen kann um beim tippen schon Ergebnisse zu haben.

LG Antonio

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox und TextBox
16.03.2023 18:26:07
ralf_b
vielleicht ist es nicht so ganz klug bei jeder Textboxänderung erst die Listbox komplett zu füllen und dann noch die Einträge zu filtern.


AW: ListBox und TextBox
16.03.2023 18:34:54
Antonio
Hallo ralf,
schön dich wieder am Bord zu haben,
was schlägst du vor, direkt aus der Taberlle zu filtern?


AW: ListBox und TextBox
16.03.2023 18:37:17
Daniel
HI
vermutlich ist es schneller, wenn du per Schleifen zuerst aus dem alten Array ein neues Array erstellst und dann nur noch das neue Array der Listbox zuweisst anstatt jede Zeile einzeln zu entfernen.

umschaufen müsste so gehen, wenn dich die Leerzeilen am Ende nicht stören:

redim arrGefiltert (1 to Ubound(arrData, 1), 1 to ubound(arrdata, 2))
zG = 1
for zD =1 to ubound(arrdata, 1)
    if arrdata(zD, 1) like Textbox1.Text & "*" then
       for sp = 1 to ubound(arrData, 2)
           arrGefiltert(zG, sp) = arrData(zD, sp)
       next
       zG =zG + 1
    end if
next
listbox1.List = arrGefiltert
der Code ist jetzt nicht getestet, zD und zG sind vom Typ Long

Gruß Daniel


Anzeige
AW:Sehr gut
16.03.2023 18:49:25
Antonio
Hallo Daniel,
der Code ist jetzt nicht getestet
ich habe es getestet und funzt super.
Habe nur noch LCase eingebaut.
Bin davon ausgegangen das "sp" auch von Typ Long ist.
Vielen Dank
Antonio


AW: AW:Eine Frage noch.....
16.03.2023 18:58:39
Antonio
Hallo Daniel,
mein Label2 zeigt mir nicht mehr die Anzahl der Gefundene Daten,
da es sehr viele sind ( SAP, Ecoled, Philipps usw)
wäre schön wenn ich wuste wie viele Daten zum verarbeiten vorhanden sind.
LG Antonio


AW: AW:Mist, ah jooh, wegen den leeren Zeilen
16.03.2023 19:01:20
Antonio
Kann man es umgehen mit
"Used Range"
oder sind die leere Zeilen (auch wenn nicht beschriftet sind)
"Used Range"


Anzeige
AW: AW:Mist, ah jooh, wegen den leeren Zeilen
16.03.2023 19:16:48
Daniel
Wenn du die leeren Zeilen vermeiden willst, musst du das arrGefiltert schon zu beginn gleich auf die richtige Anzahl Zeilen dimensionieren.
die kannst du aber mit Worksheetfunction.Countif(Spalte in der Tabelle, Suchtext mit Joker) schon vorab ermitteln.

ansonsten zeigt dir zG-1 die Anzahl der gefilterten Zeilen.

ein nachträgliches Redimensionieren (Redim Preseve) ist zwar theoretisch denkbar, aber nur für Spalten und nicht für Zeilen möglich, dh hierfür müsste man in der Schleife Zeilen und Spalten tauschen, dann Redimsionieren und vor der Zuweisung an die Listbox noch transponieren., also umständlicher als einmal ZählenWenn anzuwenden.

Gruß Daniel


Anzeige
AW: AW:Frage
16.03.2023 19:24:49
Antonio
mit zG-1 funzt, DANKE
zG hatte ich schon, ohne Erfolg,
bitte erkläre mir, warum -1


AW: AW:Erledigt
16.03.2023 19:31:59
Antonio
Meine Frage, BLODSINN
Danke Daniel
LG Antonio

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige