Monatsfilter ändern
#1
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.
Antworten Top
#2
Es gibt im Autofilter doch einen Datumsfilter, ansonsten Beispieldatei


Angehängte Dateien Thumbnail(s)
   
[-] Folgende(r) 1 Nutzer sagt Danke an Warkings für diesen Beitrag:
  • Rabe
Antworten Top
#3
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.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
[-] Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:
  • Rabe
Antworten Top
#4
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Rabe
Antworten Top
#5
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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste