2015-08-17 9 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 
Смежные вопросы