Clever-Excel-Forum

Normale Version: Monatsfilter ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe einen Filter per Makro, für jeden Monat einen Button.

z.B. hier für Januar:
Code:
Option Explicit

Const Jahr = 2022
Public Monat As Integer

Sub FilterMonat()
    ActiveSheet.ListObjects("Gästeliste").Range.AutoFilter Field:=4, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Monat & "/1/" & Jahr)
End Sub

Sub Abreise_Jan()
'
' Abreise_Januar Makro
'
Const Monat = 1
'
   Call FilterMonat
'    ActiveSheet.ListObjects("Gästeliste").Range.AutoFilter Field:=4, Operator:= _
        xlFilterValues, Criteria2:=Array(1, Monat & "/1/" & Jahr)
End Sub

Wie kann ich das machen, damit ich in jedem Makro nur die Sammel-Routine aufrufe, die mir dann das Filtern übernimmt. So wie oben funktioniert es nicht.
Es gibt im Autofilter doch einen Datumsfilter, ansonsten Beispieldatei
Hi,

bei Datumswerten meine ich, dass du das Kriterium mit "=" definieren musst:

Code:
Criteria2:="=" & Datum ...

Einen anderen Tipp hatte ich irgendwann mal so verwendet:

Code:
Criteria1:=">=" & Datum, Operator:=xlAnd, Criteria2:="<=" & Datum ...

Viel Erfolg.
Hallo Ralf,

das liegt an der Deklaration Deiner Variablen.
Mit
Sub ...
Const Monat = 1
End Sub
wird die in diesem Makro verwendete Variable Monat auf Makroebene reduziert und belegt nicht die Public Variable Monat.

Nimm
Sub ...
Monat = 1
End Sub
Hallo zusammen,

ich habe es nun so gelöst:

Sub FilterMonat(intMonat As Integer)
   ' 
   ' FilterMonat Makro 
   ' 
   intJahr = Sheets("Verwaltung").Range("J4")
   'Dim intMonat As Integer 
   'intMonat = Sheets("Gäste").Range("S1") 
   ' 
   ActiveSheet.ListObjects("Gästeliste").Range.AutoFilter Field:=4, Operator:= _
       xlFilterValues, Criteria2:=Array(1, intMonat & "/1/" & intJahr)
End Sub

Sub Abreise_Jan()
   ' 
   ' Abreise_Januar Makro 
   ' 
   
   ' 
   Call FilterMonat(1)
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Dann fiel mir ein:
Wenn ich statt der Monatsbuttons ein Listenelement einfüge mit den 12 Monaten, kann ich ja durch Auswahl eines Monats in eine Zelle eine Zahl von 1-12 eintragen. Jetzt kann ich das "FilterMonat" aufrufen, damit es mir dann in der Liste die Monate filtert.
Dieses Makro habe ich dem Listenelement zugewiesen:

Sub FilterMonat()
   ' 
   ' FilterMonat Makro 
   ' 
   intJahr = Sheets("Verwaltung").Range("J4")
   Dim intMonat As Integer
   intMonat = Sheets("Gäste").Range("S1")
   ' 
   ActiveSheet.ListObjects("Gästeliste").Range.AutoFilter Field:=4, Operator:= _
       xlFilterValues, Criteria2:=Array(1, intMonat & "/1/" & intJahr)
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Damit fallen die 12 Monatsbuttons und auch die 12 Monats-Makros weg, und das Arbeitsblatt ist übersichtlicher.