Datumsvergleich in VBA

Kalenderseite

VBA speichert ein Datum als Anzahl der Tage seit dem 30. Dezember 1899.

Bildnachweis: Sergii Gnatiuk/iStock/Getty Images

Das Vergleichen von Datumsangaben in Microsoft Visual Basic für Applikationen unterscheidet sich nicht von dem Vergleichen jedes anderen Datentyps. Die zu vergleichenden Werte müssen vom Typ "Datum" sein. Sie können die Standard-Vergleichsoperatoren verwenden: "" für "größer als"; ">=" für "größer oder gleich"; "=" für "gleich"; und "<>" für "ungleich." Sie können auch zwei Vergleichsoperatoren verwenden, "Is" und "IsNot".

VBA-Datumstyp

Es ist hilfreich, sich daran zu erinnern, wie VBA Datumswerte im Speicher speichert, wenn Sie Datumsangaben vergleichen. Ein Datum wird als Gleitkommazahl mit doppelter Genauigkeit oder als Double gespeichert. Der lange ganzzahlige Teil ist die Anzahl der Tage, positiv oder negativ, seit dem 30. Dezember 1899. Der Dezimalteil ist die Zeit, die seit Mitternacht vergangen ist. Bei einem Datum ohne Uhrzeit wird der Dezimalteil auf Null gesetzt. Der 1. Mai 1967 wird beispielsweise als 24593.0 gespeichert. Das bedeutet, dass VBA beim Vergleichen von zwei Datumsangaben tatsächlich zwei Zahlen vergleicht, die Tage darstellen.

Video des Tages

Zeichenkette vs. Datum

Wenn Sie Datumsangaben in VBA vergleichen, müssen Sie sicherstellen, dass die verglichenen Werte den Typ "Datum" haben und keine Zeichenfolgen sind. Zum Beispiel ist die Zeichenkette "01.05.1999" kleiner als die Zeichenkette "31.12.1900", weil "05" kommt vor "12". Wandeln Sie eine Zeichenkette mit der Funktion "CDate" in einen Datumstyp um, zum Beispiel "CDate (Textfeld. Wert)".

Hilfreiche Funktionen

Neben CDate() gibt es weitere hilfreiche Funktionen, die Sie beim Vergleichen von Datumsangaben verwenden können. Die Funktion "Date()" liefert das heutige Datum als Datumswert. Die Funktion "Now()" liefert das heutige Datum und die aktuelle Uhrzeit als Datumswert. Da der Datentyp Datum auch eine Zeitkomponente enthält, können Sie nur den Datumsteil einer Variablen extrahieren beim Vergleich von Daten mit der Funktion "DateValue()", zum Beispiel "Wenn Einreichung > DateValue (Deadline) Then ..."

Datumsarithmetik

Da ein Datum als Anzahl der Tage seit dem 30. Dezember 1899 gespeichert wird, können Sie beim Vergleichen von Datumsangaben in VBA Datumsarithmetik einbeziehen. Wenn ein Ticket beispielsweise drei Tage nach dem Kauf abläuft, können Sie mit einem VBA-Code ähnlich dem folgenden nach einem abgelaufenen Ticket suchen:

Öffentliche Funktion abgelaufen (Kauf als Datum) As Boolean abgelaufen = False Wenn Kauf+3 > Datum() Dann abgelaufen = Wahr End If End Function