Я использую следующий код в проекте, я работаю над:Ошибка выполнения «13»: Несоответствие типа на VBA код
Sub test()
Application.ScreenUpdating = False
Worksheets("Technician Report Summary").Range("G2:I8561").ClearContents
Dim Source As Range, Target As Range
Dim n As Long, i As Long
n = Range("C:C").Cells.Count
i = Cells(n, "C").End(xlUp).Row
Set Source = Range(Cells(1, "C"), Cells(n, "E"))
Set Target = Range("G2:I2")
For i = 2 To n
If Source.Cells(i, 1).Value <> "Not Used" And Not Application.WorksheetFunction.IsNA(Source.Cells(i, 3).Value) Then
Source.Rows(i).Copy
Target.PasteSpecial xlPasteValues
Set Target = Target.Offset(1)
End If
Next i
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Когда я запускаю код оказывается работать надлежащим образом , он копирует список отфильтрованных значений, следующих критериям, установленным в коде, в другое место на том же рабочем листе. Проблема в том, что я также получаю следующую ошибку:
Run-time error '13': Type mismatch
Что я получил? Я думаю, что я сделал какую-то ошибку в объявлении переменных или что-то в этом роде, но я недостаточно знаком с VBA, чтобы точно определить, в чем проблема.
Любая помощь будет оценена по достоинству.
EDIT:
Извините, что не ясны.
У меня есть набор значений на листе «Краткое описание отчета о техническом обслуживании», который занимает диапазон C2: E8561. Есть некоторые ошибочные значения, которые я хочу отфильтровать и скопировать, это ошибки «Не используется» и «# N/A». Приведенный выше код копирует значения и затем вставляет их рядом с исходным, нефильтрованным набором значений с экземплярами «Не используется» и «# N/A», удаленным в столбцах G, H и I.
Нет строки выделяется как проблема, когда я запускаю его, появляется диалоговое окно с ошибкой, и когда я нажимаю «ОК», ничего не подсвечивается.
EDIT 2:
Я сделал изменения, которые @KFitchter предложить и теперь, кажется, карцер. Я ударил ключ побег и следующая строка была выделена:
If Source.Cells(i, 1).Text <> "Not Used" And Not Application.WorksheetFunction.IsNA(Source.Cells(i, 3).Value) Then
EDIT 3:
Просто подумал о чем-то еще, что можно было бы возиться с ним. Значения в столбцах C, D и E на самом деле являются функциями вытягивания значений из других мест в книге. Вот пример одной из этих функций.
=INDEX('RAW DATA'!$A:$A,$B2)
На какой строке возникает ошибка? – KFichter
сторона примечания: 'Set Source = Range (Ячейки (1,« C »),« Ячейки »(n,« E »))' не определяет, из какого листа извлекаются «диапазон» или «ячейки». Вам нужно уточнить, что для этого нужно работать/работать без неожиданных будущих ошибок. – Brad
Ваш вопрос очень неясен. Для одного (как упоминает @KFichter) вы не сказали нам строку ошибки. Во-вторых, вы не сказали нам, что код должен делать для правильной оценки. – Chrismas007