Win7 上の MS Excel Professional Plus v14。
日付/時刻の等価性を比較するのに問題があります。
等しいように見える 2 つの日付、12/16/2013 12:19:33 pm は両方とも日付としてディメンション化されます。1 つは日付配列内にあり、もう 1 つは日付変数です。arrPP は後で ReDim されます。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