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

时间:2011-11-05 07:09:01

标签: excel-vba excel-2003 vba excel

我正在尝试使用Now()

比较单元格内的日期和时间

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

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

有一个colunm,其中包含两个日期和时间的单元格(有时只有一个日期,有时只有一个日期没有时间)

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

-----------------
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 个答案:

答案 0 :(得分:6)

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

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

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

Cell > Now()

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

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

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