Autor Thema: VBA Listbox filtern mit mehreren Comboboxen  (Gelesen 17098 mal)

Lexel2014

  • Newbie
  • *
  • Beiträge
    : 3
Hallo maninweb,

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

Gruß Lexel
 
IP gespeichert

holm_es

  • Gast
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
 
IP gespeichert

Werbung

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
Hallo,

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

Gruß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß


Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Werbung

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
...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
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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!  ;)
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Whiterabbit

  • Newbie
  • *
  • Beiträge
    : 15
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
 
IP gespeichert

maninweb

  • Microsoft Excel MVP
  • Supermoderator
  • Guru
  • *****
  • Beiträge
    : 1.042
  • Microsoft Excel MVP
    • Excel Ticker
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ß
Mein Buch ist erschienen - Microsoft Excel VBA Programmierung - für Excel 2007 bis 2013 - auch als E-Book.
 
IP gespeichert

Werbung

 

An- und Abmeldung

 
 

Tools

Werbung