Kuupäevade võrdlus VBA-s

kalendri leht

VBA salvestab kuupäeva päevade arvuna alates 30. detsembrist 1899.

Pildi krediit: Sergii Gnatiuk/iStock/Getty Images

Kuupäevade võrdlemine rakenduses Microsoft Visual Basic for Applications ei erine mis tahes muu andmetüübi võrdlemisest. Võrreldavate väärtuste tüüp peab olema "Kuupäev". Võite kasutada standardseid võrdlusoperaatoreid: "" tähendab "suurem kui"; ">=" "suurem või võrdne"; "=" "võrdne"; ja "<>" tähendab "mitte võrdne." Võite kasutada ka kahte võrdlusoperaatorit "Is" ja "IsNot".

VBA kuupäeva tüüp

Kuupäevade võrdlemisel on kasulik meeles pidada, kuidas VBA kuupäevaväärtused mällu salvestab. Kuupäev salvestatakse kahekordse täpsusega ujukomaarvuna või topeltarvuna. Pikk täisarvuline osa on päevade arv, olgu see positiivne või negatiivne, alates 30. detsembrist 1899. Kümnendosa on aeg, mis on möödunud keskööst. Kellaajata kuupäeva kümnendosa väärtuseks on seatud null. Näiteks 1. mai 1967 on salvestatud kui 24593.0. See tähendab, et kui VBA võrdleb kahte kuupäeva, siis tegelikult võrreldakse kahte arvu, mis tähistavad päevi.

Päeva video

Tähemärgi string vs. Kuupäev

Kui võrdlete kuupäevi VBA-s, peate tagama, et võrreldavatel väärtustel oleks tüüp "Kuupäev" ja need ei oleks märgistringid. Näiteks märgistring "05/01/1999" on väiksem kui märgistring "12/31/1900", kuna "05" tuleb enne "12". Teisendage märgistring kuupäevatüübiks, kasutades funktsiooni "CDate", näiteks "CDate (Tekstikast. Väärtus)".

Abistavad funktsioonid

Lisaks CDate() on ka muid kasulikke funktsioone, mida võite kuupäevade võrdlemisel kasutada. Funktsioon "Kuupäev()" pakub kuupäeva väärtusena tänase kuupäeva. Funktsioon "Now()" pakub kuupäeva väärtusena tänast kuupäeva ja kellaaega. Kuna andmetüüp Kuupäev sisaldab ka ajakomponenti, saate muutujast eraldada ainult kuupäevaosa kui võrrelda kuupäevi funktsiooni "DateValue()" abil, näiteks "If submission > DateValue (tähtaeg) Siis ..."

Kuupäeva aritmeetika

Kuna kuupäev salvestatakse päevade arvuna alates 30. detsembrist 1899, saate VBA-s kuupäevade võrdlemisel kaasata kuupäeva aritmeetika. Näiteks kui pilet aegub kolm päeva pärast selle ostmist, saate kontrollida aegunud piletit VBA koodiga, mis sarnaneb järgmisega:

Avalik funktsioon aegus (ost kui kuupäev) Nagu Boolean aegunud = vale, kui ost+3 > kuupäev() siis aegunud = õige lõpp, kui lõppfunktsioon