VBA przechowuje datę jako liczbę dni od 30 grudnia 1899.
Źródło obrazu: Sergii Gnatiuk/iStock/Getty Images
Porównywanie dat w Microsoft Visual Basic for Applications nie różni się od porównywania dowolnego innego typu danych. Porównywane wartości muszą być typu „Data”. Możesz użyć standardowych operatorów porównania: "" dla "większego niż"; ">=" dla "większego lub równego"; "=" dla "równe"; i „<>” dla „nie równe”. Możesz także użyć dwóch operatorów porównania: „Jest” i „Nie jest”.
Typ daty VBA
Warto pamiętać, jak VBA przechowuje wartości dat w pamięci podczas porównywania dat. Data jest przechowywana jako liczba zmiennoprzecinkowa podwójnej precyzji lub Double. Długa część całkowita to liczba dni, dodatnich lub ujemnych, od 30 grudnia 1899 r. Część dziesiętna to czas, który upłynął od północy. Data bez czasu ma swoją część dziesiętną ustawioną na zero. Na przykład 1 maja 1967 jest przechowywany jako 24593.0. Oznacza to, że kiedy VBA porównuje dwie daty, w rzeczywistości porównuje dwie liczby reprezentujące dni.
Wideo dnia
Ciąg znaków vs. Data
Podczas porównywania dat w języku VBA należy upewnić się, że porównywane wartości mają typ „Date” i nie są ciągami znaków. Na przykład ciąg znaków „05/01/1999” jest mniejszy niż ciąg znaków „31/12/1900”, ponieważ „05” pojawia się przed „12”. Przekonwertuj ciąg znaków na typ daty za pomocą funkcji „CDate”, na przykład „CDate (Pole tekstowe. Wartość)".
Pomocne funkcje
Oprócz CDate() istnieją inne przydatne funkcje, których możesz użyć podczas porównywania dat. Funkcja „Date()” udostępnia dzisiejszą datę jako wartość Date. Funkcja „Now()” podaje dzisiejszą datę i godzinę jako wartość Date. Ponieważ typ danych Date zawiera również składnik czasu, ze zmiennej można wyodrębnić tylko część daty podczas porównywania dat za pomocą funkcji „DateValue()”, na przykład „Jeśli przesłanie > DateValue (termin) Następnie ..."
Arytmetyka dat
Ponieważ data jest przechowywana jako liczba dni od 30 grudnia 1899, można uwzględnić arytmetykę dat podczas porównywania dat w języku VBA. Na przykład, jeśli bilet wygasa trzy dni po jego zakupie, możesz sprawdzić wygasły bilet z kodem VBA podobnym do następującego:
Funkcja publiczna wygasła (zakup jako data) As Boolean wygasła = False Jeśli zakup +3 > Date() Następnie wygasła = True End If End Function