2013-06-17 4 views
-1

Это строка кода для отчета комиссии. Он отлично работает с нулевыми проблемами ежедневно, и последний раз запускался на 13-м.Ошибка времени выполнения макроса VBA 13 - Несоответствие типа

Сегодня утром я получаю Run Time Error 13 Type Mismatch.

Я понятия не имею, почему, но когда я отладки, он выделяет этот раздел:

If UCase(Cells(i, 1).Value = "200265 - MP" Тогда

Я попытался перепечатать, но когда я делаю, я получаю сообщение об ошибке для слова Тогда который гласит следующее: Compile error: Expected: list seperator or)

Как я могу запустить это?

Вот код:

Sheets("Errors").Select 
Cells.Select 
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ 
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
    DataOption1:=xlSortNormal 
Sheets("Errors").Select 
With Sheets("Errors") 
    lastrow = .Range("C" & Rows.Count).End(xlUp).Row 
End With 
For i = lastrow To 1 Step -1 
    Cells(i, 1).Select 
    If UCase(Cells(i, 1).Value = "200265 - MP" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "160850 - TP" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "170566 - VB" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "201447 - JB" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "202006 - BL" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "203646 - MM" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
    If UCase(Cells(i, 1).Value) = "203917 - KT" Then 
     Rows(i).Select 
     Selection.Cut 
     Sheets("Temp").Select 
     Rows("1:1").Select 
     Selection.Insert Shift:=xlDown 
     Sheets("Errors").Select 
    End If 
+0

Натан, что был отредактирован? – Jennifer

+0

Вы можете щелкнуть ссылку «отредактированные x минуты назад», чтобы просмотреть детали редактирования. – Alejo

+0

Удивительно, спасибо! Любая подсказка о второй части моего вопроса? На самом деле первая часть, ошибка времени выполнения 13. – Jennifer

ответ

1

Вы забыли закрыть скобку: написать UCase(Cells(i, 1).Value) = "200265 - MP" Then

Edit:

Это трудно, из комментариев, чтобы увидеть, что происходит. Дайте этому идти: Вставить эту функцию в вашем модуле

Public Function myUCase(ByVal v As Variant) As String 
    On Error GoTo error: 

    myUCase = UCase(CStr(v)) 
    Exit Function 

error: 
    myUCase = "" 

End Function 

Затем заменить вызовы UCase с вызовами myUCase.

То, что я здесь делаю, устраняет любую ошибку.

Используйте его с осторожностью.

+0

О, черт возьми! Спасибо огромное! – Jennifer

+0

2-я пара глаз @Jennifer ... – Bathsheba

+0

Итак, я просто переделал макрос и до сих пор получаю ошибку «Время выполнения ошибки 13». Любая подсказка почему ??? Я могу подтвердить, что значения 200265 указаны в данных и что в этом столбце нет альфа-символов, только числовые данные. Кроме того, нет значений DIV/0 или #NA. – Jennifer

0

Похоже, вы пропустили кронштейн

If UCase(Cells(i, 1).Value = "200265 - MP" Then 

должен быть

If UCase(Cells(i, 1).Value) = "200265 - MP" Then 
+0

О, черт возьми! Спасибо большое! – Jennifer

+0

Вопрос ... знаете ли вы, почему произошла ошибка 13 времени выполнения? Fr о чем вы видите выше. Спросив, потому что это подошло, и я буквально ничего не изменил. Просто подумал, что, возможно, перепечатать это будет работать, но ошибка 13-го времени выполнения указала на то, что строка как тип несоответствия – Jennifer

+0

Итак, я просто переделаю макрос и все еще получаю ошибку несоответствия времени выполнения 13. Любая подсказка почему ??? – Jennifer

Смежные вопросы