我的报告通常会在每天早上7点之后运行,但有时可能会在白天晚些时候运行。在col D中是票证更新时间/日期。如果昨天更新了机票,那么单元格应该保持不变;如果昨天没有更新机票(IE,如果今天是第3个,并且自1日X点起尚未更新),则单元格应突出显示。由于报告偶尔会在当天晚些时候才开始运行,因此我无法做一个简单的CurrentTime - 24小时就可以解决这个问题。我需要该功能始终查找前一天和早上7点之前。
在不知道如何编码的情况下,我知道它应该是这样的:
If ticketUpdateTime < currentDay at 0700 - 24
Then highlight (I know the code for this part already)
End If
希望这是有道理的
答案 0 :(得分:1)
If DateDiff("h", CDate(ticketUpdateTime), CDate(Format(Now(), "mm/dd/yy")) + TimeSerial(7, 0, 0)) > 24 Then
highlight
End If
用简单的英语:
如果从ticketUpdateTime
到今天上午7:00之间的时间超过24小时,请突出显示
原始问题的范围有点过了,但这里的使用示例也是如此:
Sub CheckTimes(rng As String)
Dim someRange As Range, someCell As Range
Set someRange = Range(rng) ' Convert input string to an actual range object
For Each someCell In someRange
If DateDiff("h", CDate(someCell.Value), CDate(Format(Now(), "dd/mm/yy")) + TimeSerial(7, 0, 0)) > 24 Then
Debug.Print "Highlight"
End If
Next cell
End Sub
要调用它,请输入Call CheckTimes("D2:D100")
或您需要的任何范围
请注意,此处没有错误检查/处理或数据验证 - 您必须自己完成此操作。 ; - )
答案 1 :(得分:0)
您可以使用dateserial(Year as integer,month作为Integer,day作为Integer)和TimeSerial(Hour as Integer,Minute as Integer,Second as Integer)。我不知道您的ticketUpdateTime究竟是什么样的,所以很难写出表达式。但是,前一天早上7点是:
{{1}}
答案 2 :(得分:0)
似乎是一个问题。所有的日期/时间都是昨天,除了D2中的值是11/01/2017 10:47:02,并且该值没有突出显示。
Call CheckTimes("D2:D" & lastRow)
Sub CheckTimes(rng As String)
Dim someRange As Range, someCell As Range
Set someRange = Range(rng) ' Convert input string to an actual range object
For Each someCell In someRange
If DateDiff("h", CDate(someCell.Value), CDate(Format(Now(), "dd/mm/yy")) + TimeSerial(7, 0, 0)) > 24 Then
someCell.Interior.Color = 16750899
End If
Next someCell
End Sub