[英]Excel VBA - Highlight cell if time is greater than 24 hours ago
我有一份報告,該報告通常每天早上7點之后運行,但有時可能會在一天的晚些時候運行。 在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
希望這有道理
If DateDiff("h", CDate(ticketUpdateTime), CDate(Format(Now(), "mm/dd/yy")) + TimeSerial(7, 0, 0)) > 24 Then
highlight
End If
簡而言之:
如果在ticketUpdateTime
和今天的凌晨07: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")
或您需要的任何范圍
請注意,這里沒有錯誤檢查/處理或數據驗證-您必須自己做。 ;-)
您可以使用dateserial(年作為整數,月作為整數,天作為整數)和TimeSerial(小時作為整數,分鍾作為整數,秒作為整數)。 我不知道您的票證更新時間到底是什么樣子,因此很難編寫表達式。 但是,前一天上午7點將是:
dateserial(year(date-1), month(date-1), day(date-1)) & " " ×erial(7, 0, 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.