Anzeige
Archiv - Navigation
1892to1896
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 Filter nach Jahr

Listbox Filter nach Jahr
30.07.2022 16:26:29
Henry
Hallo liebes Forum,
ich habe eine Userform mit eine Listbox. Die Listbox bekommt ihre Daten aus dem Sheet "overview".
Die Daten in der Tabelle overview werden stetig aufgebaut. Das heißt, dass immer weitere Zeilen hinzukommen.
Zu meinem Problem:
Ich würde gerne eine Kombobox erstellen, mit der ich nach einem Jahr in der Listbox filtern kann.
Es sollen in der Kombobox nur die Jahre stehen, die auch in der Listbox enthalten sind.
Wenn ich in der Kombobox zum Beispiel das Jahr 2022 auswähle, dann sollen alle Zeilen mit dem Jahr 2022 angezeigt werden.
Meine Tabelle, auf die sich die Listbox bezieht hat 6 Spalten, das Jahr steht in der Spalte 6.
Kann mir hier vielleicht jemand helfen?

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte Beispielmappe hochladen - o.w.T.
30.07.2022 16:58:03
Beverly
Bis später
Karin

Lösungsvorschlag
30.07.2022 19:14:42
Beverly
Hi Henry,
wenn die ListBox die "gefilterten" Inhalte anzeigen soll, geht das nicht durch Verwendung der Eigenschaft RowSource - das ist nur möglich wenn es sich um einen durchgehenden Zeilen-Bereich handelt. Das bedeutet jedoch, dass die ListBox keine Spaltenüberschriften haben kann. Verwende doch einfach Labels oberhalb der ListBox, in die du die Spaltenüberschriften einträgst - dann sind sie sowohl bei der kompletten Liste als auch bei der gefilterten Liste sichtbar.
Um die Daten aus Spalte F ohne Duplikate in die ComboBox einlesen zu können, kann man z.B. ein Dictionary-Object verwenden. Dabei läuft man in einer Schleife über alle Zellen und prüft, ob der Inhalt der laufenden Zelle schon im Dictionary vorhanden ist und wenn nicht, nur dann einlesen. Den Inhalt des Dictionarys übergibt man am Ende dann an die ComboBox-Liste.
Wenn in der ComboBox dann etwas ausgewählt wird, wird die RowSource der ListBox per Code gelöscht und stattdessen in einer Schleife über alle Zeilen gelaufen, geprüft ob Spalte F mit der ComboBox-Auswahl übereinstimmt und wenn ja, werden die Daten der ListBox zugewiesen. Wird in der ComboBox nichts ausgewählt, bleibt die RowSource erhalten bzw. wird dann neu zugwiesen.
https://www.herber.de/bbs/user/154445.xlsm
Ich habe die ListBox mal um 1 Spalte erweitert - deren Breite auf 0 gesetzt, sodass sie nicht dargestellt wird. In diese Spalte wird beim "Filtern" die laufende Zeile eingetragen - falls du die Daten nämlich weiter verwenden willst, kannst du anhand dieser Sptalte dann ganz einfach feststellen, in welcher Zeile sich die betreffenden Daten befinden.
Im Code habe ich einige Kommentare eingetragen - vielleicht ist dann besser ersichtlich, was abläuft. Und wenn du Fragen zum Code hast - einfach nachfragen.
Bis später
Karin

Anzeige
AW: Lösungsvorschlag
30.07.2022 20:11:16
christian
Hey Beverly,
ich habe mir deine Datei auch mal angeschaut, da ich was ähnliches suche.
In der Listbox verschwindet leider die Überschriften, wenn man ein Jahr auswählt.
Gruß Christian
AW: Lösungsvorschlag
30.07.2022 20:14:43
Beverly
Hi Christian,
wenn du meinen Beitrag - und zwar konkret den 1. Abschnitt - richtig gelesen hättest, wüsstest du auch, weshalb das der Fall ist. Ich hatte außerdem geschrieben, was man dagegen tun kann.
Bis später
Karin

AW: Lösungsvorschlag
30.07.2022 20:16:31
christian
ohje, ja wer lesen kann ist klar im Vorteil :D
Entschuldigung
Gruß
Zweite Listbox besser als Labels
30.07.2022 22:06:56
Daniel
Besser als Labels finde ich eine zweite Listbox, die nur eine Zeile enthält und in der die Überschriften stehen.
der Vorteil der zweiten Listbox als Überschrift ist, dass wesentlich einfacher und vorallem auch automatisiert die Überschriften an die Haupt-Listbox anpassen kann.
man muss nur die ColumnWidth der Hauptlistbox in die ColumnWidth der Überschriftenlistbox kopieren.
Auch die Texte kann man direkt aus der Tabelle lesen.
bei Labels muss von Hand die Labels im Editor richtig platzieren und das bei jeder Änderung neu anpassen.
wenn die Listbox aber so groß ist, dass horizontal gescrollt werden muss und die Überschriften mitscollen sollen, dann geht das nur mit RowSource und aktivierten Headern.
Gruß Daniel
Anzeige
AW: Listbox Filter nach Jahr
30.07.2022 22:00:46
Daniel
Hi
wenn dir die Spaltenüberschriften in dieser Form wichtig sind, geht es nur so, dass du die Zeilen, die angezeigt werden sollen, nach oben sortierst und dann die RowSource auf diese Zeilen setzt.
Das habe ich hier mal umgesetzt. Die Tabelle benötigt eine zusätzliche Spalte, mit der die Sortierung durchgeführt werden kann.
https://www.herber.de/bbs/user/154447.xlsm
Gruß Daniel
AW: Listbox Filter nach Jahr
31.07.2022 07:33:53
Henry
Hallo Daniel,
vielen Dank. Das klappt einwandfrei.
Eine Frage hätte ich noch was besagt diese Zeile?
ThisWorkbook.Names("JahrGewählt").RefersTo = "=" & ComboBox1.Value
Woher kommt "JahrGewählt"?
Anzeige
AW: Listbox Filter nach Jahr
31.07.2022 09:10:06
ralf_b
schau mal in deinen Namensmanager und die Spalten mit den 0 und 1
AW: Listbox Filter nach Jahr
31.07.2022 09:13:52
Daniel
Die Bezeichnung darft du dir ausdenken.
Du musst sie nur mit den Formeln in Spalte G abstimmen.
Irgendwie müssen die ja wissen, welches Jahr gesucht ist.
Ich habe mich hier entschieden, einen Excel- Namen zu verwenden.
Man könnte auch direkt eine Zelle nehmen:

Sheets("Tabelle1"). Range("K1") = ComboBox1.Value
Und in der Formel in Spalte G dann:

=Wenn(F2=$K$1;1;"x")
Aber ich wollte das Tabellenblatt "sauber" halten.
Gruß Daniel
Anzeige
AW: Listbox Filter nach Jahr
31.07.2022 11:39:07
Henry
Prima. Vielen Dank für die Erläuterung.
Ich habe nun alles in meinen bestehenden Code eingepflegt und es klappt perfekt!
Vielen, vielen Dank nochmal!
AW: Listbox Filter nach Jahr
31.07.2022 11:55:28
onur
Und warum hast du MEINE Lösung von 18:47 ignoriert ?
AW: Listbox Filter nach Jahr
31.07.2022 12:58:35
Henry
Hallo,
deine Lösung habe ich nicht ignoriert.
Allerdings werden bei deinem Code die Überschriften "zerschossen".
AW: Listbox Filter nach Jahr
31.07.2022 13:04:12
onur
Vielen vielen Dank, dass du sie dir gnädigerweise angeschaut hast und jetzt schon antwortest. Entschuldige bitte, dass sie dir nicht zusagt, kriegst natürlich dein Geld zurück!
AW: Listbox Filter nach Jahr
31.07.2022 14:18:53
Henry
Hallo,
ich weiß deine Arbeit natürlich zu schätzen und bedanke mich für deine Hilfe.
Entschuldige bitte, dass ich nicht sofort geantwortet habe.
Ich habe hier so viel Input bekommen, dass ich gar nicht wusste, was ich zuerst testen sollte.
Anzeige
AW: Listbox Filter nach Jahr
01.08.2022 13:33:37
Daniel
Hi
noch eine Variante, das Problem zu lösen.
dabei werden die Inhalte für jedes Jahr in ein Dictionary übernommen, welches beim Öffnen der Userform erstellt wird. Daher kommt dann die Combobox mit einer einzigen Zeile Code aus.
Außerdem zeige ich hier die zweite Listbox als Überschrift.
https://www.herber.de/bbs/user/154469.xlsm
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige