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

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

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

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

Сравнение дат в Microsoft Visual Basic для приложений ничем не отличается от сравнения любого другого типа данных. Сравниваемые значения должны иметь тип «Дата». Вы можете использовать стандартные операторы сравнения: «" для "больше чем"; "> =" для "больше или равно"; "=" для "равно"; и «<>» для «не равно». Вы также можете использовать два оператора сравнения: «Is» и «IsNot».

Тип даты VBA

При сравнении дат полезно помнить, как VBA сохраняет значения даты в памяти. Дата хранится в виде числа с плавающей запятой двойной точности или типа Double. Длинная целая часть - это количество дней, положительных или отрицательных, с 30 декабря 1899 года. Десятичная часть - это количество времени, прошедшее с полуночи. Десятичная часть даты без времени имеет нулевое значение. Например, 1 мая 1967 г. сохраняется как 24593.0. Это означает, что когда VBA сравнивает две даты, он фактически сравнивает два числа, представляющих дни.

Видео дня

Символьная строка против. Дата

При сравнении дат в VBA необходимо убедиться, что сравниваемые значения имеют тип «Дата» и не являются символьными строками. Например, символьная строка «01.05.1999» меньше символьной строки «31.12.1900», потому что «05» стоит перед "12". Преобразуйте символьную строку в тип даты с помощью функции «CDate», например, «CDate». (Текстовое окно. Ценность)".

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

Помимо CDate (), есть и другие полезные функции, которые вы можете использовать при сравнении дат. Функция «Дата ()» предоставляет сегодняшнюю дату как значение даты. Функция «Сейчас ()» предоставляет сегодняшнюю дату и время как значение даты. Поскольку тип данных Date также включает компонент времени, вы можете извлечь только часть даты переменной. при сравнении дат с помощью функции «DateValue ()», например, «Если отправка> DateValue (крайний срок), то ..."

Дата Арифметика

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

Срок действия общедоступной функции истек (покупка как дата) As Boolean expired = False If Purchase + 3> Date () Then expired = True End If End Function