Supportnet / Forum / Tabellenkalkulation
Datumfilter über Schaltfläche
Frage
Hallo,
ich möchte in einer EXCEL-Tabelle ein Datum (Zeitraum) über eine Schaltfläche filtern.
Soweit bin ich gekommen:
habe eine Schaltfläche erstellt und mit einem Makro belegt:
Sub
Dim Mldg, Titel, Voreinstellung, Wert1
Mldg = "Z e i t r a u m von"
Titel = "Z e i t r a u m"
Voreinstellung = "01.01.05"
Wert1 = InputBox(Mldg, Titel, Voreinstellung)
Dim Mldg2, Titel2, Voreinstellung2, Wert2
Mldg2 = "Z e i t r a u m bis"
Titel = "Z e i t r a u m "
Voreinstellung2 = "31.12.05"
Wert2 = InputBox(Mldg2, Titel2, Voreinstellung2)
Selection.AutoFilter Field:=2, Criteria1:=Wert1
Selection.AutoFilter Field:=2, Criteria1:=Wert2
End Sub
Bei anderen Filtern, z.B. Adressen funktioniert das.
Beim Datumswert kann ich aber bei Wert nur "=" und nicht größer bzw kleiner eingeben.
Gibt es hier eine Lösung (oder auch evtl einen ganz anderen Vorschlag, ich möchte halt bequem, ohne über benutzerdefinerten Filter einen Zeitraum auswählen können.)
Vielen Dank schon mal!
Andreas
Antwort 1 von coros
Nabend Andreas,
nachfolgend Dein VBA Code etwas abgeändert.
Der obige Code filtert Spalte B nach zwei Datumswerten und listet die dazwischen liegenden Wert auf. Bei dem Makro wird aus dem Stringwert, den die Inputbox eigentlich zurückgibt, ein Datumswert gemacht, der dann aber in eine Variable gespeichert wird, die von Typ her als Long (Ganzzahl) deklariert wurde. Danach wird nach der Dezimalzahl, die das Datum bei Excel ja eigentlich ist, gefiltert.
Ich hoffe, das hilft Dir und Du kommst kalr. Bei Fragen oder Problemen melde Dich.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgend Dein VBA Code etwas abgeändert.
Private Sub CommandButton1_Click()
Dim Mldg, Titel, Voreinstellung, Wert1 As Long, Wert2 As Long
Mldg = "Z e i t r a u m von"
Titel = "Z e i t r a u m"
Voreinstellung = "01.01.05"
Wert1 = DateValue(InputBox(Mldg, Titel, Voreinstellung))
Mldg2 = "Z e i t r a u m bis"
Titel = "Z e i t r a u m "
Voreinstellung2 = "31.12.05"
Wert2 = DateValue(InputBox(Mldg2, Titel2, Voreinstellung2))
Selection.AutoFilter Field:=2, Criteria1:=">" & Wert1, Operator:=xlAnd, _
Criteria2:="<" & Wert2
End SubDer obige Code filtert Spalte B nach zwei Datumswerten und listet die dazwischen liegenden Wert auf. Bei dem Makro wird aus dem Stringwert, den die Inputbox eigentlich zurückgibt, ein Datumswert gemacht, der dann aber in eine Variable gespeichert wird, die von Typ her als Long (Ganzzahl) deklariert wurde. Danach wird nach der Dezimalzahl, die das Datum bei Excel ja eigentlich ist, gefiltert.
Ich hoffe, das hilft Dir und Du kommst kalr. Bei Fragen oder Problemen melde Dich.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von aNDI59
Hallo Coros
... vielen Dank - funktioniert !
vielleicht doch noch ne kleine Frage:
was hat es denn mit den "Private" sub´s auf sich?
(falls man das in wenigen Worten erklären kann)
(bin absoluter Autodidakt auf Excel/VBA und weiß nur, worüber ich bisher zufällig gestolpert, und das gehörte nicht dazu)
Hab das jetzt als ganz "normales" Makro angelegt und es läuft.
Ciao,
Andreas
... vielen Dank - funktioniert !
vielleicht doch noch ne kleine Frage:
was hat es denn mit den "Private" sub´s auf sich?
(falls man das in wenigen Worten erklären kann)
(bin absoluter Autodidakt auf Excel/VBA und weiß nur, worüber ich bisher zufällig gestolpert, und das gehörte nicht dazu)
Hab das jetzt als ganz "normales" Makro angelegt und es läuft.
Ciao,
Andreas
Antwort 3 von coros
Hi Andreas,
freut mich, dass Dir der VBA Code weitergeholfen hat. Ich hatte vergessen zu schreiben, dass es sich bei dem Code um einen Code handelt, der eine Befehlsschaltfläche mit dem Namen CommandButton1 voraussetzt. Daher auch die Startanweisung Private Sub um die Schaltfläche anzusprechen. Du kannst logischerweise den Code auch als Makro verwenden, wobei dann, wie Du es sicherlich schon selber herausgefunden hast, das Private wegfällt.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
freut mich, dass Dir der VBA Code weitergeholfen hat. Ich hatte vergessen zu schreiben, dass es sich bei dem Code um einen Code handelt, der eine Befehlsschaltfläche mit dem Namen CommandButton1 voraussetzt. Daher auch die Startanweisung Private Sub um die Schaltfläche anzusprechen. Du kannst logischerweise den Code auch als Makro verwenden, wobei dann, wie Du es sicherlich schon selber herausgefunden hast, das Private wegfällt.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

