Office 2013 & Office 365 Forum

Foren für Anwender von Microsoft Office => Anwenderforum für Microsoft Excel => Thema gestartet von: Marcelk178 am 2014-04-11 16:20:14

Titel: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-11 16:20:14
Hallo

Folgendes Problem: Ich habe in meiner Datei eine Userform "frmBerichte" die ich nicht richtig zum laufen bekomme. Sie funktioniert nur teilweise. Die Userform soll Infomation über den Warenausgang und der Bestellungen (incl. der Bestellhistorie) wieder geben. Den Code, den ich in dieser Userform ("frmBerichte") benutze, habe ich im Internet gefunden. Ich werde aber aus dem Code nicht ganz schlau.

Gruß
Marcelk178
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-11 17:20:31
Hallo Marcelk178,

Willkommen im Forum  :)

Hab's mir mal angeschaut, auf den ersten Blick erscheint mir der Code zu kompliziert. Der Code nutzt das
ScriptingDictionary Objekt, um eine Filterung durchzuführen. Ausserdem habe ich den Eindruck, dass der
Code mit den Events durcheinander kommt, weshalb es dann nicht immer funktioniert.

Ich schaue es mir mal im Detail an und melde mich dann wieder.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-11 18:41:40
Hallo maninweb,

ja ich habe mit dem Code etwas herum experimentiert (z.B. mit T1, T2 und T3). Leider nicht ganz mit dem gewünschtem Ergebnis. Du kannst den Code natürlich komplett umändern. Bei mir hatte es bis jetzt nicht funktioniert.

Danke für die Hilfe.

Gruß
Marcelk178
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-11 19:47:12
Hallo Marcelk178,

habe Dir eine vereinfachte Version erstellt und hier anbei hochgeladen. Besser ist es m.E. für die Bestellungen
und den Wareneingang mit zwei Listen zu arbeiten, da Du sonst mehr synchronisieren musst. Die Listen kann
man ggf. ein- und ausblenden (Visible=True/False) und einen Umschalter oder eine Multipage nehmen.

Der Code liest die Tabelleninhalte in Arrays ein und verwendet diese anschließend zum Filtern und Setzen der
Listbox-Inhalte in einem Rutsch. Über eine Collection ermittelt man doppelte Einträge, um die Comboboxen
nur mit eindeutigen Einträgen zu füllen. Hoffe, es passt so.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-11 20:15:03
Hallo maninweb,

sieht sehr gut aus. Ich werde mir mal den Code anschauen. Mal sehen, ob ich aus diesem schlau werde. Aber soweit funktioniert alles so wie es soll. Ich melde mich nächste Woche noch mal.

Vielen Dank!

Gruß
Marcelk178
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-12 10:28:38
Hallo maninweb,

ich habe mir den Code angeschaut. Sieht Kompliziert aus. Aber durch deine Beschreibungen verstehe ich den Code nun auch langsam. Die Idee mit der Multipage fand ich so  gut, dass ich diese gleich umgesetzt habe.

Danke für deine schnelle Hilfe!

Gruß
Marcelk178
P.S. Ich habe dein Forum(Link) in mein Blog integriert.
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-14 08:43:45
Hallo Marcelk178,

vielen Dank für die Verlinkung, auch zum Excel Ticker  :)

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-14 17:38:57
Hallo maninweb,

soweit funktioniert alles Super. Nur ein keines Problem habe ich noch. Wenn ich mehrere Datenmengen habe, zeigt die Listbox zwar die gesuchten Daten an, aber die Listbox blendet nicht alles aus.

Beispiel:
- ich habe 100 Daten
- davon werden 20 gesucht und auch gefunden
- die restlichen 80 zeigt zwar nicht mehr an, es entstehen aber Leerzeilen und man kann in der Listbox immer noch scrollen.

Ich hoffe Du versehst was ich mein. (siehe Datei)

Vielen Dank für deine Hilfe!

Gruß
Marcelk178
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-14 18:26:34
Hallo Marcelk178,

stimmt, das war mein Fehler. Ich hatte direkt vntDaten an die Listbox übergeben, das Array vntDaten auf
die Originalgröße dimensioniert. Deshalb die leeren Einträge, weil dann zuviele an die Listbox übergeben werden.

Habe Dir in der Datei die Funktion  FilterWarenausgang in frmBerichtNeu angepasst. Siehe auch die Kommentare
und bitte beachte auch die Änderungen am Initialwert von lngIndex.

Für FilterBestellungen habe ich die Änderungen nicht durchgeführt, aber ich denke, es nach demselben Muster
anzupassen sollte recht einfach realisierbar sein.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-14 18:31:51
Hallo Marcelk178,

oups, hat wohl die Datei nicht hochgeladen. Hier nochmal der Anhang.

Gruß

Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-14 18:45:05
Hallo manimweb,

danke für deine super schnelle Hilfe. Für die "Belege" und das "Datum" funktioniert es klasse. Ist dieses auch bei der Auswahl der Combobox "cmbWarenausgang" möglich? Da zeigt er immer noch leere Zeilen an.

Gruß
Marcelk178
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-04-14 18:54:48
Hallo Marcelk178,

ja, das würde mit derselben Anpassung im Code zu cmbWarenausgang_Change gehen. Deklarieren von arrDummy,
Intialwert von lngIndex anpassen (inkl. der von vntDaten nach Zuweisungszeile vntDaten(lngIndex - 1, lngSpalte)...)
und da drunter den Teil mit der Übergabe an die Listbox wie bei FilterWarenausgang. Kann das momentan nicht machen,
da ich gleich weg bin. Wenn's aber nicht klappt, dann sag' Bescheid.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Marcelk178 am 2014-04-14 19:14:17
Hallo manimweb,

Perfekt! Habe es hinbekommen.  :)

Danke nochmal!
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Lexel2014 am 2014-05-06 15:26:05
Hallo manimweb,

Versuche mich zeit einem halben Jahr mit VBA und bin ganz neu im Forum. Habe den Beitrag gelesen und habe genau das gleich Problem. Habe mir die Dateien angeschaut nur verstehe den Code nicht ganz. Verstehe einige Funktionen die ihr benutzt habt nicht.
Ich habe meine Daten die ich in der Listbox anzeige als Tabelle definiert und gebe diesen Namen in dem Eigenschaftenfeld RowSource an.
Das gleiche mache ich bei den Combiboxen. Habe das für eine saubere Lösung gehalten da sich meine Tabelle ständig erweitert und ich diese Funktion später noch auf drei weitere Tabellen anwenden will.
Ich habe heute versucht den Code auf meine Excel Sheet anzuwenden aber bin nicht weit gekommen.
Ich habe meine Datei mal angehängt und hätte erst mal die Frage, kann ich den hier erzeugten Code auf meine Datei anwenden?
Oder ist der Aufwand so groß das ich lieber einen eigenen Code scheibe.  Dabei wäre mien Frage wie ich am besten Anfange. Mir gfehlt ein wenig die Idee. Da ja bekanntlich viele Wege nach Rom führen:-).

Bin für jede Info oder Hilfe Dankbar und hoffe das ich später auch ein mal mit Problemen in diesem Forum helfen kann die ich schon gelöst habe. :)

Gruß Lexel

 
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-05-07 08:47:23
Hallo Lexel2014,

Willkommen im Forum  :)

Ich habe Dir mal eine (einfache und schnelle) Anpassung des Codes für Marcel erstellt.
Du findest den Code in der UserForm AuswahlAnlage_2.

Wenn Du variable ListBoxen usw. haben möchtest, musst Du dies selbst programmieren,
mit der Zuweisung =RowSource kommt man meist da nicht sehr weit.

Wenn Du Fragen zu dem Code hast, gerne hier im Forum.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Lexel2014 am 2014-05-07 13:31:37
Hallo maninweb,

