Этот пример учит, как сравнить даты и времени в Excel VBA. Даты и время сохраняются в виде чисел в Excel и подсчитать количество дней с января 0, 1900. То, что вы видите, зависит от формата номера.

  1. Введите несколько чисел в столбце A.

Numbers

  1. Эти цифры даты. Это идеальный способ ввести некоторые даты, не беспокоясь о формате Date. Изменение формата к дате (Щелкните правой кнопкой мыши на заголовке столбца, Формат ячеек и выберите даты).

Результат:

Dates

Примечание: Даты в формате США. Месяцы первые, дни Второй. Этот тип формата зависит от ваших окон региональных настроек.

Поместите командную кнопку на листе и добавьте строки следующего кода:

  1. Объявить переменную I типа Integer.

Dim i As Integer
  1. Добавьте для следующего цикла.

For i = 1 To 5

Next i
  1. Функция даты возвращает текущую дату без времени. Добавьте следующую строку кода в петлю, чтобы выделить все ячейки, содержащие текущую дату (3/13/2020).

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

Результат:

Dates Equal To

  1. Добавьте следующую строку кода в петлю, чтобы выделить все даты раньше, чем 04/19/2019.

If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed

Результат:

Dates Earlier Than

  1. Но как раз, мы слышим, вы говорите. Они десятые. Переключитесь обратно в общий формат и изменить номера для десятичных чисел.

Decimal Numbers

  1. Теперь изменим формат в формат «даты и времени и».

Date and Time Format

Результат:

Dates and Times

  1. Если вы хотите, чтобы выделить все ячейки, содержащие текущую дату, мы не можем использовать строку кода на 5 больше. Почему бы нет? Поскольку цифры в колонке А десятичные числа в настоящее время. Сравнивая его с датой (целое число), не дал бы ни одного матча. (Это было бы дать только матч с 3/13/2020 в полночь точно!) Следующая строка кода делает работу:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

Объяснение: мы просто используем функцию Int. Функция Int округляет число до ближайшего целого числа. Таким образом, мы можем получить даты без времени и сравнить эти даты с датой.

Результат:

Dates Without Times Equal To

  1. Добавьте следующую строку кода, чтобы выделить все ячейки, содержащие раз утром.

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

Объяснение: нам нужно только десятичные так поэтому мы вычитаем целую часть. Полдень (на полпути через день) представляется в виде 0,5.

Десятичные понизят чем 0,5 являются раз утром.

Результат:

Times in the Morning