目标: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状态,比较前几年,然后是几个月,然后是天,然后是几小时,然后是几分钟,但我确信有一种更简单的方法。
提前感谢您对此挑战的任何帮助。
答案 0 :(得分:1)
像这样:
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
答案 1 :(得分:1)
我认为您的问题是确定测试重叠的逻辑。
试试这个
booScheduleConflict = Not(ActivityOneEndTime <= ActivityTwoStartTime or _
ActivityOneStartTime >= ActivityTwoEndTime)
答案 2 :(得分:1)
可以使用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