Ersteinmal herzlichen Dank für die schnelle Antwort und die Anpassung der Datei.
Werde sie mir jetzt intensiv durchsehen. Fragen folgen bestimmt  ;)

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Lexel2014 am 2014-05-09 09:31:24
Hallo maninweb,

Habe durch ein paar Nachforschungen den Code verstanden und nochmals angepasst.
Jetzt funkrioniert alles. Vielen Dank für deine Hilfe.

Gruß Lexel
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: holm_es am 2014-05-20 08:40:19
Hallo Zusammen,

habe die Beispieldatei "Abhaengige-Comboboxen-Teil-3.xlsm" ausprobiert und bin davon sehr angetan.
Allerdings möchte ich bei der Auswahl einer Zeile in der Listbox die Werte der Zeile in TextBoxen anzeigen lassen um die Werte ggf. verändern zu können und in das Excelblatt zurückzuschreiben.
Dafür brauche ich die Nummer der Zeile.
Habt ihr einen Tipp für mich, wie ich diese Nummer ins Array bekomme?
"arrWarenausgang = .Range(.Cells(cstWareinausgangStart, 1), _
                               .Cells(cstWareinausgangStart + lngAnzahl - 1, _
                                      cstWareinausgangBreite)).Value"
Und reicht das überhaupt aus, vor allem wenn ich mit der Filterfunktion in der Listbox arbeite?

Vielen Dank und Gruß

Michael
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2014-05-20 12:43:01
Hallo Michael,

die einfachste Variante hierzu wäre, in den Tabelle eine Spalte hinzufügen, wo die Formel =ZEILE() in den Zellen
drin steht. Dann das Array bzw. Konstanten erweitern, dass die Spalte berücksichtigt wird. Die Werte in der
Spalte kannst Du dann aus der Listbox auslesen und hast dann direkt die Zeilennummer aus der Quelltabelle.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-08 18:58:03
Hallo zusammen,

durch Zufall bin ich auf diesen Thread gestoßen und habe genau das gefunden, was ich gesucht habe "2014-05-06_GWT_V3.xlsm".

...kann mir evtl. jemand ein Beispiel schicken, in dem nicht nur die ListBox gefiltert, sondern auch die dazugehörige Tabelle "auto gefiltert" wird? Das bekomme ich mit meinen dürftigen VBA-Kenntnissen leider nicht hin.
--> quasi gleicher Filterung der Grundtabelle wie ListBox


Vielen Dank & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-09 09:44:30
Hallo,

probiere mal die angehängte Datei aus. Dazu den Button in der Tabelle Anlagen anklicken.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-09 10:11:54
Hallo maninweb,

dass das so simpel ist hätte ich nicht gedacht!
Sehe ich es richtig, dass Du nur die folgende Komponente hinterlegt hast:
"ThisWorkbook.Worksheets("Anlagen").ListObjects("Anlagen") _.Range.AutoFilter Field:=4, Criteria1:=strGebaeude"?

Oder ist da noch etwas, das ich gerade übersehen habe?
(ich versuche VBA zu verstehen)  ;D


Vielen, vielen Dank! & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-09 10:14:12
Hallo,

genau, es wurden nur die 3 * 2 Zeilen ... ListObjects("Anlagen") ... hinterlegt, da es eine intelligente Tabelle ist. Und somit recht simpel. Gern geschehen :-)

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-09 15:28:26
Hallo maninweb,

ich habe mir jetzt eine eigene Interpretation gebastelt, die (wie zu erwarten) nicht so richtig funktioniert.
In der angehängten Test-Datei wird nach der Auswahl der ComboBoxen zwar die Ursprungstabelle gefiltert, jedoch erscheinen diese nicht in der ListBox der UserForm. Auch muss ich irgend einen Fehler im VBA bezüglich Filter eingebaut haben, da sich Excel aufhängt, wenn ich die aktuellen Filter durch klick auf Button "Refresh" zurücksetze.

