Excel VBA等时间不匹配



我在Excel中有这个VBA代码:

If (TimeValue(C_CurrentDate) = L_CurrentStartTime) Then
   do-someting
End If

但是它从来不做"某事"。

示例数据为C_CurrentDate -> 17/03/2014 2:05:00和L_CurrentStartTime -> 2:05:00

两边的比较应该是2:05:00,但仍然不匹配。我甚至把它们都转换成double在一个msgbox中,它们都显示8,6805555555555556e -02

它们作为double值的差异在E-17范围内。

怎么可能呢?这两个值都是从单元格数据中读取的

丢弃组合DateTime的日期部分:

Sub TestOfTime()
    Dim C_CurrentDate As String, L_CurrentStartTime As String
    Dim d1 As Date, d2 As Date
    C_CurrentDate = "17/03/2014 2:05:00"
    L_CurrentStartTime = "2:05:00"
    d1 = TimeValue(Split(C_CurrentDate, " ")(1))
    d2 = TimeValue(L_CurrentStartTime)
    If d1 = d2 Then
        MsgBox "Same Time"
    End If
End Sub

奇怪的是,您必须将日期分开才能使其工作。解决方案就是解决方案,所以@Gary的学生提供了让你继续前进的答案。但是如果为什么要折磨你(就像折磨我一样),你就必须分享更多你的过程。例如,我将您的两个示例17/03/2014 2:05:002:05:00作为文本粘贴到工作簿的B2B3单元格中,并运行以下命令:

Sub Macro1()
Dim C_CurrentDate As Date
C_CurrentDate = CDate(Range("B2").Value)
Dim L_CurrentStartTime As Date
L_CurrentStartTime = CDate(Range("B3").Value)
Debug.Print C_CurrentDate
Debug.Print CDate(Range("B2").Value)
Debug.Print TimeValue(Range("B2").Value)
Debug.Print L_CurrentStartTime
Debug.Print CDate(Range("B3").Value)
If TimeValue(Range("B2").Value) = CDate(Range("B3").Value) Then
    Debug.Print "True"
End If
If TimeValue(C_CurrentDate) = L_CurrentStartTime Then
    Debug.Print "True"
End If

End Sub

我的两个If语句都解析为True,听起来你基本上是以同样的方式获得你的值。如果我们能看到你在做什么,也许能帮你找出原因。当然,不能保证。:)

相关内容

  • 没有找到相关文章