【问题标题】:Comparing DateTime from cell with two dates VBA将单元格中的 DateTime 与两个日期 VBA 进行比较
【发布时间】:2014-10-20 01:05:33
【问题描述】:

我正在尝试使用 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 来测试结果,但没有成功。

非常感谢任何帮助。

【问题讨论】:

    标签: excel excel-2003 vba


    【解决方案1】:

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

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

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

    Cell > Now()
    

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

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

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

    【讨论】:

    • 谢谢!这真的很好+1。当您说 Cell 我必须插入子字符串时,有一个问题。我是否将整个日期与时间一起粘贴,还是将其拆分为 dateValue 的日期和 TimeValue 的时间?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2013-07-20
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多