Usar userform para introducir información

Tengo creada una base de datos y para añadir registro he utilizado un userform de maner que se rellenan tres campos y al dar a un botón dentro del userform estos datos se quedan validados. El problema que tengo es que siempre se registran en la segunda fila y los datos van avanzando había abajo a medida que introduzco más información. Lo que quiero es que en lugar de empezar siempre a rellenar en esa fila la macro lo revise las columnas y lo haga donde las celdas están vacías, es decir, si meto un registro que lo haga justo después del que esta situado al final en la parte de abajo. He planteado un ciclio do while pero el problema es que no sale, ¿me podéis echar una mano? Gracias.
Este la parte de código del userform
Private Sub CommandButton1_Click()
Rem inserta un renglon
Selection.EntireRow.Insert
Rem Empty Limpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
Rem Textbox1SetFocus Envia el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub
------------------------------------------------------------------------
Private Sub TextBox1_Change()
Range("B2").Select
If i = 1 Then
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
End If
ActiveCell.FormulaR1C1 = TextBox1
End Sub
---------------------------------------------------------------------------
Private Sub TextBox2_Change()
Range("C2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.FormulaR1C1 = TextBox2
End Sub
---------------------------------------------------------------------------
Private Sub TextBox3_Change()
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.FormulaR1C1 = TextBox3
End Sub

4 Respuestas

Respuesta
1
Según lo que estás haciendo parece que las 3 columnas no van parejas, ¿puede ser que algunas tengan más datos que otras?
Si es así tendrás que dejar tu bucle para cada textbox.
Pero si necesitas saber la última fila ocupada para meter los 3 datos a continuación, utilizá esta línea, podría ser en el commandbuton (aunque no sé muy bien qué hace ese control)
libre=activesheet.range("A65536").end(xlup).Row + 1
Le sumo 1 porque necesito pasar datos a la fila sgte. Entonces el pase sería:
Cells(libre,1) = textbox3    'col A

cells(libre,2) = textbox1     'col B
cells(libre,3) = textbox2     'col C
No es necesario que lo pases como Fórmula.
Comentame si esto responde a tu consulta
Respuesta
1
Dim SigFila
SigFila = Application.WorksheetFunction.CountA (Range("A:A")) + 1
Cells(SigFila, 1).Value = TextBox3.Text
Cells(SigFila, 2).Value = TextBox1.Text
Cells(SigFila, 3).Value = TextBox2.Text
Respuesta
1
Entra enmi sitios:
Hay una variaedad de ejemplos que puedesdescargar, que hacen lo que pides..
Te recomiendo
Contro de Prestamos.xls
o Sistema de Facturación.xls
Respuesta
1
Enviame tu correo y te envío algunos ejemplos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas