Macro Eliminar fila si cumple dos condiciones

Hola, vi una macro que teníais publicada de hace tiempo (2009) que servia para eliminar registros.

Sub elimina()
Range("A65536").End(xlup).Select
Activecell.offset(1,0).Select
Activecell.Value="Stop"
Range("A1").Select
While ActiveCell.Value <> "Stop"
continuar:
dato = ActiveCell.Value
If ActiveCell.Value = 1 Then
ActiveCell.Offset(0, 12).Select
If ActiveCell.Value <> "Penaliza" Then
ActiveCell.Offset(0, -12).Select
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(0, -12).Select
ActiveCell.Offset(1, 0).Select
End If
GoTo continuar
End If
ActiveCell.Offset(1, 0).Select
Wend
Activecell.Value=""
End sub

No me funciona bien: cuando encuentra un registro para eliminar me recorre la columna A entera hasta el final

Podría decirme que cambio para que funcione?

1

1 respuesta

Respuesta
1

Hay un momento en que no pasas por el control del While, que es cuando solo pasas a 'Continuar'.

Lo correcto es dejarla así:

Sub elimina()
'x Elsamatilde
Range("A65536").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = "Stop"
Range("A1").Select
While ActiveCell.Value <> "Stop"
dato = ActiveCell.Value
If ActiveCell.Value = 1 Then
 ActiveCell.Offset(0, 12).Select
 If ActiveCell.Value <> "Penaliza" Then
 ActiveCell.Offset(0, -12).Select
 ActiveCell.EntireRow.Delete
 Else
 ActiveCell.Offset(0, -12).Select
 ActiveCell.Offset(1, 0).Select
 End If
Else
 ActiveCell.Offset(1, 0).Select
End If
Wend
ActiveCell.Value = ""
End Sub

Sdos y no olvides Finalizar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas