Vergleichen Sie Daten und Zeiten in Excel VBA
Dieses Beispiel zeigt Ihnen, wie Datum und Uhrzeit in Excel VBA zu vergleichen. Termine und Zeiten werden als Zahlen in Excel gespeichert und zählen die Anzahl der Tage seit dem 0 Januar 1900. Was Sie ist abhängig von der Zahlenformat zu sehen.
-
Einige Zahlen in Spalte A eingeben
-
Diese Zahlen sind Termine. Dies ist ein perfekter Weg, um einige Tage, ohne sich Gedanken über das Datumsformat eingeben. Ändern Sie das Format auf Datum (Rechtsklick auf die Spalte A-Header, Zellen formatieren und wählen Datum).
Ergebnis:
Hinweis: Daten sind in US-Format. Monate erste Days Zweite. Diese Art von Format ist abhängig von Ihrer Windows-Ländereinstellungen.
Platzieren Sie eine Befehlstaste auf dem Arbeitsblatt und fügen Sie die folgenden Codezeilen:
Deklarieren Sie die Variable 3. i vom Typ Integer.
Dim i As Integer
-
Fügen Sie eine Schleife For Next.
For i = 1 To 5 Next i
-
Die Datumsfunktion gibt das aktuelle Datum ohne die Zeit. Fügen Sie die folgende Codezeile in die Schleife, um alle Zellen zu markieren, um das aktuelle Datum enthält (2020.03.13).
If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed
Ergebnis:
-
In der Schleife die folgende Codezeile, alle die Daten früher als 2019.04.19 zu markieren.
If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed
Ergebnis:
-
Aber was mal, wir hören Sie sagen. Sie sind die Dezimalstellen. Wechseln Sie zurück zu General Format und ändern Sie die Zahlen Dezimalzahlen.
-
Nun das Format ‚Datum und Uhrzeit‘ Format ändern.
Ergebnis:
-
Wenn Sie alle Zellen markieren, um das aktuelle Datum enthalten, können wir nicht die Codezeile in 5 mehr verwenden. Warum nicht? Da die Zahlen in Spalte A sind jetzt Dezimalzahlen. Vergleicht man es mit Datum (eine ganze Zahl) würde keine Übereinstimmung geben. (Es wäre nur ein Spiel mit 2020.03.13 um Mitternacht geben genau!) Die folgende Codezeile funktioniert:
If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed
Erläuterung: wir einfach die Funktion Int verwenden. Die Int-Funktion rundet eine Zahl auf die nächste ganze Zahl. Auf diese Weise können wir die Daten ohne die Zeiten erhalten und diese Daten mit Datum vergleichen.
Ergebnis:
-
Fügen Sie den folgenden Code-Zeile alle Zellen am Morgen enthalten Zeiten hervorzuheben.
If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed
Erläuterung: Wir brauchen nur die Dezimalzahlen so also wir den ganzzahligen Teil subtrahieren. Mittag (auf halbem Weg durch den Tag) als 0,5 dargestellt.
Dezimalzahlen von weniger als 0,5 die Zeiten am Morgen sind.
Ergebnis: