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

Marcelk178

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

maninweb

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

Marcelk178

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

maninweb

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

Werbung

Marcelk178

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

Marcelk178

  • Newbie
  • *
  • Beiträge
    : 28
    • BlickWinkel178
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.
Letzte Änderung: 2014-04-12 10:53:38 von Marcelk178
 
IP gespeichert

maninweb

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

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

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

Marcelk178

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

maninweb

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

maninweb

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

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

Gruß

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

Marcelk178

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

Werbung

maninweb

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

Marcelk178

  • Newbie
  • *
  • Beiträge
    : 28
    • BlickWinkel178
Hallo manimweb,

Perfekt! Habe es hinbekommen.  :)

Danke nochmal!
 
IP gespeichert

Lexel2014

  • Newbie
  • *
  • Beiträge
    : 3
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

 
 
IP gespeichert

maninweb

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

Lexel2014

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

Werbung

 

An- und Abmeldung

 
 

Tools

Werbung