VBA saugo datą kaip dienų skaičių nuo 1899 m. gruodžio 30 d.
Vaizdo kreditas: Sergii Gnatiuk/iStock/Getty Images
Datų palyginimas programoje „Microsoft Visual Basic for Applications“ nesiskiria nuo bet kokio kito duomenų tipo palyginimo. Vertės, kurias lyginate, turi būti „Data“. Galite naudoti standartinius palyginimo operatorius: "" reiškia "didesnis nei"; ">=" "didesnis nei arba lygus"; "=" "lygus"; ir „<>“ reiškia „nelygus“. Taip pat galite naudoti du palyginimo operatorius „Is“ ir „IsNot“.
VBA datos tipas
Lyginant datas naudinga prisiminti, kaip VBA išsaugo datos reikšmes atmintyje. Data išsaugoma kaip dvigubo tikslumo slankiojo kablelio skaičius arba dvigubas skaičius. Ilgoji sveikojo skaičiaus dalis yra dienų skaičius, teigiamas arba neigiamas, nuo 1899 m. gruodžio 30 d. Dešimtainė dalis – tai laikas, praėjęs nuo vidurnakčio. Datos be laiko dešimtainė dalis nustatoma į nulį. Pavyzdžiui, 1967 m. gegužės 1 d. saugoma kaip 24593.0. Tai reiškia, kad kai VBA lygina dvi datas, tai iš tikrųjų lygina du skaičius, kurie reiškia dienas.
Dienos vaizdo įrašas
Simbolių eilutė vs. Data
Kai lyginate datas VBA, turite įsitikinti, kad lyginamos reikšmės turi „datos“ tipą ir nėra simbolių eilutės. Pavyzdžiui, simbolių eilutė "05/01/1999" yra mažesnė už simbolių eilutę "12/31/1900", nes "05" yra prieš "12". Konvertuokite simbolių eilutę į datos tipą naudodami funkciją „CDate“, pavyzdžiui, „CDate (Teksto laukelis. Vertė)“.
Naudingos funkcijos
Be CDate(), yra ir kitų naudingų funkcijų, kurias galite naudoti lygindami datas. Funkcija „Data()“ pateikia šiandienos datą kaip datos reikšmę. Funkcija „Now()“ pateikia šiandienos datą ir laiką kaip datos reikšmę. Kadangi duomenų tipas Data taip pat apima laiko komponentą, galite išskirti tik kintamojo datos dalį lyginant datas naudojant funkciją „DateValue()“, pvz., „Jei pateikimas > Datos vertė (terminas) Tada ..."
Datos aritmetika
Kadangi data išsaugoma kaip dienų skaičius nuo 1899 m. gruodžio 30 d., lygindami datas VBA galite įtraukti datos aritmetiką. Pavyzdžiui, jei bilieto galiojimo laikas baigiasi praėjus trims dienoms po jo įsigijimo, galite patikrinti, ar bilietas pasibaigęs, naudodami VBA kodą, panašų į šį:
Viešosios funkcijos galiojimo laikas baigėsi (pirkti kaip data) Kaip Būlio reikšmė pasibaigė = Netiesa, jei pirkimas+3 > Data () Tada pasibaigė = Tikra pabaiga, jei pabaigos funkcija