2015-08-17 92 views
0

我想用VBA来查找两列之间的时间差。我已经检查过,两列有相同的数据类型,但是每当我运行宏时,它总是给我类型不匹配的错误。我无法弄清楚为什么如此任何帮助将不胜感激。类型不匹配错误VBA

Sub timeshfiter() 
    lastrow = Application.CountA(Range("A:A")) 
    For i = 2 To lastrow 
    If (Worksheets("Sheet1").Cells(i, "A").Value = Worksheets("Sheet2").Cells(i,"A").Value) Then 
     If ((Abs(Worksheets("Sheet1").Cells(i, "I").Value - Worksheets("Sheet2").Cells(i, "I").Value) * 86400) <= TimeValue(20)) Then 
    Worksheets("Sheet1").Cells(i, "K").Value = Worksheets("Sheet2").Cells(i, "I").Value 
    Else: Worksheets("Sheet1").Cells(i, "K").Value = "Check" 
     End If 
    End If 

    Next i 

    End Sub 

回答

1

我发现了主要错误。条件行中使用TimeValue(20)。这会导致Type mismatch错误。

这里,参考文献(1)(2)使用TimeValue方法。

这里是你的代码的有效使用的样本:

Sub timeshfiter() 

    lastrow = Application.CountA(Range("A:A")) 

    For i = 2 To lastrow 

     If Worksheets("Sheet1").Cells(i, "A").Value = Worksheets("Sheet2").Cells(i, "A").Value Then 

      If (Abs(Worksheets("Sheet1").Cells(i, "I").Value - Worksheets("Sheet2").Cells(i, "I").Value) * 86400) <= TimeValue("00:20:00 AM") Then 
                                  '^ valid time value "00:20:00 AM"   
       Worksheets("Sheet1").Cells(i, "K").Value = Worksheets("Sheet2").Cells(i, "I").Value 

      Else 

       Worksheets("Sheet1").Cells(i, "K").Value = "Check" 

      End If 

     End If 

    Next i 

End Sub