Autofilter über Makro steuern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox
Bild

Betrifft: Autofilter über Makro steuern
von: Marco
Geschrieben am: 22.09.2015 13:52:09

Hallo,
ich habe mal ein Makro erstellt wo sich eine Userform öffnet,
dort sind 2 Kalender enthalten wo man einen Datum Zeitraum von bis eingeben kann.
Dieser Zeitraum wurde in einer Tabelle im Filter eingegeben und der betroffene Bereich gedruckt.
Nun wollte ich das Makro in einer neuen Arbeitsmappe anwenden. Habe dort auch meines erachtens alle Bezüge angepasst. Nur leider wird der Datum Zeitraum von der Userform anscheinend nicht an den Filter weiter gegeben.
Kann mir jemand sagen wo der Fehler liegt?

Sub Datum_Filter_von_bis()
'
' Datum_Filter_von_bis Makro
'
'
  Dim varDatumVon As Variant
  Dim varDatumBis As Variant
'On Error Resume Next
  Sheets("CPM Archiv").Select
  If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
  UserForm2.Hide
      Rows("8:8").Select
  Selection.AutoFilter
  varDatumVon = CLng(CDate(Von))
  varDatumBis = CLng(CDate(Bis))
 With ActiveSheet.AutoFilter.Range
      .AutoFilter Field:=5, Criteria1:=">=" & varDatumVon, Operator:=xlAnd, _
                            Criteria2:="<=" & varDatumBis
  End With
  
      ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    Rows("9:9").Select
    Selection.AutoFilter
    Range("A6:A7").Select
  Sheets("Eingabe").Select
End Sub
Wenn ich das Datum manuell in den Filter gebe klappt es so wie ich möchte.

Bild

Betrifft: AW: Autofilter über Makro steuern
von: Marco
Geschrieben am: 22.09.2015 14:00:28
https://www.herber.de/bbs/user/100317.xlsm

Bild

Betrifft: AW: Autofilter über Makro steuern
von: Daniel
Geschrieben am: 22.09.2015 14:00:42
Hi
Datum + Autofilter = Schwierig.
weils kompliziert ist, was man jetzt genau angeben muss (Datum im Englischen Format usw).
da du das Filterkriterium als Ganzahl angibst varDatumVon = CLng(CDate(Von))
, musst du auch die Kriteriumsspalte in der Tabelle (E) mit dem Zahlenformat "Standard" formatieren.
wenn die Kriteriumsspalte als Datum formatiert ist, musst du als Filterkriterium einen Text angeben, den VBA als Datum erkennen kann, dh im englischen Datumsformat:

Criteria1:=">=09/22/2015"
Gruß Daniel

Bild

Betrifft: AW: Autofilter über Makro steuern
von: Marco
Geschrieben am: 22.09.2015 14:22:00
Hallo Daniel,
in der alten Tabelle sind die Zellen als Benutzerdefiniert formatiert. Dort funktioniert es ja auch.
Habe es in der neuen Tabelle mal auf Standard gesetzt, klappt leider nicht.
Habe es dann nochmal auf Benutzerdefiniert getestet, klappt leider auch nicht.
Wie kann ich es denn sonst eventuell umsetzen das ich über ein Makro einen bestimmten Datumabschnitt aus dem Archiv drucken kann.

Bild

Betrifft: AW: Autofilter über Makro steuern
von: matthias
Geschrieben am: 22.09.2015 14:10:40
Hallo Marco,
da die Variablen "Von" und "Bis" in einem anderen Makro/Userform mit Werten versehen werden, sind die Variablen hoffentlich als öffentlich deklariert? Dein Makro funktioniert nämlich ansonsten bis hin zum Drucken einwandfrei.
lg Matthias

Bild

Betrifft: AW: Autofilter über Makro steuern
von: Marco
Geschrieben am: 22.09.2015 14:39:32
Hallo Matthias,
wie mache ich die Variblen denn öffentlich?
In der alten Tabelle steht alles auf private sub.
Und die zu filternden Zellen sind als Benutzerdefiniert formatiert.
Sorry wenn die Frage eventuell etwas doof ist, aber ich habe gerade irgendwie Denkblockade.

Bild

Betrifft: AW: Autofilter über Makro steuern
von: matthias
Geschrieben am: 22.09.2015 15:57:59
"Private Sub" gibt die Verfügbarkeit des Makros an, hat jedoch mit der Variablen nichts zu tun. Damit können andere Dokumente/Module nicht auf dieses Makro zugreifen.
Zur Verfügbarkeit von Variablen gibt es generell 3 Stufen:
1.innerhalb eines Makros
2.modulweit (makroübergreifend)
3.modulübergreifend
Zu 1.:

Sub Test()
Dim lZeile As Long 'Variable innerhalb des Makros deklariert
lZeile = 5
Call Test2
End Sub
Sub Test2()
MsgBox lZeile
End Sub
Dies wird dir Null zurückgeben, weil lZeile nur innerhalb des Makros gültig ist.
Zu 2.:
Dim lZeile As Long 'Variable außerhalb des Makros deklariert
Sub Test()
lZeile = 5
Call Test2
End Sub
Sub Test2()
MsgBox lZeile
End Sub
Hier wird der Wert übergeben, solange beide Makros im selben Modul liegen.
Zu 3.:
Public lZeile As Long 'Variable außerhalb des Makros und mit Public deklariert
Sub Test()
lZeile = 5
Call Test2
End Sub
Sub Test2()
MsgBox lZeile
End Sub
Hier wird der Wert übergeben, auch wenn die Makros in verschiedenen Modulen liegen.
Genau so wie ich das hier gemacht habe, kannst du einfach am Anfang deines Codes eine MsgBox einfügen und dir "Von" und "Bis" anzeigen lassen, ob diese korrekt übergeben wurden. Fall sie leer sind, weist du nun was du ändern musst.
lg Matthias

Bild

Betrifft: AW: Autofilter über Makro steuern
von: Marco
Geschrieben am: 23.09.2015 07:28:44
Hallo Matthias,
ich habe es gestern noch hin bekommmen.
Ich habe folgenden Code über das Makro gesetzt, war bei der alten Version auch so, hatte ich übersehen.
Public Von As Variant
Public Bis As Variant
Die Zellen sind auf Benutzerdefiniert gestellt, dann klappt es.
Allerdings muss ich das Datum in alle 3 zu druckende Zeilen schreiben, da sonst nicht der komplette Datensatz gedruckt wird.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Autofilter über Makro steuern"