Сравнение DateTime из ячейки с двумя датами VBA - PullRequest
3 голосов
/ 05 ноября 2011

Я пытаюсь сравнить даты со временем внутри ячейки с помощью Now ()

У меня есть код, поэтому таблица стилей автоматически обновляется, поэтому, когда первая дата и время просрочены, ячейка становится зеленой, а когда вторая дата и время просрочены, ячейка становится красной.

Я могу заставить это работать только при сравнении даты без времени с DateValue.

Есть столбец с ячейками с двумя датами и временем мэров (иногда есть только одна дата, а иногда есть только одна дата без времени)

Ячейки с двумя датами со временем будут такими же, как в примере ниже.

-----------------
12/11/2011 09:00
13/11/2011 15:00
-----------------

Это то, что я имею до сих пор после нескольких попыток (учитывая, что многие попытки уже были удалены)

Sub Worksheet_Change()

 Set aWorkBook = Workbooks("Workbook.xls").Sheets("sheet 2").Range("C3:C10")


    For Each Cell In aWorkBook
    'MsgBox (Mid(Cell.Value, 1, 19))
    If Cell.Value <> "" Then
    MsgBox (Now < Mid(Cell.Value, 11, 6))
    'MsgBox ((Mid(Cell.Value, 1, 17)) < Now())
    'MsgBox ((Cell.Value))

        If (CDate(Mid(Cell.Value, 1, 17)) < Now()) Then
              'MsgBox ("Hello")
              'Cell.Interior.ColorIndex = 3
          End If

       End If
    Next
End Sub

В этом случае я использую msgbox для проверки результата, но не успеха.

Любая помощь будет принята с благодарностью.

1 Ответ

7 голосов
/ 05 ноября 2011

Глядя на ваш код, вы увидите, что значения даты / времени являются строками.В этом случае используйте

(DateValue(Cell) + TimeValue(Cell)) > Now()

Если в ячейках содержатся значения, отформатированные как даты, используйте

Cell > Now()

. Возможно, лучше использовать условное форматирование, а не событие _Change.Например, чтобы отформатировать ячейку A3, используйте условную формулу (примечание, нет $)

(DateValue(A3) + TimeValue(A3)) > Now()

, затем скопируйте форматы вставки в любые другие ячейки, которые вы хотите

...