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来测试结果,但没有成功.
任何帮助将非常感谢.
查看您的代码,它会显示日期/时间值是字符串.如果是这样的话
(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)
然后将粘贴格式复制到您想要的任何其他单元格