Textbox que impida números repetidos

Hola que tal quisiera que alguien me ayude. El tema es que tengo un formulario que a través de varios textbox ingreso datos a una hoja excel, pero necesitaría que en el textbox que ingreso los números de dni, me impida repetir el mismo y me indique que esta repetido y que a su vez no lo adicione.
Espero puedan ayudarme ya que no se mucho sobre macros en excel, pero a través de internet he conseguido realizar este pequeño programa.
Ofrezco enviar mi progreso para que puedan ayudarme
mi mail es [email protected]
Desde ya muchas gracias.

1 respuesta

Respuesta
1
Esto es lo que debes colocar dentro del text box
el range lo debes cambiar según la columna y el nombre de la hoja
'creado por Sandra Viteri
'metodo que permite verificar la existencia del numero
Private Sub textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim n As Range
If texbox1.Text <> "" Then
   Set n = Worksheets("hoja1").Range("a2:a55555").Find(what:=textbox1.Text, lookat:=xlWhole)
    If Not (n Is Nothing) Then
        Range(n.Address).Select
        MsgBox "El numero :  " & UCase(txtRequerimiento.Text) & " ya se encuentra registrado"
        txtRequerimiento.Text = ""
        Cancel = True
     End If
     Set n = Nothing
End If
End Sub
Sandra, gracias por tu pronta respuesta, pero lo pruebo y no resulta, ¿quizá por qué tengo un botón que agrega los datos?, espero no te moleste prestarme una mano. Nuevamente gracias por tu tiempo.
Te ofrezco mostrarte mi modelo, así puedas divisar algún posible error
Private Sub TextBox1_AfterUpdate()
Workbooks("BASE2010.xls").Worksheets("BASE").Activate
Sheets("BASE").Select
filalibre = Range("B2").End(xlDown).Offset(1, 0).Row 'la variable filalibre guarda el nro. de la primer celda vacía.
control = 0
dato = TextBox1
rango = "B3:B" & filalibre
Set midato = ActiveSheet.Range(rango).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If Not (midato) Is Nothing Then
ubica = midato.Address(False, False)
TextBox2.Value = Range(ubica).Offset(0, -1).Value
ComboBox1.Value = Range(ubica).Offset(0, 1).Value
TextBox4.Value = Range(ubica).Offset(0, 2).Value
control = 1
End If
Set midato = Nothing
End Sub
Private Sub cmdAceptar_Click()
MsgBox "Está por ingresar un nuevo jugador, téngase en cuenta que el mismo también figurará en planilla de juego", vbOKOnly, "SE ESTÁ AGREGANDO UN NUEVO JUGADOR"
Workbooks("BASE2010.xls").Worksheets("BASE").Activate
Sheets("BASE").Select
If control > 0 Then
Range(ubica).Value = TextBox1
Range(ubica).Offset(0, 0).Value = TextBox1.Text
Range(ubica).Offset(0, -1).Value = TextBox2.Text
Range(ubica).Offset(0, 1).Value = ComboBox1
Range(ubica).Offset(0, 2).Value = TextBox4.Text
control = 0
Else
Cells(filalibre, 2).Value = TextBox1.Text
Cells(filalibre, 1).Value = TextBox2.Text
Cells(filalibre, 3).Value = ComboBox1
Cells(filalibre, 4).Value = TextBox4.Text
End If
TextBox1.Value = ""
TextBox2.Value = ""
ComboBox1.Value = ""
TextBox4.Value = ""

Espero puedas ayudarme, mil gracias
[email protected]
Pero que te muestra no te lo deja repetir.. debería funcionarte.
Si quieren enviame la macro a [email protected]
Nuevamente gracias por tu paciencia, pero cuando ingreso un número de dni repetido y presiono agregar, no me hace nada y me permite repetir el número, ahí te envío mi modelo para ver si podes (otra vez gracias por tu tiempo y paciencia) ver cual es mi error.
No he puedo abrir tu archivo no se que le pasa lo puedes enviar a [email protected]
Ok gracias te vuelvo a enviar el archivo
Creo que lo que pasa es que debes agregar el numero con punto como lo tienes en la celda para que lo reconozca.
Intentalo así a ver si funciona
Te envíe el archivo ya me funciono
Sandra mil gracias por tu valiosísima ayuda, la verdad es que me solucionaste el problema, lo único que me pasa es que me marca error cuando repito el numero, pero lo solucioné de la siguiente manera:
MsgBox "El numero : " & UCase(txtRequerimiento.Text) & " ya se encuentra registrado"
        txtRequerimiento.Text = ""

(eso es lo que se me pone en amarillo) y me depura
Private Sub Textbox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim n As Range
If TextBox4.Text <> "" Then
   Set n = Workbooks("BASE2010.xls").Worksheets("BASE").Range("d3:d55555").Find(what:=TextBox4.Text, lookat:=xlWhole)
    If Not (n Is Nothing) Then
        Range(n.Address).Select
        MsgBox "El numero ingresado ya se encuentra registrado, por favor modifique o elimine"
        Cancel = True
End If
     Set n = Nothing
End If
End Sub
(Así lo solucioné)
No sé si sirva de algo pero lo creé en office xp y lo modifico con 2007.
Otra vez gracias por tu ayuda!
Ok
¿Entonces ya quedo solucionada tu pregunta?
Si lo que u pasa es que lo copie de algo que ya tenia y se me olvido cambiar el nombre del textbox. Ponlo así y veras que te da el numero en el cuadrito de mensaje
MsgBox "El numero : " & UCase(textbox4.Text) & " ya se encuentra registrado"
        ttextbox4.Text = "".
Si queda solucionada tu pregunta por favor la cierras de lo contrario con mucho gusto acepto inquietudes
Mil gracias!
Lo tenía frente a mis ojos y no me daba cuenta, Sandra te agradezco la ayuda y el tiempo dedicado, la verdad es que estoy tratando de aprender y con personas como vos, es realmente fácil, espero poder contar con tu ayuda en un futuro.
Nuevamente gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas