VBA gemmer en dato som antallet af dage siden 30. december 1899.
Billedkredit: Sergii Gnatiuk/iStock/Getty Images
Sammenligning af datoer i Microsoft Visual Basic for Applications er ikke anderledes end at sammenligne enhver anden datatype. De værdier, du sammenligner, skal være af typen "Dato". Du kan bruge standard sammenligningsoperatorerne: "" for "større end"; ">=" for "større end eller lig med"; "=" for "lig med"; og "<>" for "ikke lig med." Du kan også bruge to sammenligningsoperatorer, "Er" og "IsNot".
VBA-datotype
Det er nyttigt at huske, hvordan VBA gemmer datoværdier i hukommelsen, når du sammenligner datoer. En dato gemmes som et flydende decimaltal med dobbelt præcision eller et dobbelt. Den lange heltalsdel er antallet af dage, positive eller negative, siden 30. december 1899. Decimaldelen er den tid, der er gået siden midnat. En dato uden tid har sin decimaldel sat til nul. For eksempel er 1. maj 1967 gemt som 24593.0. Det betyder, at når VBA sammenligner to datoer, så sammenligner det faktisk to tal, der repræsenterer dage.
Dagens video
Karakterstreng vs. Dato
Når du sammenligner datoer i VBA, skal du sikre dig, at de værdier, du sammenligner, har en "Dato"-type og ikke er tegnstrenge. For eksempel er tegnstrengen "05/01/1999" mindre end tegnstrengen "12/31/1900", fordi "05" kommer før "12." Konverter en tegnstreng til en datotype ved hjælp af "CDate"-funktionen, for eksempel "CDate (Tekstboks. Værdi)".
Nyttige funktioner
Ud over CDate() er der andre nyttige funktioner, du kan bruge, når du sammenligner datoer. Funktionen "Date()" giver dagens dato som en datoværdi. Funktionen "Now()" giver dagens dato og klokkeslæt som en datoværdi. Da datatypen Dato også indeholder en tidskomponent, kan du kun udtrække datodelen af en variabel når man sammenligner datoer ved at bruge "DateValue()"-funktionen, for eksempel "Hvis indsendelse > DatoValue (deadline) så ..."
Datoregning
Fordi en dato er gemt som antallet af dage siden 30. december 1899, kan du inkludere datoaritmetik, når du sammenligner datoer i VBA. For eksempel, hvis en billet udløber tre dage efter, at den blev købt, kan du tjekke for en udløbet billet med VBA-kode svarende til følgende:
Offentlig funktion udløbet (køb som Dato) Som Boolean udløbet = Falsk Hvis køb+3 > Dato() Så udløbet = Sand Slut Hvis Slut Funktion