Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Stufenweiser Filter m. VBA u. Combobox

Stufenweiser Filter m. VBA u. Combobox
03.08.2006 05:56:49
Tobias
Hallo zusammen,
ich suche eine elegante Loesung fuer folgendes Problem:
gegeben: Tabelle 500x5; UserForm mit Combobox
gesucht: mehrstufiger Filter in folgenden Schritten
1. Unterschiedliche Werte aus Spalte1 in Combobox- Userselektion
2. Filteranwendung auf Spalte1, Schreiben der verbleibenden (unterschiedlichen) Werte in Combobox
3. - Userselektion u.s.w.
Im Prinzip genau das, was der Autofilter in einem Tabellenblatt realisiert, leider bin ich bei der Suche danach noch nicht wirklich fuendig geworden.
Danke schonmal fuer Eure Hilfe,
Tobias

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Stufenweiser Filter m. VBA u. Combobox
04.08.2006 20:01:41
Uwe
Hallo, Tobias,
Deine Aufgabe ist im ersten Schritt leicht lösbar, wenn man von einer Spalte ausgeht. Auf die mehrspaltigkeit kann erweitert werden, wobei die Unikat-Anforderung in diesem Schritt nur jeweils spaltenweise durch die Filtermethode erfüllt werden kann.
Eine Userform mit einer Listbox Listbox1 (wegen Option zum MultiSelect!) mit Standardeinstellung wird als Basis erstellt und mit folgender Initalisierungs-Prozedur eröffnet:

Private Sub UserForm_Initialize()
Dim rngQ As Range, rngC As Range
Dim prevSU As Boolean
listbox1.MultiSelect = 2
listbox1.TextAlign = fmTextAlignLeft
bakSU = Application.ScreenUpdating
Application.ScreenUpdating = False
Set rngQ = Range("A1:A" & _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row)
rngQ.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
For Each rngC In rngQ
If ActiveSheet.Rows(rngC.Row).Hidden = False Then
listbox1.AddItem rngC.Value
End If
Next
ActiveSheet.ShowAllData
Application.ScreenUpdating = True
Application.ScreenUpdating = bakSU
End Sub

Wie allerdings die Liste der Listbox1 durch einen weiteren Selektionfilter geschickt werden soll, richtet sich wohl nach den Kriterien.
Will man die AdvancedFilter-Funktionalität benutzen, dann wäre
  • der Listboxinhalt auf einen eigenen (Temporär-)Bereich auszulesen,
  • die Kriterien zu setzen,
  • die AdvancedFilter auf diesen Bereich auszuführen
  • die Listbox1-Einträge löschen,
  • die gefilterte Liste analog zur Ausgangsselektion wieder in die Listbox1 einzulesen,
  • der Temporäbereich zu löschen.
    Ähnlich ist vorzugehen, will man die AutoFilter-Metohden einsetzen.
    Wie allerdings die Umgebungsparameter zu setzen sind (Konstante, Zellenbereichsinhalte, Schaltflächen-/Riigabefelder in der UserForm) das wird zu Planen sien und kann hier nicht allgemein gelöst werden.
    Vielleist hilft dieser Grundstein.
    Gruß,
    Uwe
  • Anzeige
    AW: Stufenweiser Filter m. VBA u. Combobox
    07.08.2006 02:23:24
    Tobias
    Hallo Uwe,
    vielen Dank fuer Deine Hilfe. Ich bin mir im Augenblick noch unsicher, ob ich Autofilter und Spezialfilter gleichzeitig anwenden kann, d.h. den Spezialfilter auf die vereinzelte Autofilter-Resultatliste anwenden kann.
    Mit einer Temporaer- oder Hilfsspalte moechte ich nicht arbeiten, wo wird das Ganze ueber einen Array laufen muessen.
    Der Grundstein aber ist gut. Auf gehts.
    Danke, und Gruss aus dem Land der Mitte,
    Zaijian,
    tobias
    AW: Stufenweiser Filter m. VBA u. Combobox
    07.08.2006 21:19:24
    ingUR
    Hallo, Tobias!
    Nach meinem bisherigen Verstaendnis zur Umsetzung des AutoFilters durch die entsprechenden Funktionen von EXCEL, funktioniert das abermalige Anwenden auf eine bereits gefilterte Spalte(!) nicht so, wie Du es Dir wohl wünschst.
    Die Gesamtliste der Spalte bleibt erhalten und auf ihr wird bei einer Neuauswahl der Kriterien (critica1 und critica2) der Filter wieder angewendet. Durch das Kopieren der Ur-Spalte in mehrere Folgespalten, kann für jede Spalte nacheinander ein Autofilter ausgeführt werden. Jede Spalte beruecksichtigt dabei die Auswahl der davor durchgefuehrten Autofilterungen.
    Der Einsatz des Spezialfilters hebt die Funktion des Autofilters auf. Es stehen alle Daten ungefolter zur neuen Filterung zur Verfuegung. Da hier jedoch mehr als zwei Kriterien als Filter einsetzbar sind, ist es also nur eine Frage der Formulierung der Kriterien, um an die gesuchten Daten zu gelangen.
    Soweit die manuelle, menuegesteuerte Filterung.
    Nun verstehe ich nicht kanz, warum man nicht mit einem Temporaeren Tabellenblatt arbieten sollte, da es doch Programmgesteuert kreiert und nach Aufgabenerfüllung ebenso geloescht wird.
    Vielleicht waere es für mich zu Vorstellungsunterstuetzung gut, wenn Du beschreiben koenntest, wie Deine Kriterien aufgebaut sind, dass sie nicht gemeinsam auf die Liste angewendet werden koennen, sondern nur auf den jeweils vorgefilterten Stand einer Liste.
    Allerdings würde die Arrayloesung bei geschickter Programmierung auch nicht so bedeutend zeitaufwendiger in der Ausführung ablaufen, wie die zellenorientierte EXCEL-Loesung
    Gruss,
    Uwe
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige