Condición para que no acepte Datos Repetidos

Buenas tardes
Como siempre un honor estar aquí.
Tengo un formulario con el cual registro los datos de muchos productos en una hoja (Hoja2) pero el problema es que este formulario acepta los datos sin importar que estén ya registrados anteriormente.
Es posible que se puede modificar para que al momento de colocar el código en el textbox1 y luego pase al siguiente textbox2, ¿este muerte un mensaje que de a entender que el dato ya esta registrado..?
Lamento mucho por no saber de la función Do While, que creo que es la que se aplica a este tipo de problemas.
Les estaría muy agradecido por la solución que me puedan dar.
La fórmula que tengo es la siguiente:
Option Explicit
Private Sub CommandButton1_Click()
Dim Base As String
If TextBox1 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 1", vbCritical, "Error"
TextBox1. SetFocus
ElseIf TextBox2 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 2", vbCritical, "Error"
TextBox2. SetFocus
ElseIf TextBox3 = Empty Then
MsgBox "Faltan Datos por Registrar en la Casilla 3", vbCritical, "Error"
TextBox3. SetFocus
Else
Base = Sheets("hoja2"). Range("A65536"). End(xlUp). Row + 1
Sheets("hoja2"). Cells(Base, 1) = UCase(TextBox1)
Sheets("hoja2"). Cells(Base, 2) = UCase(TextBox2)
Sheets("hoja2"). Cells(Base, 3) = UCase(TextBox3)
MsgBox "Datos Cargados con Exito", vbInformation, "Sistema"
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1. SetFocus
End If
End Sub
Saludos.

1 Respuesta

Respuesta
1
Añade este código a tu formulario.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim C As Object
With Sheets("HOJA2").Range("a:a")
Set C = .Find(TextBox1.Value, LookIn:=xlValues)
If Not C Is Nothing Then
MsgBox "EL REGISTRO ESTA REPETIDO, SELECCIONE OTRO"
TextBox1 = ""
End If
End With
End Sub
'
Mil gracias por tomarse el tiempo a atender a mi solicitud, más sin embargo, el código que me facilita, aun cuando cierro el formulario, me arroja el mensaje sin importar que el textbox1 este vacío.
¿Tal ves sea por el tema de salida de del formulario..? ¿Es decir que el evento de salida del formulario también cierra el texbox?
Realmente no entiendo bien sobre eventos y sub-eventos o algo así, pero es posible que sea lo que me esta saliendo mal.
Mil gracias y espero sus comentarios.
Mis respetos
' prueba este otro....
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim C As Object
If TextBox1 <> "" Then
With Sheets("HOJA2").Range("a:a")
Set C = .Find(TextBox1.Value, LookIn:=xlValues)
If Not C Is Nothing Then
MsgBox "EL REGISTRO ESTA REPETIDO, SELECCIONE OTRO"
TextBox1 = ""
End If
End With
End If
End Sub
' recuerda si das por terminada la pregunta, cierra y valora.
'
Ya hice la prueba y si, funciona a la perfección.
Mil gracias por su gentileza y paciencia.
Mis respetos.
P.D. Tengo una nueva pregunta ya formulada. Es sobre una fórmula que ma habían pasado y quería si usted puede orientarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas