比较VBA中的时间值抛出运行时错误13'类型不匹配'

时间:2014-03-10 18:51:54

标签: excel vba excel-vba runtime

我试图将系统时间与存储在2个相邻单元格中的时间进行比较。我尝试了下面的时间比较,它只是工作正常...

* 此代码正常运行 * Sub btn_Click()

 MsgBox Range("C4"), vbOKOnly, "Test"
 Dim time1 As Date
 Dim time2 As Date
 time1 = Time
 time2 = TimeValue(Cells(3, 1).Text)
 If time1 < time2 Then
      MsgBox str, vbOKOnly, "MsgIf"
 Else
      MsgBox str1, vbOKOnly, "MsgElse"
 End If

End Sub


但这不起作用! If条件抛出错误,说“类型不匹配”。 请帮忙!!!

Dim i As Integer
Dim w As Integer
Dim tm1 As Date
Dim tm2 As Date
Dim tm3 As Date
tm1 = Time

For i = 2 To 31
    tm2 = TimeValue(Cells(i, 1).Text)
    tm3 = TimeValue(Cells(i, 2).Text)

    If tm1 > tm2 & tm1 < tm3 Then ' this is the line that throws 'type mismatch' error
        Exit For
    End If
    Next i


MsgBox Cells(i, w), vbOKOnly, "Test"

2 个答案:

答案 0 :(得分:0)

为了SO,我会将答案(在评论中)作为答案(而不是评论)发布。 @Simoco或@Enderland,随意做同样的事情,我会删除我的答案。

VBA不使用&运算符,也不使用|。相反,它分别使用AndOr

答案 1 :(得分:0)

这是:

VBA不使用&运算符,也不使用|。相反,它分别使用AndOr

更改此

If tm1 > tm2 & tm1 < tm3 Then 

到这个

If tm1 > tm2 And tm1 < tm3 Then

解决了Type Mismatch Error 谢谢@simoco和@enderland