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
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-09-25 11:15:26
Hallo maninweb,

Bitte entschuldige meine sehr späte Rückmeldung...!
Nach meiner hochzeit und meinen Flitterwochen konnte ich erst jetzt wieder online gehen.
Also noch einmal vielen, vielen Dank für Deine Hilfe!!!  8)

ich habe mir jetzt aus der Grunddatei eine sehr flexible und aufschlussreiche Datenbank gebastelt.
Aber, wie bereits erwähnt, habe ich noch kleine Features, die ich benötige.

Folgende Fragen zu weiteren Features meinerseits, die ich erst probieren möchte, wenn du mir sagst, dass es funktionieren würde:
- ist es möglich in der Userform unter dem Reiter "Payroll" ein Suchfeld zu integrieren, mit dem man zusätzlich nach einzelnen Namen oder Begriffen in der Grunddatei suchen und filtern kann?
(Also ein pendant zu den bereits integrierten ComboBoxen)
- ist es möglich eine weitere weitere ListBox mit entsprechenden Filterungen unter dem Reiter "Planning" einzubauen?
(analog zu dem Reiter "Payroll")

Je nachdem, wie Du meine Fragen beantwortest, würde ich mich selbst daran probieren und Dir meine, hoffentlich funktionierenden Ergebnisse, zum drüberschauen überreischen. :-)


Vielen Dank im Voraus & viele Grüße
WR
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-09-27 20:59:01
Hallo maninweb, hallo User,

anbei findest Du meine aktuelle Datei.
Die erste Page der UserForm ist quasi fertig. Hier habe ich nur noch zwei Fragen:
- Sortierung der ComboBoxen funktioniert nicht mehr, woran könnte das liegen?
- ich habe herausgefunden, wie man über Comboboxen einen Druck erzeugt...jedoch ist meine derzeitige Einstellung etwas dürftig!
  hättest Du eine Idee, wie ich eine automatische Druckanpassung an ein A4-Blatt vornehmen kann (Querformat - Landscape)?

Die zweite Page soll ähnlich wie die erste aussehen.
Hier habe ich versucht die Daten (VBA) der ersten Page zu addaptieren...jedoch ohne Erfolg...ich habe sie wieder gelöscht, da eine Fehlermeldung nach der anderen kam.  ::)
- Muss ich hier eine strickte Trennung zu den bereits bestehenden VBA-Konfigurationen vornehmen und evtl. die zweite Page über ein Modul oder ähnliches konfigurieren?

Danke & Gruß
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-10-01 13:10:56
Hallo,

naja, Sortieren geht deshalb nicht mehr, weil Du die Prozedur rausgenommen hast. Zu der Druckanpassung müsste ich selbst recherchieren,
weshalb ich so erstmal nichts dazu sagen kann. Persönlich drucke ich nie UserFormen aus. Was die zweite Seite betrifft, nö, da gibt's eigentlich
nichts konfigurationsmäßiges zu beachten, ausser dass die Steuelemente dann anders als auf der ersten Seite heißen müssen und Du gegebenfalls
auch die Füllprozedur duplizieren müsstes, wenn beide Seiten völlig unabhängig voneinander sein müssen.

Kannst ja mal Deinen Versuch hier reinstellen, dann können wir mal gucken ...

Gruß

Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-10-02 13:54:34
Hallo maninweb, hallo User,

anbei der "Versuch" die Sortierung, wie zuvor in Deiner Datei, wieder einzubinden.
...Fehlermeldung bei "SortArrayFromRange" = "Fehler beim Kompilieren: Sub oder Function nicht definiert"...
Ich kann nicht finden, was ich vergessen- oder falsch gemacht habe. Ich habe meine und Deine Datei nebeneinander gelegt und sehe keine abweichung.

Morgen mache ich mich an die zweite MultiPage und stelle Dir das Ergebnis rein...ist echt hart...eine eigene Welt dieses VBA!  :-\


Danke & Gruß
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: maninweb am 2017-10-02 16:43:55
Hallo,

Du hast vergessen, die Prozedur als solches wieder einzubinden. Siehe meine letzte Datei hier aus dem Thread.
Folgendes (gekürzt) muss in das Modul wieder rein...

Code: Visual Basic
  1. Private Function SortArrayFromRange(ByRef Data, Column As Long, Lower, Upper) As Long
  2. :
  3. :

Ausserdem hast Du den Code für's Einlesen in die Comboboxen so verändert, dass es dann egal wird,
ob die Arrays sortiert werden oder nicht. Denn nun verwendest Du gar nicht mehr die sortieren Arrays.
D.h. das musst Du wiederherstellen.

Dann noch als Tipp: wenn die Daten in der Ausgangstabelle #NV's beinhalten, kann das Array nicht
korrekt eingelesen werden und die Sortering schlägt fehl. Hier musst Du dann Deine Formeln z.B.
mit WENNFEHLER kapseln. Beispiel:

