簡體   English   中英

VBA中的日期/時間比較

[英]Date / Time Comparison in VBA

目標:Excel工作表包含活動列表。 目標是比較兩個活動的日期/時間。 我需要確定兩者之間是否有任何重疊。 B列包含每個活動的開始日期和時間,C列包含每個活動的結束日期和時間。

ActivityOneStartTime = Range("B41").Value

ActivityOneEndTime = Range("C41").Value

ActivityTwoStartTime = Range("B32").Value

ActivityTwoEndTime = Range("C32").Value


If ActivityOneStartTime >= ActivityTwoStartTime Then

    If ActivityOneStartTime < ActivityTwoEndTime Then

        booScheduleConflict = True

    End If

End If

If ActivityOneEndTime <= ActivityTwoEndTime Then

    If ActivityOneEndTime > ActivityTwoStartTime Then

        booScheduleConflict = True

    End If

End If

當然,上述內容不起作用。 因此,在嘗試了其他一些不成功的方法后,我開始逐步設置Case狀態,比較前幾年,然后是幾個月,然后是天,然后是幾小時,然后是幾分鍾,但我確信有一種更簡單的方法。

提前感謝您對此挑戰的任何幫助。

像這樣:

ActivityOneStartTime = Range("B41").Value
ActivityOneEndTime = Range("C41").Value
ActivityTwoStartTime = Range("B32").Value
ActivityTwoEndTime = Range("C32").Value

If ActivityOneStartTime < ActivityTwoEndTime Then
    If ActivityOneEndTime > ActivityTwoStartTime Then

        booScheduleConflict = True

    End If    
End If

我認為你的問題是確定測試重疊的邏輯。

嘗試這個

booScheduleConflict = Not(ActivityOneEndTime <= ActivityTwoStartTime or _
                          ActivityOneStartTime >=  ActivityTwoEndTime)

可以使用TimeValue屬性來完成。 這是一個例子:

Dim date1 As Date
Dim date2 As Date
Dim date3 As Date

date1 = TimeValue(Range("A1").Text)
date2 = TimeValue(Range("B1").Text)
date3 = TimeValue(Range("C1").Text)

If date3 >= date1 And date3 <= date2 Then
     'Yes!
Else
     'No!
End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM