【发布时间】:2013-10-21 23:53:42
【问题描述】:
Win7 上的 MS Excel Professional Plus v14。
我无法比较日期/时间的相等性。
两个看似相等的日期,2013 年 12 月 16 日下午 12:19:33 都被标注为日期。一个在日期数组中,另一个是日期变量。 arrPP 稍后会重新调整。当我执行 DateDiff("s",date1,date2) 时,它会产生 0。
Dim arrPP() As Date ' During runtime shows type is Date(1 to 2, 1 to 1)
Dim dNextStartTime as Date
'...code removed ...
If arrPP(iPP_START, lPP_index) <= dNextStartTime Then
GoTo PP_OUT
End If
即使它们是相等的,上面的评估结果为 false 并且采取了错误的路径。这很难追踪并导致意外/错误的结果。
是否有关于日期平等的官方“陷阱”?是否存在需要比较的隐藏毫秒,或者将比较限制到秒级别的方法?
我尝试了其他几种替代方法,包括将 CDate 放在数组元素的前面。
失败:
If Not(arrPP(iPP_START, lPP_index) > dNextStartTime) Then
GoTo PP_OUT
End If
通过:(但谁会想到这样做呢?)
If arrPP(iPP_START, lPP_index) <= dNextStartTime Or _
DateDiff("s",arrPP(iPP_START,lPP_index),dNextStartTime) = 0 Then
GoTo PP_OUT
End If
【问题讨论】:
-
VBA Excel - Equal dates do not evaluate as equal你是如何填写日期的?它对我有用。
标签: excel date-comparison vba