VBA-копировать строки - если обнаружена ошибка, то продолжить в ячейках копирования


У меня есть макрос, который копирует ячейки в ячейки ниже.

Sub CopyRows2()

Dim LastRow As Long

With Worksheets("Ready to upload") ' <-- here should be the Sheet's name
    LastRow = .Cells(.Rows.Count, "AD").End(xlUp).Row ' last row in column C

For i = 2 To LastRow
If Range("AD" & i) > "" And Range("AD" & i + 1) = "" Then
    Range("AD" & i).Copy
    Range("AD" & i + 1).PasteSpecial xlPasteValues
    Application.CutCopyMode = False

Else

    End If
Next

End With

ActiveWindow.ScrollRow = 1 'scrolling the screen to the top

End Sub

Он работает нормально, пока не будет найден #N/A, тогда он даст мне ошибку msg: Ошибка времени выполнения '13'-Тип несоответствия. В этом случае я хотел бы пропустить его, а затем продолжить в строках копирования.

[Введите описание изображения здесь

Не могли бы вы мне посоветовать, как это сделать, пожалуйста?

Большое спасибо!

1 2

1 ответ:

Вариант 1

Самый простой способ-это встроить On Error Resume Next в ваш код. Тогда это сработает.


Вариант 2 Если вы хотите быть на один шаг более профессиональным, то вы можете использовать что-то вроде этого:

Sub CopyRows2()

    Dim LastRow As Long

    On Error Resume Next

    'your code

    If Err.Number = 13 Then Err.Clear
    On Error GoTo 0

End Sub

Он проигнорирует ошибку 13, но сообщит вам, есть ли другие ошибки, что весьма полезно.


Вариант 3 Проверьте наличие ошибки следующим образом:

If Not IsError(Range("AD" & i)) And Not IsError(Range("AD" & i + 1)) Then
    'embed the code here
End If