Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

VBA-Filter: Datumsvergleich als Kriterium (für Wiedervorlage)

Begonnen von Elektroschrott, Januar 04, 2018, 22:11:08

⏪ vorheriges - nächstes ⏩

Elektroschrott

Ich möchte über VBA einen Filter erweitern, der mir alle Datensätze anzeigt, deren Feld "VorlageDatum" nicht in der Zukunft liegt. Also quasi als Wiedervorlage.
Markiert werden diese bereits farbig und mit Rahmen über diese Kernfunktion:

strHeute = Format(Now, "\#yyyy\-mm\-dd\#")
strDatum = Format(VorlageDatum, "\#yyyy\-mm\-dd\#")
    If strDatum <= strHeute Then
        Me.txtVorlage.BackColor = RGB(255, 194, 14)
        Me.VorlageDatum.BackColor = RGB(255, 194, 14)
    Else
        Me.txtVorlage.BackColor = RGB(255, 255, 255)
        Me.VorlageDatum.BackColor = RGB(255, 255, 255)
        Me.rechteckMarker.Visible = True
    End If

Nun suche in einen Filter, um über Criteria diese zu definieren. Stark vereinfacht lautet dieser derzeit:

Criteria = BuildCriteria("Ehemalig = False")
Me.Filter = Criteria

Mein Versuch ging in diese Richtung:

strHeute = Format(Now, "\#yyyy\-mm\-dd\#")
strDatum = Format(VorlageDatum, "\#yyyy\-mm\-dd\#")
Criteria = BuildCriteria("Ehemalig = False" & " AND " & "strDatum <= strHeute")
Me.Filter = Criteria

Aber irgendwie will das nicht, vermutlich lässt sich mit dieser Bedingung gar kein Filter definieren, oder?
Vielen Dank für alle Hinweise !!

Lachtaube

BuildCriteria erwartet 3 Argumente in vorgegebener Reihenfolge, muss aber für konstante Ausdrücke, wie sie hier vorliegen, erst gar nicht eingesetzt werden.

   Const WiedervorlageColor As Long = &HEC2FF 'RGB(255,194,14)

   If Me.VorlageDatum <= VBA.Date() Then
      Me.txtVorlage.BackColor = WiedervorlageColor
      Me.VorlageDatum.BackColor = WiedervorlageColor
   Else
      Me.txtVorlage.BackColor = vbWhite
      Me.VorlageDatum.BackColor = vbWhite
      '... und wo wird das Rechteck unsichtbar geschaltet?
      Me.rechteckMarker.Visible = True
   End If

   '....

   Me.Filter = "Ehemalig = False AND VorlageDatum <= Date()"
   Me.FilterOn = True
Grüße von der (⌒▽⌒)

Elektroschrott

Klasse, hat geklappt, auch wenn ich auf Criteria = BuildCriteria nicht verzichten kann (Optionsgruppe).