Сравнение на дати във VBA

страница на календара

VBA съхранява дата като брой дни от 30 декември 1899 г.

Кредит на изображението: Сергей Гнатюк/iStock/Getty Images

Сравняването на дати в Microsoft Visual Basic за приложения не се различава от сравняването на всеки друг тип данни. Стойностите, които сравнявате, трябва да са от тип „Дата“. Можете да използвате стандартните оператори за сравнение: "" за "по-голямо от"; ">=" за "по-голямо или равно на"; "=" за "равно на"; и "<>" за "не е равно на." Можете също да използвате два оператора за сравнение, „Is“ и „IsNot“.

VBA Тип дата

Полезно е да запомните как VBA съхранява стойностите на датите в паметта, когато сравнявате дати. Датата се съхранява като число с плаваща запетая с двойна точност или двойна. Дългата цяло число е броят на дните, положителни или отрицателни, от 30 декември 1899 г. Десетичната част е времето, изминало от полунощ. Дата без час има десетичната част на нула. Например 1 май 1967 г. се съхранява като 24593.0. Това означава, че когато VBA сравнява две дати, той всъщност сравнява две числа, които представляват дни.

Видео на деня

Символен низ срещу Дата

Когато сравнявате дати във VBA, трябва да се уверите, че стойностите, които сравнявате, имат тип „Дата“ и не са символни низове. Например низът от знаци "05/01/1999" е по-малък от низа от знаци "12/31/1900", защото "05" идва преди "12." Преобразувайте низ от символи в тип дата, като използвате функцията "CDate", например "CDate (Текстово поле. Стойност)".

Полезни функции

В допълнение към CDate(), има и други полезни функции, които можете да използвате, когато сравнявате дати. Функцията "Date()" предоставя днешната дата като стойност за дата. Функцията "Сега()" предоставя днешната дата и час като стойност за дата. Тъй като типът данни за дата също включва компонент за време, можете да извлечете само частта за дата на променлива когато сравнявате дати с помощта на функцията "DateValue()", например, "Ако подаване > DateValue (краен срок) Тогава ..."

Аритметика за дата

Тъй като датата се съхранява като брой дни от 30 декември 1899 г., можете да включите аритметика за дати, когато сравнявате дати във VBA. Например, ако билетът изтича три дни след като е закупен, можете да проверите за изтекъл билет с VBA код, подобен на следния:

Публичната функция е изтекла (покупка като дата) Като булева е изтекла = False Ако покупка+3 > Дата() След това е изтекла = True End If End Function