Kannst Du mir schreiben, was ich VBA-Neuling falsch gemacht habe?

Hier meine Änderungen zu Der Originaldatei:
- Neue Tabellen per Namensmanager (Cluster + Department)
- Listbox auf 16 Spalten erweitert
- Austausch der Tabelle "Anlage" durch Tabelle "Payroll"
- Austausch der Tabelle "Gebäude" durch Tabelle "Cluster"
- Austausch der Tabelle "Gewerk" durch Tabelle "Department"

Mehr fällt mir erst einmal nicht ein.
Bitte entschuldige, dass ich die Originaldatei so zerhunst habe.  ::)


Vielen Dank im Voraus & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-10 09:41:53
Hallo,

Du hast die Indizes durcheinander gebracht und einmal das ListObject nicht korrekt addressiert, daher ging das nicht.
Deine angepasste Beispieldatei habe ich mal hochgeladen.

Das Löschen des Filters sieht dann übrigens auch nur so aus, als wäre es ein Absturz, ist es aber nicht. Das liegt
an der Performance des Codes wenn die Liste neu aufgebaut wird. Bei 2999 Einträgen und 18 Spalten dauert
das was. Also wenn's bei Dir später tatsächlich soviele sind, muss man was anderes überlegen.

Gruß


Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-10 10:12:26
Respekt maninweb!

So schnell Lösungen zu bekommen ist ein Traum! 8)
Vorerst habe ich nur noch eine einzige Frage...was muss ich im VBA ändern, damit die Überschrift (Zeile 1) in der ListBox angezeigt wird und bei Filterungen nicht verschwindet?

...jetzt kann ich mich zu Echtzeit-Diagrammen vorkämpfen und diese in der UserForm einbauen. nette Vorlagen habe ich bereits gefunden. (da komme ich bestimmt mit ein / zwei Fragen in den kommenden Wochen auf dieses klasse Forum zurück) ;D


Vielen, vielen Dank! & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-10 18:39:05
...und ein neues Problem, was mir völlig neu ist...

ich habe soeben versucht ein wenig von zuhause an der Datei weiter zu arbeiten.
--> Fehlermeldung bei Aufrufen der UserForm --> "trim" nicht in Bibliothek gefunden

Auf der Arbeit (letzte Aktualisierungen) habe ich Excel 2007
Zuhause habe ich Excel 2010

Ist die Funktion "Trim" in der neuesten Excel-Version nicht möglich?
Muss man diese Funktion austauschen, damit sie in 2007 & 2010 funktioniert?


Vielen Dank & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-11 09:11:51
Hallo,

ich habe Dir das mal angepasst, so dass die Spaltenköpfe immer mit angezeigt werden. Das geht leider nur so über die erste
Zeile, da ListBoxen in VBA doch schon eingeschränkt sind und nicht so viel können. Ausserdem dürfte der Code jetzt beim
Füllen der Listbox schneller sein.

Was das Trim-Problem betrifft, es gibt da keine Unterschiede zwischen Excel 2007 und 2010. Allerdings kommt es mal vor,
dass VBA seine eigene Bibliothek nicht erkennt. Kann verschiedene Ursachen haben und z.B. an der VBA-Version liegen,
sollte aber nicht.

Öffne mal die Datei in Excel 2010 und schaue unter Extras, Verweise (VBA-Editor) nach, ob die VBA-Lib angehakt ist.
Sollte, wenn nicht anhaken. Wenn immer noch gemeckert wird, lade die Datei von hier herunter und probiere es nochmal.

Wenn das immer noch nicht geht, setze mal überall vor dem Trim VBA., sodass dann da VBA.Trim steht.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-11 22:58:59
Guten Abend,

also es funktioniert alles wunderbar!
maninweb: "VBA.Trim" hat mein Excel überzeugt!  ;)

Jetzt habe ich jedoch bereits das nächste Problem...
Die Datei kann ich leider aktuell nicht mehr hochladen (zu viele Daten; Datenschutz), jedoch versuche ich mein Anliegen so gut wie möglich zu erläutern.

Ich habe es geschafft  8) per "Kamera" ein dynamisches, cooles Tacho-Diagramm in meine UserForm als Image einzubinden.
Sobald ich die Daten in der UserForm per Auswahl der ComboBoxen filtere ändert sich im Hintergrund das Diagramm und auch das "gif", dass ich per "Kamera" eingefügt habe und das auf dem Tabellenblatt liegt...nur leider aktualisiert sich das Image in der Userform nicht...
Ich muss immer erst die UserForm neu laden, damit sich das Image aktualisiert.

Ich habe alles (mir mögliche und bekannte) im VBA versucht:
- UserForm aktualisieren
- Image neu reinladen

Existiert eine Möglichkeit Images in Echtzeit oder per Button zu aktualisieren?
Weiß jemand wie der Pfadname eines per Kamera produzierten Duplikates lautet?
...ich habe es leider nicht per Button hinbekommen.


Vielen Dank im Voraus & viele Grüße
Whiterabbit

P.S.: Wenn diese Datei irgendwann fertig ist, werde ich durch euch Profies ein ordentliches Wissen aufgebaut haben...Danke dafür!  ;)
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-12 09:29:54
Hallo,

ohne den Code, den Du hast, wird's schwierig - bzw. wie hast Du denn das Erstladen realisiert?
Vielleicht nicht doch eine Datei ohne Daten hochladen?

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-14 18:43:24
Aloha,

anbei eine musterdatei...hat etwas gedauert, da die hoch zu ladende Datei nicht >=1MB sein durfte!
(ich hoffe, dass ich nicht zu viel herausgelöscht / umgemodelt habe)  ::) ;D

Meine Wünsche, die ich aktuell nicht realisieren kann (da ich bei dem Wirr-War nicht mehr durchsehe und nicht weiß, wo ich die VBA-Anweisungen hinterlegen muss):
- Sortierung der Comboboxen (alphabetisch)
- Beim Öffnen der Datei immer alle Filter zurücksetzen
- Textboxen, die mit Werten per "Refresh-Button" aktualisiert werden - automatisch bei Auswahl der ComboBoxen aktualisieren
(hier weiß ich, dass der direkte Verweis auf eine Zelle (Row-Source) die Formel der Zelle löscht und bei erneutem Öffnen nur noch den Wert anzeigt)
- Image-Dateien, die aus dem Reiter "KPI´s" gezogen werden automatisch aktualisieren
(hier habe ich mich der "Kamerafunktion"-Funktion bedient und weiß nicht, wie ich hier eine "Echtzeit-Aktualisierung" und das einbinden mehrerer Images vornehmen kann (ca. 5 Images))

Ich habe mein möglichstes versucht...aber derzeit komme ich nicht weiter.  :-\

Vielen Dank für Anregungen oder Hilfen!


Viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-08-15 11:23:39
Hallo,

ich habe Dir mal ein paar Änderungen eingebaut. Sortieren ist nicht ganz trivial, weil man dann die Combobox-Elemente
als Einzel-Arrays einlesen muss. Sortierung basiert auf QuickSort (Suche mal im Netz danach). Filter zurücksetzen würde
ich eher beim Öffnen der UserForm sehen, aber das kannst Du auch ändern: in DieseArbeitsmappe die Kommentierung
aufheben und bei der UserForm denselben Code wieder rausnehmen. Textboxen aktualisieren: einfach in die Funktion
zum Filtern setzen. Image-Dateien: da warste schon auf den richtigen Weg: aber auch hier einfach in den Filter und
bei der Initialisierung eingebaut.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-08-15 11:58:43
Zunächst vielen, vielen Dank!

ich werde es mir heute oder morgen Abend genauer anschauen und gucken, was ich noch so nettes einbauen kann.
Sieht auf jeden Fall Klasse aus!  8)

Ich melde mich schnellst möglich zurück!


Viele Grüße
Whiterabbit