比较具有两个日期VBA的单元格中的DateTime

Amr*_*mra 3 excel vba excel-2003 excel-vba

我试图用一个单元格内的时间来比较日期和时间()

我有代码所以样式表autorefresh本身所以当第一个日期与时间过期单元格变为绿色,当第二个日期和时间过期时单元格将变为红色.

我只能通过DateValue来比较没有时间的日期.

有一个colunm,带有两个日期和时间的单元格(有时只有一个日期,有时只有一个日期没有时间)

具有两个日期和时间的单元格将如下所示.

-----------------
12/11/2011 09:00
13/11/2011 15:00
-----------------
Run Code Online (Sandbox Code Playgroud)

这是我在几次尝试之后到目前为止所做的事情(考虑到已经删除了许多尝试)

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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我使用msgbox来测试结果,但没有成功.

任何帮助将非常感谢.

chr*_*sen 7

查看您的代码,它会显示日期/时间值是字符串.如果是这样的话

(DateValue(Cell) + TimeValue(Cell)) > Now()
Run Code Online (Sandbox Code Playgroud)

如果单元格包含格式为日期的值,请使用

Cell > Now()
Run Code Online (Sandbox Code Playgroud)

您可能最好使用条件格式而不是_Change事件.例如格式化单元格A3使用条件公式(注意,没有$)

(DateValue(A3) + TimeValue(A3)) > Now()
Run Code Online (Sandbox Code Playgroud)

然后将粘贴格式复制到您想要的任何其他单元格