VBA lagrer en dato som antall dager siden 30. desember 1899.
Bildekreditt: Sergii Gnatiuk/iStock/Getty Images
Å sammenligne datoer i Microsoft Visual Basic for Applications er ikke annerledes enn å sammenligne andre datatyper. Verdiene du sammenligner må være av typen «Dato». Du kan bruke standard sammenligningsoperatorer: "" for "større enn"; ">=" for "større enn eller lik"; "=" for "lik"; og "<>" for "ikke lik." Du kan også bruke to sammenligningsoperatorer, "Is" og "IsNot."
VBA datotype
Det er nyttig å huske hvordan VBA lagrer datoverdier i minnet når du sammenligner datoer. En dato lagres som et flyttall med dobbel presisjon, eller en dobbel. Den lange heltallsdelen er antall dager, positive eller negative, siden 30. desember 1899. Desimaldelen er hvor lang tid som har gått siden midnatt. En dato uten tid har desimaldelen satt til null. For eksempel er 1. mai 1967 lagret som 24593.0. Dette betyr at når VBA sammenligner to datoer, er det faktisk å sammenligne to tall som representerer dager.
Dagens video
Karakterstreng vs. Dato
Når du sammenligner datoer i VBA, må du sørge for at verdiene du sammenligner har en "Dato"-type og ikke er tegnstrenger. For eksempel er tegnstrengen "05/01/1999" mindre enn tegnstrengen "12/31/1900" fordi "05" kommer før "12." Konverter en tegnstreng til en datotype ved å bruke "CDate"-funksjonen, for eksempel "CDate (Tekstboks. Verdi)".
Nyttige funksjoner
I tillegg til CDate(), er det andre nyttige funksjoner du kan bruke når du sammenligner datoer. "Date()"-funksjonen gir dagens dato som en datoverdi. "Now()"-funksjonen gir dagens dato og klokkeslett som en datoverdi. Fordi datatypen Dato også inkluderer en tidskomponent, kan du bare trekke ut datodelen av en variabel når du sammenligner datoer ved å bruke "DateValue()"-funksjonen, for eksempel "If submission > DateValue (deadline) Then ..."
Datoregning
Fordi en dato er lagret som antall dager siden 30. desember 1899, kan du inkludere datoaritmetikk når du sammenligner datoer i VBA. For eksempel, hvis en billett utløper tre dager etter at den ble kjøpt, kan du se etter en utløpt billett med VBA-kode som ligner på følgende:
Offentlig funksjon utløpt (kjøp som Dato) Som boolsk utløpt = Falsk Hvis kjøp+3 > Dato() Så utløpt = True End If End-funksjonen