Clever-Excel-Forum

Normale Version: Filter aktualisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hey Leute,

anbei eine Beispieldatei. Ich habe 3 Filter in der Userform, welche sich über STRG+Q ausführen lässt. Meine Bitte ist es das ich nach Spalte O N und J filtern kann, auch in dieser Reihenfolge. Ich bekomme die Codes für die Filter nicht genau angepasst. Hier nochmal die Codes für die Filter, ansonsten zu finden in VBA. 


Code:
Private Sub ComboBox1_Change()
'Filtert Spalte O (=Spalte 15)
ActiveSheet.ListObjects("Tabelle2").Range.AutoFilter Field:=15, Criteria1:=UserForm1.ComboBox1 '14 steht für die Spalte die gefiltert wird.
UserForm1.ComboBox2.Enabled = False 'aktiviert die 2 ComboBox
'ComboBox1.Sorted = True
Call Cbo_Spalte13 'ruft das Makro auf
End Sub
Private Sub ComboBox2_Change()
'Filtert Spalte N (=Spalte 14)

Criteria1 = UserForm1.ComboBox2 & "*"
ActiveSheet.ListObjects("Tabelle2").Range.AutoFilter Field:=14, Criteria1:=UserForm1.ComboBox2 '13 steht für die Spalte die gefiltert wird.
UserForm1.ComboBox3.Enabled = True 'aktiviert die 3 ComboBox
Call Cbo_Spalte11 'ruft das Makro auf
End Sub
Private Sub ComboBox3_Change()
'Filtert Spalte J (=Spalte 10)

Criteria1 = UserForm1.ComboBox3 & "*"
ActiveSheet.ListObjects("Tabelle2").Range.AutoFilter Field:=10, Criteria1:=UserForm1.ComboBox3 '11 steht für die Spalte die gefiltert wird.
End Sub
Private Sub Cbo_Spalte14()

Dim oDic14 As Object, meAr14
Dim A As Long

Set oDic14 = CreateObject("Scripting.Dictionary")

With Sheets("Tabelle1")
   meAr14 = .Range("N7", .Cells(.Rows.Count, "N").End(xlUp)).SpecialCells(xlCellTypeVisible)
End With

For A = 1 To UBound(meAr14)
 oDic14(meAr14(A, 1)) = 0
Next

ComboBox1.List = oDic14.keys

End Sub
Private Sub Cbo_Spalte13()
Dim ws As Worksheet
Dim iZeile As Long

Set ws = Sheets("Tabelle1")

For iZeile = 7 To ws.Cells(Rows.Count, "o").End(xlUp).Row
   If WorksheetFunction.CountIf(ws.Range("o7:o" & iZeile), ws.Cells(iZeile, "o")) = 1 And _
       ws.Rows(iZeile).Hidden = False Then _
   ComboBox2.AddItem ws.Cells(iZeile, "o")
Next iZeile
End Sub
Private Sub Cbo_Spalte11()
Dim ws As Worksheet
Dim iZeile As Long

Set ws = Sheets("Tabelle1")

For iZeile = 7 To ws.Cells(Rows.Count, "L").End(xlUp).Row
   If WorksheetFunction.CountIf(ws.Range("L7:L" & iZeile), ws.Cells(iZeile, "L")) = 1 And _
       ws.Rows(iZeile).Hidden = False Then _
   ComboBox3.AddItem ws.Cells(iZeile, "L")
Next iZeile
End Sub

Vielen Dank
Deine Datei ist falsch, man erhält schon beim Auswählen des ersten Filters eine Fehlermeldung. Offensichtlich enthält deine Datei kein Listobject namens "Tabelle2". Außerdem sehe ich sofort, dass der Filter für Spalte 15 die Werte aus Spalte 14 enthält.
Hallo,

warum willst du per UserForm eine Standardfunktion nachbilden? Es ist doch völlig wumpe, in welcher Reihenfolge die Spalten gefiltert werden, am Ende bleibt immer das übrig, was über alle Filter vorhanden ist.
Danke schon mal für die Hinweise, mache mich direkt ran und werde die Datei verbessern.
Hey Klaus Dieter,

Danke für deine Antwort.

Es geht darum das es anwenderfreundlicher sein soll. Mit der Userform arbeiten nachehr Leute die sehr wenig Excel Kentnisse haben. Die Filterreihenfolge wäre ausserdem ebenfalls ein netten Zusatz, da die Endtabelle sehr viel Filteroptionen gibt (Abteilungen).
Hallo zusammen anbei die aktualisierte Datei, die Filter funktionieren so halb gut.

Ich möchte bitte das der Filter für Spalte 10 immer zu sehen ist und Spalte 14 erst aktivieren wenn 15 gefiltert wurde.
Ich verstehe ehrlich gesagt dein Problem nicht, exakt das gleiche Thema wurde doch bereits hier behandelt und gelöst. Woran scheitert es, den Code zu übernehmen?
in dem Post auf den du referierst ist der Filter logisch der Reihenfolge nach. Jetzt gibt es noch den Filter der Spalte 10 zusätzlich. Also eine Combobox die immer aktivert bleiben soll und mit der ich auch direkt filtern kann. Bei mir wird die 3. Combobox erst mit Daten gefüttert wenn ich die ersten beiden Filter verwendet habe.
Dann brauchst du eine Prozedur, die die Combobox der Spalte 10 befüllt. Bei jeder Änderung einer der anderen Comboboxen, muss diese Prozedur erneut aufgerufen werden.
Eine zweite Prozedur ist dann der eigentliche Filtervorgang in Spalte 10
kannst du mir eventuell damit weiterhelfen? Ich komme nicht weiter...
Seiten: 1 2