Code: Excel
  1. =WENNFEHLER(SVERWEIS([@CostC];Hilfstabelle!$A$2:$C$200;3;FALSCH);"")

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-10-30 21:11:27
Hallo zusammen,

anbei mein Versuch die zweite Listbox zu befüllen...Hat natürlich nicht so geklappt, wie gewünscht.
Ich habe die zweite Listbox in der Userform befüllen können, jedoch sind die Daten der ersten ListBox mit den Daten der zweiten Listbox vermischt. die zweite ListBox stimmt komischerweise...ich sehe langsam in dem VBA nicht mehr durch...
Des Weiteren ist in den ComboBoxen teilweise keine Auswahl außer "Alle" möglich.

Ich tippe, dass ich Verweise vergesen oder falsch gesetzt habe.

So soll die Verknüpfung eigentlich aussehen:
Listbox 1 = ListBoxLOGA (Daten aus Reiter "TiRo_Gehaltsreport_Part1")
- 1. CB = Cluster(s)
- 2. CB = Department(s)
- 3. CB = CostC(s)
- 4. CB = Employee(s)
- 5. CB = Job(s)
Listbox 2 = ListBoxPlanning (Daten aus Reiter "Planning")
- 1. CB = BP(s)
- 2. CB = CostCenter(s)
- 3. CB = Nam1(s)
- 4. CB = Role(s)

Wäre klasse, wenn mir hier wieder jemand helfen könnte...maninweb :-)

Noch eine Sache:
--> Erhöhung der Breite der ListBox-Spalten
--> wo / wie kann ich das einbauen?
-->(die Anzahl der Spalten wird sich nämlich noch reduzieren)


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

das Projekt nimmt langsam eine Dimension an, wo es (für mich jedenfalls) zu aufwändig wird, dies im Rahmen eines
Forumsbeitrags zu betreuen.

Deshalb nur kurz, was mir aufgefallen ist. Generell ist es so, dass beide Listboxen unabhängig voneinander agieren
sollten und somit selbstständige Einheiten bilden. Deshalb ist der Code auch so zu behandeln. Aktuell hast Du z.B.
den Code gemischt, Beispiel:

Code: Visual Basic
  1. '   Anlagen...
  2.    
  3.     With ThisWorkbook.Worksheets("TiRo_Gehaltsreport_Part1")
  4.     With ThisWorkbook.Worksheets("Planning")
  5.     :
  6.  

Der Code innerhalb des With-Block berücksichtigt also nur die Tabelle "Planning". Die Struktur müsste wie folgt
aussehen:

Code: Visual Basic
  1. '   Anlagen...
  2.    
  3.     With ThisWorkbook.Worksheets("TiRo_Gehaltsreport_Part1")
  4.    
  5. '   Hier der Code für TiRo_Gehaltsreport_Part1
  6.    
  7.     End With
  8.  
  9.     With ThisWorkbook.Worksheets("Planning")
  10.    
  11. '   Hier der Code für Planning
  12.    
  13.     End With
  14.  

Das Separieren gilt auch für das Füllen der Collections usw. Du könntest z.B. zwei Prozeduren machen und
diese dann in UserForm_Initialize() aufrufen. Beispiel:

Code: Visual Basic
  1.   Private Sub InitializePayroll()
  2.  
  3. '   Enthält den Code von vorheriger Version für UserForm_Initialize
  4. '   und zwar nur für die erste Seite im Multipage.
  5.  
  6.   End Sub
  7.  
  8.   Private Sub InitializePlanning()
  9.  
  10. '   Enthält einen für Planning angepassten Code von Payroll
  11. '   und zwar auch mit eigenen Variablen
  12.  
  13.   End Sub
  14.  
  15.   Private Sub UserForm_Initialize()
  16.    
  17.     InitializePayroll
  18.     InitializePlanning
  19.    
  20.   End Sub
  21.  
Der Code hier oben ist nur ein Beispiel. Insgesamt: trenne Deinen Code in kleinere Einheiten, sodass
Du besser den Überblick behalten kannst.

Gruß
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-11-02 19:10:43
Hallo maninweb,

eine letzte Frage habe ich noch...danach bin ich so gut wie fertig und Du hast Ruhe vor mir.  ;D
Ich habe alles so umgesetzt, wie Du es mir geschildert hast.
ListBoxen sind jetzt beide korrekt befüllt und die Filterung in Page 1 (Payroll) funktioniert wunderbar!
Page 2 (Planning) steht auch, jedoch funktioniert die Filterung nicht. Er zeigt nur als Auswahl "ALLE".
Arrays und objects sind alle hinterlegt.
Kann der Fehler evtl. hier liegen:
_____
Private Sub InitializePayroll() / Private Sub InitializePlanning()
...
'   Seite...   
    MultiPage1.Value = 0 (ist bei beiden identisch)
...
End Sub
_____

Wenn das funktioniert benötige ich keine weitere Hilfe für die Finalisierung!  8) ;D


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

also wenn Du Dich nicht mit der letzten Datei beim Hochladen vertan hast, ist immer noch folgender Code drin...

Code: Visual Basic
  1. '   Anlagen...
  2.    
  3.     With ThisWorkbook.Worksheets("TiRo_Gehaltsreport_Part1")
  4.     With ThisWorkbook.Worksheets("Planning")
  5.     :
  6.  

Das kann nicht klappen, denn .Cells(...) bezieht sich auf den With-Block. Deshalb, etwas aufgebohrter ...

Code: Visual Basic
  1. '   Alles was Payroll ist in diesen With-Block...
  2.    
  3.     With ThisWorkbook.Worksheets("TiRo_Gehaltsreport_Part1")
  4.          
  5. '     Filter zurücksetzen...
  6.      
  7.       ThisWorkbook.Worksheets("TiRo_Gehaltsreport_Part1") _
  8.      .ListObjects("Payroll").AutoFilter.ShowAllData
  9.    
  10. '     Anzahl...
  11.      
  12.       lngAnzahl = .Cells(Rows.Count, 1).End(xlUp).Row
  13.      
  14. '     Payroll...
  15.      
  16.       arrPayroll = .Range(.Cells(1, 1), .Cells(lngAnzahl, 18)).Value
  17.       arrPayrollHeads = .Range(.Cells(1, 1), .Cells(1, 18)).Value
  18.  
  19. '     Einzelspalten...
  20.      
  21.       arrClusters = .Range(.Cells(2, 17), .Cells(lngAnzahl, 17)).Value
  22.       arrCostCs = .Range(.Cells(2, 3), .Cells(lngAnzahl, 3)).Value
  23. '     :
  24. '     :
  25.      
  26. '     Sortieren...
  27.      
  28.       SortArrayFromRange arrClusters, 1, LBound(arrClusters, 1), UBound(arrClusters, 1)
  29.       SortArrayFromRange arrCostCs, 1, LBound(arrCostCs, 1), UBound(arrCostCs, 1)
  30. '     :
  31. '     :
  32.  
  33.     End With
  34.    
  35. '   Alles was Planning ist in diesen With-Block...
  36.    
  37.     With ThisWorkbook.Worksheets("Planning")
  38.      
  39. '     Filter zurücksetzen...
  40.      
  41.       ThisWorkbook.Worksheets("Planning") _
  42.      .ListObjects("Planning").AutoFilter.ShowAllData
  43.    
  44. '     Anzahl...
  45.      
  46.       lngAnzahl = .Cells(Rows.Count, 1).End(xlUp).Row
  47.  
  48. '     Planning...
  49.      
  50.       arrPlanning = .Range(.Cells(1, 1), .Cells(lngAnzahl, 16)).Value
  51.       arrPlanningHeads = .Range(.Cells(1, 1), .Cells(1, 16)).Value
  52.      
  53. '     Einzelspalten...
  54.      
  55. '     arr__PLanning_1 = .Range(.Cells(2, 17), .Cells(lngAnzahl, 17)).Value
  56. '     arr__PLanning_2 = .Range(.Cells(2, 3), .Cells(lngAnzahl, 3)).Value
  57. '     :
  58. '     :
  59.      
  60. '     Sortieren...
  61.      
  62. '     SortArrayFromRange arr__PLanning_1, 1, LBound(arr__PLanning_1, 1), UBound(arr__PLanning_1, 1)
  63. '     SortArrayFromRange arr__PLanning_2, 1, LBound(arr__PLanning_2, 1), UBound(arr__PLanning_2, 1)
  64. '     :
  65. '     :
  66.      
  67.     End With
  68.  

Der Code, der den With-Blocks folgt, musst Du entsprechend überprüfen. Wie gesagt, betrachte die zwei Seiten
im Multipage als unabhängige Einheiten. So, als würdest Du zwei UserForms programmieren, einmal für Payroll
und einmal für Planning. Nur dass eben halt jetzt nun beides in zwei Seiten einer Multipage ist.

Gruß
 
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-11-03 12:58:07
Hallo,

anbei zwei Versionen.

Version 1 (....neu1.xlsm):
Private Sub UserForm_Initialize()
...
With...Gehaltsreport... (nur Payroll)
End With
With...Planning... (nur Planning)
...
End Sub

Version 2 (....neu.xlsm):
Private Sub InitializePayroll()
Private Sub InitializePlanning()
(beide Initialisierungen komplett voneinander getrennt)

Beide Versionen funktionieren nicht --> keine Auswahlmöglichkeit bei Page 2 "Planning".

in beiden Versionen habe ich penibel darauf geachtet, dass alles identisch ist.
irgendetwas übersehe ich jedoch...und ich weiß nicht was.  :-\

erster Anhang = ...neu.xlsm
zweiter Anhang folgt gleich im Anschluss (beide Dateien zu groß für einen Upload)!


Vielen Dank & viele Grüße
Whiterabbit
Titel: Re: VBA Listbox filtern mit mehreren Comboboxen
Beitrag von: Whiterabbit am 2017-11-03 12:58:49
hier der zweite Anhang - ...neu1.xlsm.