Eliminar filas según criterio de una celda

En la hoja "PEDIDOPEND" columna B; tengo unos números de pedido (a veces se repiten dichos números en la columna), y tengo una macro que intenta hacer que el numero indicado en la celda D8 de la hoja "PEDIDOFACTURADO" borre todas las filas de la columna B de "PEDIDOPEND" que sean iguales a D8.

La macro es la siguiente:

Sub EliminaPedidoFacturado()

dato = Sheets("PEDIDOFACTURADO").Range("D8")
ultF = Sheets("PEDIDOPEND").Range("B1048576").End(xlUp).Row
'I va desde la fila 1 hasta la ultima fila utilizada
For i = 1 To ultF
If dato = "" Then Exit Sub
For Each dato In Worksheets
Set busco = Range("B:B").Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
'si encontró el dato desprotege la hoja para eliminar la fila
If Not busco Is Nothing Then
ActiveSheet.Unprotect "CLAVE"
busco.EntireRow.Delete
ActiveSheet.Protect "CLAVE"
'libero la variable y repito el bucle
Set busco = Nothing
End If
Next
'repite la orden el numero de veces indicado
Next i
End Sub

No sé que pasa pero la macro no elimina los datos de la hoja PEDIDOPEND columna B.

1 Respuesta

Respuesta
1

Quité las líneas:

For Each dato In Worksheets y Next

Sub EliminaPedidoFacturado()
    dato = Sheets("PEDIDOFACTURADO").Range("D8")
    ultF = Sheets("PEDIDOPEND").Range("B1048576").End(xlUp).Row
    'I va desde la fila 1 hasta la ultima fila utilizada
    For i = 1 To ultF
        If dato = "" Then Exit Sub
        'For Each dato In Worksheets
        Set busco = Range("B:B").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
        'si encontró el dato desprotege la hoja para eliminar la fila
        If Not busco Is Nothing Then
        ActiveSheet.Unprotect "CLAVE"
        busco.EntireRow.Delete
        ActiveSheet.Protect "CLAVE"
        'libero la variable y repito el bucle
        Set busco = Nothing
        End If
        'Next
    'repite la orden el numero de veces indicado
    Next i
End Sub

Este argumento lookat:=xlWhole, busca que el dato coincida con el contenido de toda la celda, si lo que quieres es que el dato se encuentre dentro de la celda sin importar si hay más texto, entonces cambia el argumento por esto:

lookat:=xlPart

Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas