Macro para evitar datos repetidos

Estoy realizando una base de datos con códigos de inventario únicos. Este código va en la columna A, como puedo puedo poner una macro para que si registro un código que ya esta registrado me aparezca un mensaje donde me indique que el registro ya ha sido introducido,, de antemano gracias.. Hay una opción con validación de datos, pero quiero es hacerla con código.

1 respuesta

Respuesta
1

No me queda claro si vas a realizar el ingreso sobre la misma hoja o desde algún control como podría ser un Textbox de formulario. Y si así fuera, tenés 2 opciones:

Opción 1: al cambio en un control TextBox.

Private Sub TextBox1_Change()
'x Elsamatilde
If TextBox1 = "" Then Exit Sub
'se busca en col A de la hoja activa
Set busco = Range("A:A").Find(TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not busco Is Nothing Then
    MsgBox "Este código ya se encuentra registrado"
    TextBox1 = ""
End If
End Sub

Opción 2: al salir del control Textbox

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
canti = Application.WorksheetFunction.CountIf(Range("A:A"), TextBox1)
If canti > 0 Then
    MsgBox "Este código ya se encuentra registrado"
    TextBox1 = ""
End If
End Sub

Opción 3: desde la misma col A de la hoja activa

El siguiente código se coloca en el Editor, en el objeto HOJA donde trabajes:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'control de registro en col A
If Target.Column = 1 Then
    If Target.Count = 1 Then
        If Target.Value <> "" Then
            canti = Application.WorksheetFunction.CountIf(Range("A:A"), Target.Value)
            If canti > 1 Then
                MsgBox "Este código ya se encuentra registrado"
                Target = ""
            End If
        End If
    End If
End If
End Sub

Los eventos de HOJA los tengo explicados en los videos 45-46 y 47 de mi canal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas