Formulario que guarde nombre (excel)

Buenas tardes.
Hoy es una consulta un poco más complicada paramisolo.
Verás estoy haciendo un formulario que inserte nombres y apellidos en una hoja.
Visualmente tiene la cajita del formulario para insertar el nombre y apellido y 2 botones, uno de INSERTAR y otro de BUSCAR
------------------------------------------------
Private Sub CommandButton1_Click()
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(0, 1).Select
TextBox1 = ActiveCell


'Boton insertar
Private Sub CommandButton3_Click()
Range("C9").Select
        Selection.EntireRow.Insert
        TextBox1 = Empty
        TextBox2 = Empty
        TextBox1.SetFocus
End Sub


'Inserta (nombre) en la celda C9
Private Sub TextBox1_Change()
Range("C9").FormulaR1C1 = TextBox1
End Sub

'Inserta (apellido) en la celda D9
Private Sub TextBox2_Change()
Range("D9").FormulaR1C1 = TextBox2
End Sub

-----------------------------------------------
Hasta ahí bien. Lo que sucede es que si por casualidad dejan alguno de los 2 campos vacíos quisiera que saliese un mensaje (msgbox) diciendo que falta por rellenar un campo.
He hecho esto, probando que lo que no se ha insertado fuese por ejemplo el nombre:
'Inserta (nombre) en la celda C9
Private Sub TextBox1_Change()
If TextBox1 = Empty Then
  MsgBox "error inserte el campo que falta"
Else
Range("C9").FormulaR1C1 = TextBox1
End If
End Sub

Esto me lo hace todo correctamente, si escribo solo 1 campo y le doy a insertar, me sale el mensaje de error, y me borra el campo que si estaba añadido (en este caso me borra el apellido) con lo que los dos campos quedan en blanco.
Lo que quisiera es si se puede hacer que el campo del apellido lo guarde, es decir lo deje almacenado en la cajita del formulario (en la celda no), en espera de poner el nombre y darle al boton de INSERTAR.
¿Podrías ayudarme? Un saludo y gracias.

1 Respuesta

Respuesta
1
El codigo para el boton insertar sería este:
Private Sub CommandButton3_Click()
Range("C9").Select
        Selection.EntireRow.Insert
If TextBox1<>"" Then
Range("C9").FormulaR1C1 = TextBox1
TextBox1=Empty
Else
MsgBox "error inserte el campo que falta"
Exit Sub
End If
If TextBox2<>"" Then
Range("D9").FormulaR1C1 = TextBox2
TextBox2 = Empty
Else
MsgBox "error inserte el campo que falta"
Exit Sub
End If 
TextBox1.SetFocus
End Sub
>Un saludo
>Julio
Buenas!
Ahora sucede todo lo contrario, si falta 1 campo lo que hace es que guarda el valor en la cajita del formulario (como queria) pero lo borra de la celda o no lo almacena en la celda.
Habría manera de solucionarlo? Un saludo y gracias.
Leeté lo que pusistes, aquí te lo traspaso porque o bien tú me pides cosas distintas cada vez o no te explicas en lo que quieres:
"Lo que quisiera es si se puede hacer que el campo del apellido lo guarde, es decir lo deje almacenado en la cajita del formulario (en la celda no)"
Aclaraté
>Un saludo
>Julio
Si se bien lo que quiero.
Originalmente me escribia el dato en la celda en espera de introducir el otro. Lo que sucedia es que no me lo guardaba en la cajita del formulario.
El codigo que me has puesto tu, me guarda el codigo en la cajita, pero me lo borra entero de la celda.
Quisiera, si es posible que se quedara el dato en la cajita del formulario y en la celda, en espera del siguiente dato que no se habia añadido.
Se entiende ahora?
Un saludo y gracias.
Private Sub CommandButton3_Click()
Range("C9").Select
        Selection.EntireRow.Insert
If TextBox1<>"" Then
Range("C9").FormulaR1C1 = TextBox1
Else
MsgBox "error inserte el campo que falta"
End If
If TextBox2<>"" Then
Range("D9").FormulaR1C1 = TextBox2
Else
MsgBox "error inserte el campo que falta"
 End If  
TextBox1.SetFocus
End Sub

A ver ahora

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas