VBA lagrar ett datum som antalet dagar sedan 30 december 1899.
Bildkredit: Sergii Gnatiuk/iStock/Getty Images
Att jämföra datum i Microsoft Visual Basic for Applications är inte annorlunda än att jämföra någon annan datatyp. Värdena du jämför måste vara av typen "Datum". Du kan använda standardoperatorerna för jämförelse: "" för "större än"; ">=" för "större än eller lika med"; "=" för "lika med"; och "<>" för "inte lika med." Du kan också använda två jämförelseoperatorer, "Is" och "IsNot".
VBA-datumtyp
Det är bra att komma ihåg hur VBA lagrar datumvärden i minnet när du jämför datum. Ett datum lagras som ett flyttal med dubbel precision, eller ett dubbelt. Den långa heltalsdelen är antalet dagar, positiva eller negativa, sedan 30 december 1899. Decimaldelen är den tid som har förflutit sedan midnatt. Ett datum utan tid har dess decimaldel inställd på noll. Till exempel lagras 1 maj 1967 som 24593.0. Det betyder att när VBA jämför två datum, är det faktiskt att jämföra två siffror som representerar dagar.
Dagens video
Character String vs. Datum
När du jämför datum i VBA måste du se till att värdena du jämför har typen "Datum" och inte är teckensträngar. Till exempel är teckensträngen "05/01/1999" mindre än teckensträngen "12/31/1900" eftersom "05" kommer före "12." Konvertera en teckensträng till en datumtyp med funktionen "CDate", till exempel "CDate (Textruta. Värde)".
Användbara funktioner
Förutom CDate() finns det andra användbara funktioner du kan använda när du jämför datum. Funktionen "Date()" tillhandahåller dagens datum som ett datumvärde. Funktionen "Now()" tillhandahåller dagens datum och tid som ett datumvärde. Eftersom datatypen Datum också innehåller en tidskomponent kan du bara extrahera datumdelen av en variabel när man jämför datum med funktionen "DateValue()", till exempel "Om inlämning > DateValue (deadline) Då ..."
Datum Aritmetik
Eftersom ett datum lagras som antalet dagar sedan 30 december 1899, kan du inkludera datumaritmetik när du jämför datum i VBA. Till exempel, om en biljett går ut tre dagar efter att den köptes kan du kontrollera om det finns en utgången biljett med VBA-kod som liknar följande:
Offentlig funktion har löpt ut (köp som Datum) Som Boolean utgången = Falskt Om köp+3 > Datum() Sedan utgången = True End If End-funktion