Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

Mehrspaltige Listbox filtern

Mehrspaltige Listbox filtern
15.07.2022 17:52:59
Tim
Hallo zusammen,
ich habe bereits das Forum durchforstet, jedoch scheitere ich an meinem Vorhaben.
Mein Ziel ist es, Listbox-Einträge mittels einer ComboBox zu Filtern.
Heißt, in der ComboBox soll man einen Namen auswählen können, welcher sich in der ersten Spalte der Listbox befindet, anschließend soll man nur noch diese Einträge (alle Spalten) sehen und bearbeiten können.
Leert man anschließend die Combobox, sollen alle Einträge wieder sichtbar sein.
Befüllt wird die Listbox über .AddItem
Alles was ich dazu bisher gefunden habe, funktioniert nur bedingt.
Folgendes ist ein Schnipsel scheint offensichtlich den Namen zu filtern, jedoch fehlen mir anschließend alle weiteren Spalteneinträge, zudem passiert nichts, wenn ich die ComboBox leere.

Wer kann mir dabei helfen?

Private Sub Mitarbeiter_Change()
Dim arr() As Variant
Dim i As Integer
ReDim arr(0 To Übersicht.ListCount - 1)
For i = 0 To Übersicht.ListCount - 1
arr(i) = Übersicht.List(i)
Next i
Übersicht.List = Filter(arr, Mitarbeiter.Value)
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrspaltige Listbox filtern
15.07.2022 20:17:37
ralf_b
Was davon ist denn die Combobox und was die Listbox. Naja egal. Es gib ja solche Lösungen nicht im Netz. Irgendwer hat wohl neulich einen Löschbutton fürs Internet gedrückt und diese zig Tausenden Lösungen entfernt. Darunter auch ein paar von mir.
Du mußt die Listbox immer neu füllen. Je nach Comboboxwert.
Je nachdem wie du das machst und wie groß die Datenmenge ist, merkst du das kaum beim Ablauf oder halt ein wenig.
Das Listboxfüllen benötigt nur eine Abfrage ob der Wert in Combobox gleich dem Wert der Listboxspalte 1 ist und fertig. Also vor dem Aditem.
Alternativ gehts auch rückwärts. Wenn die Listbox gefüllt ist und beim Change der Combobox, wird jeder Wert der Listboxspalte 1 geprüft und aus Selbiger per Remove entfernt. Diese Schleife muß dann aber von max index zu min index laufen.
Anzeige
Ich habe einen Problem mit meinem Auto...
15.07.2022 20:17:44
Yal
... hier zeig' ich euch eine Schraube davon.
Am Besten die ganze Datei zeigen. Bereinigt deine Datei von alles, was nicht im Netz gehört und poste sie über "Zum File-Upload".
Alles anderes ist "wenn es so ist, dass ... dann... aber falls... dann..."
VG
Yal
AW: Mehrspaltige Listbox filtern
15.07.2022 20:20:08
Alwin
Hallo Tim,
da du keine Datei hochgeladen hast, habe ich mal eine Suche in den Spalten 1 bis 4 zurechtgebastelt.

Private Sub Textbox1_Change()
Dim zeile As Long, i As Integer, z As Integer, arrdata()
Call ListboxLaden 'Prozeduraufruf
arrdata = ListBox1.List
Me.ListBox1.Clear
Me.ListBox1.List = arrdata
For zeile = Me.ListBox1.ListCount - 1 To 0 Step -1
With ListBox1
If .List(zeile, 1) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 2) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 3) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 4) Like "*" & Me.Txt_Search1 & "*" Then
Else
ListBox1.RemoveItem (zeile)
End If
End With
Next
End Sub
Wichtig, du musst das Laden der Lisstbox in eine eigenständige Prozedur schreiben, welche im Initialize und dann auch hier in Zeile 5 entsprechend umbenannt/angepasst aufgerufen werden kann.
Gruß Uwe
Anzeige
AW: Mehrspaltige Listbox filtern
16.07.2022 11:50:51
Yal
Hallo Uwe,
vielleicht gibt es hier eine versteckte Mehrwert, aber ich komme nicht drauf.
Was soll der Zweck folgender Pirouette?

	arrdata = ListBox1.List
Me.ListBox1.Clear
Me.ListBox1.List = arrdata
VG
Yal
AW: Mehrspaltige Listbox filtern
16.07.2022 15:45:28
Alwin
Hallo Yal,
du hast natürlich recht. Die 2 Zeilen:

Me.ListBox1.Clear
Me.ListBox1.List = arrdata
hatte ich vergessen rauszunehmen. Das war aus einem ersten Versuch beim drauflos schreiben übriggeblieben.
Asche auf mein graues Haupt.
so sollte es sinvoll sein:

Private Sub Textbox1_Change()
Dim zeile As Long, i As Integer, z As Integer, arrdata()
Call ListboxLaden 'Prozeduraufruf
arrdata = ListBox1.List
For zeile = Me.ListBox1.ListCount - 1 To 0 Step -1
With ListBox1
If .List(zeile, 1) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 2) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 3) Like "*" & Me.Txt_Search1 & "*" _
Or .List(zeile, 4) Like "*" & Me.Txt_Search1 & "*" Then
Else
ListBox1.RemoveItem (zeile)
End If
End With
Next
End Sub
Gruß Uwe
Anzeige
AW: Mehrspaltige Listbox filtern
16.07.2022 15:52:17
ralf_b
und wofür ist das arrdata nun?
AW: Mehrspaltige Listbox filtern
16.07.2022 20:27:06
Alwin
Hallo Ralf,
ich muss wohl doch mal ne Weile was anderes machen als das. Natürlich ist das Array auch nutzlos.
Gruß Uwe
AW: Mehrspaltige Listbox filtern
18.07.2022 13:21:08
Tim
Danke euch allen, ich habe eine Lösung dafür!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige