Quando não existe nenhum valor correspondente, nStart
mantém o valor padrão de 0
. Isso resulta em um erro nesta linha.
If Range("a" & nRow).Value <> "CPNEC" Then
porque A0
não é uma referência de intervalo válida. Para contornar este problema (e salvar alguns loopings desnecessários), adicione uma verificação condicional para nStart = 0
após o primeiro loop. Se for zero, saia do sub; caso contrário, continue. Isso deve evitar erros ao interromper seu código quando nenhuma correspondência for encontrada.
Sub SelectCPNEC()
' Figure out where the "CPNEC" data starts.
For nRow = 1 To 65536
If Range("A" & nRow).Value = "CPNEC" Then
nStart = nRow
Exit For
End If
Next nRow
If nStart > 0 Then
' Figure out where the "CPNEC" data ends.
For nRow = nStart To 65536
If Range("A" & nRow).Value <> "CPNEC" Then
nEnd = nRow
Exit For
End If
Next nRow
nEnd = nEnd - 1
'Select the range required
Range("A" & nStart & ":G" & nEnd).Select
'Now copy and paste into the right worksheet
Selection.Copy
Application.Goto ActiveWorkbook.Sheets("CPNEC").Cells(1, 1)
ActiveSheet.Paste
End If
End Sub