Excel: error de tiempo de ejecución '13' Tipo de discrepancia durante la ejecución de una fila de eliminación

¿Qué causaría esta línea?

If Cells(i, 3) = "" Or VBA.Left(Cells(i, 3), 5) = "BIGA-" Or VBA.Left(Cells(i, 3), 5) = "BRNG-" Or VBA.Left(Cells(i, 3), 5) = "ENER-" Or VBA.Left(Cells(i, 3), 5) = "EURE-" Or VBA.Left(Cells(i, 3), 5) = "STRE-" Then Rows(i).Delete

en la siguiente macro para devolver una falta de coincidencia de tipo de error de tiempo de ejecución '13' después de encontrar y eliminar el primer registro de celda?

Option Explicit

Sub deletedExceptions_row()
Dim i As Long
For i = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    If Cells(i, 3) = "" Or 
    VBA.Left(Cells(i, 3), 5) = "BIGA-" Or 
    VBA.Left(Cells(i, 3), 5) = "BRNG-" Or 
    VBA.Left(Cells(i, 3), 5) = "ENER-" Or 
    VBA.Left(Cells(i, 3), 5) = "EURE-" Or 
    VBA.Left(Cells(i, 3), 5) = "STRE-" Then
    Rows(i).Delete
Next i
End Sub

preguntado el 03 de mayo de 12 a las 17:05

1 Respuestas

Prueba esta

Option Explicit

Sub deletedExceptions_row()
    Dim i As Long
    Dim ws As Worksheet

    On Error GoTo whoa

    Set ws = Sheets("Sheet1")

    With ws
        For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
            If .Cells(i, 3) = "" Or _
            VBA.Left(.Cells(i, 3), 5) = "BIGA-" Or _
            VBA.Left(.Cells(i, 3), 5) = "BRNG-" Or _
            VBA.Left(.Cells(i, 3), 5) = "ENER-" Or _
            VBA.Left(.Cells(i, 3), 5) = "EURE-" Or _
            VBA.Left(.Cells(i, 3), 5) = "STRE-" Then
                .Rows(i).Delete
            End If
        Next i
    End With
    Exit Sub
whoa:
    MsgBox "Value of i is " & i, vbInformation, Err.Description
End Sub

Ahora da error? Si lo hace, ¿cuál es el valor de i. Si el valor de i es decir 17 y luego verifique la celda C17. Estoy seguro de que hay una fórmula en esa celda que está dando un error. Por ejemplo #DIV/0! o cualquier otro error. Es solo en este escenario que dará una type mismatch error.

INSTANTÁNEA

enter image description here

contestado el 03 de mayo de 12 a las 18:05

¿Cuál es el nombre de su hoja donde la está probando? Cambiaste Set ws = Sheets("Sheet1") al nombre de la hoja relevante? Reemplace "Hoja1" con el nombre de la hoja correspondiente. - Huida de Siddharth

sí y luego me muestra que el valor i es 7178, ¿cuál era #NOMBRE? ¿Cómo modificaría esto para poder corregir el error y luego hacer que continúe? - Capnhud

Simplemente haga clic en "Aceptar" en el cuadro de mensaje. Regrese a esa celda y elimine el error y luego vuelva a ejecutar la macro :) - Huida de Siddharth

Consejo: El manejo de errores siempre hará tu vida más fácil ;) - Huida de Siddharth

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.