将单元格中的日期时间与两个日期VBA进行比较

发布于 2024-12-13 19:52:32 字数 964 浏览 4 评论 0原文

我试图将单元格内的日期与时间与 Now() 进行比较,

我有代码,因此样式表自动刷新本身,因此当第一个日期和时间过期时,单元格会变成绿色,而当第二个日期和时间过期时,单元格会变红。

我只能让它工作,将没有时间的日期与 DateValue 进行比较。

有一列包含两个带有时间的日期的单元格(有时只有 1 个日期,有时只有一个没有时间的日期)

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

-----------------
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 来测试结果,但没有成功。

任何帮助将非常感激。

I am trying to compare the dates with time from inside a cell with Now()

I have the code so the style sheet autorefresh itself so when first date with time is overdue cell go green and when the second date and time is overdue the cell would go red.

I can only get this to work comparing the date without the time with DateValue.

There is a colunm with cells with two dates with times mayorly (sometimes there is only 1 date and sometimes there is only one date without time)

Cells with two dates with time would be as the example below.

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

This is what I have so far after several attempts (cosidering that many of the attemps have been deleted already)

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

In this case I am using msgbox to test outcome but not success.

Any help would be very much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ低調成傷 2024-12-20 19:52:32

查看您的代码,日期/时间值似乎是字符串。如果是这种情况,请使用

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

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

Cell > Now()

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

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

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

Looking at your code it apears the date/time values are strings. If thats the case use

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

If cells contain values formatted as dates, use

Cell > Now()

You might be better off using Conditional Formatting rather than the _Change event. Eg to format cell A3 use conditional formula (note, no $'s)

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

then copy paste formats to any other cells you want

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文