¿Cómo omitir el error 91 en una búsqueda dentro de una macro?

Estoy realizando una macro para buscar un el texto " E CV" y elimine las 9 filas superiores y después elimine dicho texto dejando los números que están en la misma celda, el problema es que no siempre hay la misma cantidad de celdas con " E CV" por lo que si le coloco la Instrucción For para que la busque unas 18 veces y solo hay 10, cuando quiere ejecutar la búsqueda 11 me marca el error 91 y necesito que cuando ya no encuentre más " E CV" pase a la casilla A1

Esta es la macro que realice

For i = 1 To 18
Cells.Find(What:=" E CV", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(-1, 0).Range("A1").Activate
ActiveCell.Offset(-8, 0).Range("A1:A9").Select
Application.CutCopyMode = False
Selection.EntireRow.Delete
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.Copy
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Range("A1:B1").Select
Selection.Replace What:=" E CV", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
Selection.Copy
ActiveCell.Offset(0, -2).Range("A1").Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.ClearContents
ActiveCell.Offset(0, -2).Range("A1").Select
Next

Range("A1").Select
End Sub

3 Respuestas

Respuesta
1

Te anexo la macro actualizada

Sub prb()
    Range("A1").Select
    For i = 1 To 18
        Set b = Cells.Find(What:=" E CV", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If Not b Is Nothing Then
            b.Activate
            ActiveCell.Offset(-1, 0).Range("A1").Activate
            ActiveCell.Offset(-8, 0).Range("A1:A9").Select
            Application.CutCopyMode = False
            Selection.EntireRow.Delete
            ActiveCell.Offset(0, 0).Range("A1").Select
            Selection.Copy
            ActiveCell.Offset(0, 2).Range("A1").Select
            ActiveSheet.Paste
            ActiveCell.Range("A1:B1").Select
            Selection.Replace What:=" E CV", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            Application.CutCopyMode = False
            Selection.Copy
            ActiveCell.Offset(0, -2).Range("A1").Select
            ActiveSheet.Paste
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveCell.Offset(0, 2).Range("A1").Select
            Selection.ClearContents
            ActiveCell.Offset(0, -2).Range("A1").Select
        Else
            Exit For
        End If
    Next
    Range("A1").Select
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
Respuesta
1

Prueba esta macro primero busca y elimina los E CV de la columna A y luego elimina las nueve filas superiores, una vez que acaba se posiciona el la celda a1

Sub copiar()
Range("a:a").Replace What:=" E CV", Replacement:=""
On Error Resume Next
Range("a1:a9").EntireRow.Delete
On Error GoTo 0
Range("a1").Select
End Sub
Respuesta

Son muy comunes los errores en VBA, te recomiendo uses este código:

Sub MiMacro()
'Usa este codigo Para saltar errores y que se siga ejecutando el código.
On Error Resume Next
'AQUI VA TU CODIGO!!!
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas