Сравнение дат в VBA
Сравнение дат в Microsoft Visual Basic для приложений ничем не отличается от сравнения любого другого типа данных. Сравниваемые значения должны относиться к типу «Дата». Вы можете использовать стандартные операторы сравнения:"<" для "меньше чем"; "<=" для "меньше или равно"; «>» для «больше чем»; ">=" для "больше или равно"; "=" для "равно"; и «<>» для «не равно». Вы также можете использовать два оператора сравнения:"Is" и "IsNot".
Тип даты VBA
Полезно помнить, как VBA хранит значения даты в памяти, когда вы сравниваете даты. Дата хранится в виде числа с плавающей запятой двойной точности или типа Double. Длинная целая часть — это количество дней, положительных или отрицательных, с 30 декабря 1899 года. Десятичная часть — это количество времени, прошедшее с полуночи. Дата без времени имеет свою десятичную часть, установленную на ноль. Например, 1 мая 1967 года хранится как 24593.0.0. Это означает, что когда VBA сравнивает две даты, на самом деле сравниваются два числа, представляющие дни.
Строка символов против. Дата
Когда вы сравниваете даты в VBA, вы должны убедиться, что сравниваемые значения имеют тип «Дата» и не являются символьными строками. Например, строка символов «01.05.1999» меньше строки символов «31.12.1900», поскольку «05» предшествует «12». Преобразуйте строку символов в тип даты с помощью функции "CDate", например, "CDate(TextBox.Value)".
Полезные функции
В дополнение к CDate() есть и другие полезные функции, которые вы можете использовать при сравнении дат. Функция «Дата()» предоставляет текущую дату в качестве значения даты. Функция «Сейчас()» предоставляет текущую дату и время в качестве значения даты. Поскольку тип данных Date также включает компонент времени, вы можете извлечь только часть даты из переменной при сравнении дат с помощью функции «DateValue()», например, «Если отправка> DateValue(крайний срок) Тогда...»
Арифметика даты
Поскольку дата хранится как количество дней с 30 декабря 1899 г., вы можете включить арифметику дат при сравнении дат в VBA. Например, если срок действия билета истекает через три дня после его покупки, вы можете проверить билет с истекшим сроком действия с помощью кода VBA, аналогичного следующему:
Публичная функция истекла (покупка как дата) Как логическое значение expired =False If Purchase+3> Date() Then expired =True End If End Function