Сравнение дат и времени в Excel VBA
Этот пример учит, как сравнить даты и времени в Excel VBA. Даты и время сохраняются в виде чисел в Excel и подсчитать количество дней с января 0, 1900. То, что вы видите, зависит от формата номера.
-
Введите несколько чисел в столбце A.
-
Эти цифры даты. Это идеальный способ ввести некоторые даты, не беспокоясь о формате Date. Изменение формата к дате (Щелкните правой кнопкой мыши на заголовке столбца, Формат ячеек и выберите даты).
Результат:
Примечание: Даты в формате США. Месяцы первые, дни Второй. Этот тип формата зависит от ваших окон региональных настроек.
Поместите командную кнопку на листе и добавьте строки следующего кода:
-
Объявить переменную I типа Integer.
Dim i As Integer
-
Добавьте для следующего цикла.
For i = 1 To 5 Next i
-
Функция даты возвращает текущую дату без времени. Добавьте следующую строку кода в петлю, чтобы выделить все ячейки, содержащие текущую дату (3/13/2020).
If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed
Результат:
-
Добавьте следующую строку кода в петлю, чтобы выделить все даты раньше, чем 04/19/2019.
If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed
Результат:
-
Но как раз, мы слышим, вы говорите. Они десятые. Переключитесь обратно в общий формат и изменить номера для десятичных чисел.
-
Теперь изменим формат в формат «даты и времени и».
Результат:
-
Если вы хотите, чтобы выделить все ячейки, содержащие текущую дату, мы не можем использовать строку кода на 5 больше. Почему бы нет? Поскольку цифры в колонке А десятичные числа в настоящее время. Сравнивая его с датой (целое число), не дал бы ни одного матча. (Это было бы дать только матч с 3/13/2020 в полночь точно!) Следующая строка кода делает работу:
If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed
Объяснение: мы просто используем функцию Int. Функция Int округляет число до ближайшего целого числа. Таким образом, мы можем получить даты без времени и сравнить эти даты с датой.
Результат:
-
Добавьте следующую строку кода, чтобы выделить все ячейки, содержащие раз утром.
If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed
Объяснение: нам нужно только десятичные так поэтому мы вычитаем целую часть. Полдень (на полпути через день) представляется в виде 0,5.
Десятичные понизят чем 0,5 являются раз утром.
Результат: