Eliminar toda la fila del valor duplicado

Tengo esta macro que lo que hace es no permitir valores duplicados y luego lo elimina lo que quisiera es que elimine toda la fila completa

Private Sub Worksheet_Change(ByVal Target As Range)
'por luismondelo
If Target.Column = 1 Then
valor = Target.Value
contarsi = Application.WorksheetFunction.CountIf(Columns(1), valor)
If contarsi > 1 Then
MsgBox "dato duplicado, se eliminará"
Target.Select
Target.ClearContents
End If
End If
End Sub

1 Respuesta

Respuesta

Prueba esta macro

Private Sub Worksheet_Change(ByVal Target As Range)
'por luismondelo
If Target.Column = 1 Then
valor = Target.Value
On Error Resume Next
contarsi = WorksheetFunction.CountIf(Columns(1), valor)
On Error GoTo 0
If contarsi > 1 Then
MsgBox "dato duplicado, se eliminara la fila", vbInformation, "AVISO"
Target.Rows.EntireRow.Delete
End If
End If
End Sub

Sigue eliminando solo la celda y no toda la fila mira este es mi archivo https://mega.nz/#!sf51DQYK!QA9vZY4CG-qRMkqJ97QwvRqXNL2WpcS2jeDZ1JAVRmY

Ya veo el problema así que mi recomendación es la siguiente en vez de hacer la comprobación después de capturar la información y luego borrar si esta duplicada, es mejor hacer la validación en cuanto ingreses la DNI y si este dato esta duplicado entonces no capturara la información.

solo copia esta macro a tu formulario y prueba, con esta macro no ocupas la que tienes para borrar filas.

Private Sub TextBox2_AfterUpdate()
Set hp = Worksheets("proveedores")
Set lista = hp.Range("a1").CurrentRegion
If TextBox2 = Empty Then GoTo SALIDA
With lista
    cuenta = WorksheetFunction.CountIf(lista.Columns(1), TextBox2.Text)
    If cuenta > 0 Then
        MsgBox ("Registro repetido, no se capturara"), vbCritical, "AVISO"
        TextBox2.Text = Empty
    End If
End With
SALIDA:
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas