Datosammenligning i VBA

kalenderside

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