Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA mit dialog filtern und auswählen

Forumthread: VBA mit dialog filtern und auswählen

VBA mit dialog filtern und auswählen
19.09.2014 14:59:21
Urs
Guten Tag allerseits
Alle Artikel werden bei uns in einer einzigen grossen Tabelle (DB) geführt. Diese wird täglich von der EDV updatet und enthält sowohl die Rohstoffe, Halbfabrikate und die Verkaufsprodukte.
1/5 der Tabelle sind etwa die Rohstoffe wie Bänder und Füllstoffe.
Um Anfragen zu behandeln haben wir eine Tabelle (A). Je nach ausgewählter Zelle in (A) öffnet (DB) und mit dem Öffnen wird in der Spalte Produktelinie der Bereich Bänder geöffnet.
Startet man in der hochgeladenen Datei: https://www.herber.de/bbs/user/92728.xlsm
In Register A mit Alt + F8 das Makro Ba_Filter, so werden alle Bänder ausgefiltert.
Wie ist nun das weitere Vorgehen, wenn man über
Produktlinie – Produktfamilie – Produktgruppe -- Artikel
bis zum einzelnen Artikel hinunter die Auswahl mit Fenster oder Userform macht. Es sollen keine weiteren Dateien benötigt werden!!
Die Artikelnummer sollte dann letztendlich auf Blatt A stehen.
Bin dankbar für jegliche Tips. Gruss Urs

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA mit dialog filtern und auswählen
19.09.2014 17:35:35
fcs
Hallo Urs,
ich würde die Auswahl komplett in Tabelle "DB" machen.
Durch weitere Kriterien für die Filter in einzelnen Spalten kann man die Auswahlliste einkürzen.
Zusätzlich kann man den Filter für die Produktlinie so steuern, dass direkt die Linie aus Spalte A gesetzt wird.
Per Doppelklick in eine Zelle in der Zeile mit der Artikelnummer wird diese nach Blatt "A" übertragen. Dazu wird hinter Blatt "DB" ein entsprechendes Ereignismakro angelegt.
Hier deine Datei mit entsprechend angepassten/ergänzten Makros.
https://www.herber.de/bbs/user/92730.xlsm
Wenn du unbedingt mit einem Userform arbeiten willst, dann muss du dir professionelle VBA-Hilfe beschaffen. Ein sollches UF hat man nicht schnell mal in ein paar Minuten gestrickt.
Hier müssen zunächst alle relevanten DB-Daten in ein Datenarray übernommen werden (wg. Geschwindigkeit).
Über 5 bis 6 gestaffelte Komboboxen oder Listboxen wird dann die Artikelauswahl gesteuert. Dabei wird dann nach jeder Auswahl die Auswahlliste der nachrangigen Komboboxen/Listboxen angepasst.
Ein ausgewählter Artikel wird dann per Schaltfläche in der entsprechenden Zeile im Blatt A eingetragen.
Ansonsten finden sich in den Tiefen der RECHERCHE mit Sicherheit viele hilfreiche Ansätze, aber ohne/mit geringen VBA-Kenntnissen wird es schwierig diese umzusetzen.
Gruß
Franz

Anzeige
AW: VBA mit dialog filtern und auswählen
19.09.2014 22:43:01
Adis
Hallo
meine Recherche mit den Beispieldaten ergab etwas verblüffend einfaches.
Ich sortierte einfach mal alle Daten in jeder Spalte über Spalten Button.
2 Kriterien fallen deutlich heraus: -Produktgruppe und Aufbau-
Das laesst sich meines Erachtens sogar mit Autofilter abdecken.
Das 1. Argument liegt dabei auf der Produktgruppe, danach Aufbau
Es bleibt zu überlegen wieviel Aufwand wirklich erforderlich ist.
Gruss Adis

Anzeige
AW: VBA mit dialog filtern und auswählen
22.09.2014 10:20:03
Urs
Hallo Franz & Adis
Ich danke Euch schon mal für Eure Beiträge. Wenn die Originaldatei(ca. 7000 Zeilen) nur den Umfang dieser abgespeckten Tabellen hätte, würde ich den Vorschlag von Franz gleich umsetzen. Ich habe mir zudem zu Euren Kommentaren noch weitere Gedanken gemacht. Die Dateien sollen von mehreren Usern benutzt werden und sollen daher etwas komfortabler sein. Ich habe mich deshalb entschlossen eine UF-Lösung anzustreben.
Das wird mir aber noch einiges Kopfzerbrechen bereiten :-) Ich werde daher zuerst noch etwas üben und im Archiv recherschieren bevor ich meine Fragen ins Forum stelle. Gruss & Dank Urs

Anzeige
AW: VBA mit dialog filtern und auswählen
22.09.2014 21:39:14
fcs
Hallo Urs,
ich hab dir jetzt doch noch ein Userform zur Artikel-Auswahl erstellt.
Die Zeile, in die die Artikel-Nr. eingetragen werden soll, kann vor der Anzeige des Userforms gewählt werden - muss aber nicht. Im Userform kann die zu bearbeitende Zeile im Blatt A in einer Listbox gewählt werden. Für die Artikel-Auswahl aus der DB sind 4 Listboxen eingerichtet. Nach jeder Auswahl eines Eintrags in einer Box wird die Auswahlliste der folgenden Box aktualisiert.
Zusätzlich sind Textboxen vorhanden zur Anzeige von Daten zu Artikeln.
https://www.herber.de/bbs/user/92753.xlsm
Gruß
Franz
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA Dialoge filtern und auswählen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass Deine Daten in einer einzigen großen Tabelle (DB) organisiert sind. Diese sollte die Produktlinien, Produktfamilien und Artikelnummern enthalten.

  2. Makro erstellen: Drücke Alt + F11, um den VBA-Editor zu öffnen. Füge ein neues Modul hinzu und erstelle das folgende Makro:

    Sub Ba_Filter()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("DB")
    
        ' Beispiel: Filter für Produktlinie "Bänder"
        ws.Range("A1").AutoFilter Field:=1, Criteria1:="Bänder"
    
        ' Weitere Filter können hier hinzugefügt werden
    End Sub
  3. Userform erstellen: Um eine komfortablere Auswahl zu ermöglichen, erstelle ein Userform mit mehreren Kombiboxen oder Listboxen, die die Auswahl der Artikel steuern.

  4. Code für die Userform: Im Userform füge den Code hinzu, um die Listboxen nach jeder Auswahl zu aktualisieren:

    Private Sub ComboBox1_Change()
        ' Aktualisiere ComboBox2 basierend auf der Auswahl in ComboBox1
    End Sub
  5. Artikelnummer übertragen: Füge ein Ereignismakro hinzu, das die ausgewählte Artikelnummer nach Blatt A überträgt, wenn der Benutzer auf eine Schaltfläche klickt.


Häufige Fehler und Lösungen

  • Fehler: "Formel ist zu komplex für die Zuweisung zu einem Objekt": Dieser Fehler tritt oft auf, wenn die Kriterien für die Filterung zu komplex sind. Überprüfe die Filterkriterien und vereinfache diese, wenn nötig.

  • Lösung: Stelle sicher, dass Du einfache Kriterien verwendest, oder teile die Filterung in mehrere Schritte auf.


Alternative Methoden

Falls Du keine Userforms verwenden möchtest, kannst Du auch die integrierte Filterfunktion von Excel nutzen:

  1. Autofilter aktivieren: Wähle die Daten in der Tabelle DB aus und gehe zu Daten > Filter > Autofilter.

  2. Filteroptionen nutzen: Klicke auf den Dropdown-Pfeil in der Spaltenüberschrift, um die Filteroptionen anzuzeigen.

  3. Mehrere Kriterien kombinieren: Du kannst mehrere Kriterien in verschiedenen Spalten kombinieren, um die Auswahl zu verfeinern.


Praktische Beispiele

  • Beispiel für Filterung nach Produktgruppe:

    ws.Range("A1").AutoFilter Field:=2, Criteria1:="Produktgruppe1"
  • Beispiel für die Übertragung der Artikelnummer:

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim wsA As Worksheet
        Set wsA = ThisWorkbook.Sheets("A")
    
        wsA.Cells(ActiveCell.Row, 1).Value = ListBox1.Value
    End Sub

Tipps für Profis

  • Datenarrays verwenden: Für eine schnellere Verarbeitung der Daten empfiehlt es sich, die Daten in ein Array zu laden, bevor Du sie filterst.

  • Ereignismakros nutzen: Verwende Ereignismakros, um die Benutzerinteraktion zu verbessern, z.B. durch automatische Aktualisierungen der Listboxen.

  • Testen in einer Kopie: Teste Deine VBA-Skripte immer in einer Kopie Deiner Datei, um ungewollte Änderungen zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Filterkriterien anpassen?
Du kannst die Kriterien im Makro einfach ändern, indem Du den Criteria1-Wert anpasst.

2. Was tun, wenn die Userform nicht richtig angezeigt wird?
Überprüfe, ob das Userform korrekt erstellt wurde und alle Steuerelemente richtig platziert sind. Stelle außerdem sicher, dass die Größe des Userforms an den Bildschirm angepasst ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige