1

目标: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

当然,上述方法是行不通的。因此,在尝试了其他一些不成功的方法之后,我开始逐步设置比较第一年、几个月、几天、几小时、几分钟的案例报表,但我确信有更简单的方法。

提前感谢您在此挑战中提供的任何帮助。

4

3 回答 3

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
于 2013-07-02T14:20:13.810 回答
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
于 2012-08-26T15:35:11.053 回答
1

我认为您的问题是确定测试重叠的逻辑。

尝试这个

booScheduleConflict = Not(ActivityOneEndTime <= ActivityTwoStartTime or _
                          ActivityOneStartTime >=  ActivityTwoEndTime)
于 2012-08-26T19:58:43.677 回答