En macros desde un formulario llamado clientes, si ya tengo registrado me mande un msgbox"cliente ya existe"

Hola!!!

como hago para controlar si es que tengo un formulario clientes el cual al darle Nuevo si es que ingreso un dato que ya esta en mi base de datos me mande un mensaje cliente ya existe ps esto para no duplicar datos... 

Espero sus ayudas

1 Respuesta

Respuesta
1

Te dejo unas instrucciones... debes ajustar el nombre de hoja y controles.

Private Sub CommandButton1_Click()
'x Elsamatilde
'CONTROL ANTES DE GUARDAR
'el dato se encuentra en textbox1  --ajustar nbre de control y hoja-rango de tabla clientes
Set busco = Sheets("Hoja2").Range("A:A").Find(TextBox1, LookIn:=xlValues, lookat:=xlWhole)
'si encuentra el dato avisa que ya esta y cancela el guardado
If Not busco Is Nothing Then
    MsgBox "Este cliente ya existe, el registro no se guardarà.", , "ERROR"
    Exit Sub
End If
'aqui siguen tus instruciones de guardado
End Sub

Este control que dejo en un boton de comando puede ser colocado por ej en el evento Exit del textbox donde ingresas el dato.

Si te presenta alguna dificultad aclara un poco màs como es tu proceso (si se trata de un Userform, nombre de los controles, rango de datos clientes, etc, etc)

Sdos

Elsa

Gracias Elsa Matilde con su respuesta pude solucionar lo que esta buscando pero tengo un problemas mas.

cuando ya tengo un dato y lo cargo para editar/modificar ya no me permita guardar me manda el msgbox"Este Cliente ya Existe".

en este caso cual seria la solucion espero que me pueda ayudar

Generalmente tenemos 2 botones o por lo menos podemos identificar con un botón 'Nuevo' cuando se trata de un Alta de registro.

Al presionar Nuevo, coloca un valor 1 en una variable declarada como publica (Dim nuevo as byte como primer línea de código en el formulario, no dentro de las subrutinas),

Luego al guardar, preguntas por este valor y si es 1 haces el control:

Private Sub CommandButton1_Click()
'x Elsamatilde
'CONTROL ANTES DE GUARDAR
If nuevo = 1 Then
'el dato se encuentra en textbox1  --ajustar nbre de control y hoja-rango de tabla clientes
Set busco = Sheets("Hoja2").Range("A:A").Find(TextBox1, LookIn:=xlValues, lookat:=xlWhole)
'si encuentra el dato avisa que ya esta y cancela el guardado
If Not busco Is Nothing Then
    MsgBox "Este cliente ya existe, el registro no se guardarà.", , "ERROR"
    Exit Sub
End If
End If
'aqui siguen tus instruciones de guardado
End Sub

No olvides limpiar esta variable antes de empezar con un nuevo registro si luego de guardar se continua con otras novedades.

este me cogigo

Las correcciones a tu código:

1- La variable debe ser declarada de modo público, es decir 'fuera' de cualquier evento. Desde el Editor, ingresá al código de tu Userform. Como primer línea va la declaración de la variable y luego el resto de los códigos.

Dim nuevo As Byte
Private Sub   (aquí la primer rutina de tu form)
'.....
End Sub

2- Al  hacer el control de contenidos, no debe continuar con el resto del proceso si falla alguno. Falta el Exit Sub

If txtnombre.Text = "" Then 
    Msgbox "Ingresee Nombre....."
    txtnombre.SetFocus
    Exit sub
End If
If txtdireccion.text = "" Then 
   Msgbox "Ingrese direccion...."
   txtdireccion.setfocus
   exit sub
end if
'repetir para fecha y ocupacion

3- Estás moviendo el registro a la fila del  'ActiveCell'. La pregunta es: en el caso de tratarse de un Alta ya estás posicionado en la primer fila libre?

Este botón debiera servirte tanto para Altas como para Cambios o modificación del registro. Entonces considerando que ya estás seleccionando la fila correcta tanto si se trata de un Nuevo como de una Modificación, las instrucciones del With deben servir para los 2 casos. Esta sección de macro debe quedarte así entonces:

If nuevo = 1 Then
   Set busco= Sheets.....
   If not busco is nothing Then
       Msgbox "Este paciente ya existe....."
       Exit Sub 
   End if
End If
'y ahora el With para todos los casos
With Activecell
    '.....
End With
Call desactivar
Call contar
End Sub

Si este botón solo sirve para casos de Nuevo, entonces no hace falta consultar si 'nuevo = 1'.

Ajustalo y probalo nuevamente a todo el código ... si aún te quedan errores deberás escribir todo aquí o podés enviarme tu formulario copiando el correo que aparece en mi sitio.

Hola después de mucho tiempo solo quería pedirle un favor he tratado de enviarle mi archivo pero no como hacerlo espero su ayuda

Deja tu nueva consulta en el tablón Excel indicando en el cuerpo del mensaje que es Para Elsa. Luego me envías un mail con el link de la consulta y tu archivo a alguno de los correos que aparecen en la portada de mi sitio que dejo al pie.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas