Buscarv me salte un formulario

Tengo una hoja con una base de datos en donde esta el dni, apellido nombre y dirección. En otra hoja tengo un buscav metiendo dni me busca en la base de datos de la otra hoja si no existe me pone no existe. Me gustaría asociar un evento si no existe que me salga un formulario para dar de alta a ese cliente y luego me complete los campos de nombre y apellidos donde antes ponía no existe.

1 respuesta

Respuesta
2

H o l a:

Pon la siguiente macro en los eventos de tu hoja donde tienes la fórmula buscarv:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    If Target.Address <> "$C$6" Then Exit Sub
    Set h = Sheets("Hoja1")
    Set b = h.Columns("A").Find(Target, lookat:=xlWhole)
    If b Is Nothing Then
        UserForm1.Show
    End If
End Sub

Cambia $C$6 por la celda  en donde capturas el DNI

Cambia "Hoja1" por el nombre de la hoja que tiene la base de datos

Cambia "A" por la columna donde tienes todos los DNI


' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Funciona pero no es solo un dni lo que introduzco introduzco hay días que 20 días que 50 días que 100. No es solo para una celda es recorrer toda la columna a hasta no encontrar ningún dato.

H o l a:

Esta fue tu pregunta:

"Tengo una hoja con una base de datos en donde esta el dni, apellido nombre y dirección. En otra hoja tengo un buscav metiendo dni me busca en la base de datos de la otra hoja si no existe me pone no existe. Me gustaría asociar un evento si no existe que me salga un formulario para dar de alta a ese cliente y luego me complete los campos de nombre y apellidos donde antes ponía no existe."

En ninguna parte pusiste en dónde pones los DNI, por eso te envié un ejemplo, si pudieras explicar con detalle lo que tienes y dónde lo pones. Con esa información actualizo la macro.

Te envíe ya el fichero adjunto. Gracias.

H o l a:

Te anexo la macro para abrir el formulario.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "no existe" Then Exit Sub
    If Target.Column <> 1 Then Exit Sub
    Set h = Sheets("TABLABASE")
    Set b = h.Columns("A").Find(Target, lookat:=xlWhole)
    If b Is Nothing Then
        Target.Select
        UserForm1.Show
    End If
End Sub

Esto debe ir en el formulario:

Private Sub UserForm_Activate()
    DNI = ActiveCell.Value
    NOMBRE.SetFocus
End Sub

Para el botón de alta debes crear una nueva pregunta, es otra macro y se debe revisar si la alta es por que se capturó el dato desde la celda o si se alta es porque presionaste el botón del formulario.


' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas