Días atrás recibí una solicitud de ayuda de un lector que demandaba colaboración para realizar un formulario de usuario con VBA donde implementar unos botones típicos de Siguiente y Anterior, así como dos más de Inicio y Fin.
Aunque el desarrollo es bastante sencillo, me pareció interesante compartirlo...
Para el ejemplo necesitamos una base de datos simple de cuatro campos (Nombre, Apellidos, Edad y Sexo):
Igualmente necesitamos componer nuestro formulario con los siguientes controles:
4 cuadros de texto (TextBox):
txtNombre
txtApellido
txtEdad
txtSexo
4 botones de comando (CommandBox):
cmdInicio
cmdAnterior
cmdSiguiente
cmdFin
y opcionalmente unas etiquetas para identificar los campos en el UserForm.
Este podría ser un diseño:
Y ahora lo importante.. en la ventana de código del UserForm incluimos los siguiente procedimientos:
Listo... puedes comprobar rápidamente el correcto funcionamiento de los diferentes botones.
Aunque el desarrollo es bastante sencillo, me pareció interesante compartirlo...
Para el ejemplo necesitamos una base de datos simple de cuatro campos (Nombre, Apellidos, Edad y Sexo):
Igualmente necesitamos componer nuestro formulario con los siguientes controles:
4 cuadros de texto (TextBox):
txtNombre
txtApellido
txtEdad
txtSexo
4 botones de comando (CommandBox):
cmdInicio
cmdAnterior
cmdSiguiente
cmdFin
y opcionalmente unas etiquetas para identificar los campos en el UserForm.
Este podría ser un diseño:
Y ahora lo importante.. en la ventana de código del UserForm incluimos los siguiente procedimientos:
'variables a emplear entre los diferentes procedimientos más abajo Dim fila As Long Dim NumItems As Long Private Sub UserForm_Initialize() Dim filaIni As Long 'damos valores de partida fila = 2 'rellenamos el formulario RecuperaDatos (fila) 'y determinamos el número total de registros NumItems = WorksheetFunction.CountA(Range("A:A")) - 1 End Sub 'Gestionamos los botones de Siguiente y Anterior Private Sub cmdSiguiente_Click() 'controlamos el botón de Siguiente 'limitándolo por el último registro If fila <= NumItems Then fila = fila + 1 RecuperaDatos (fila) Else MsgBox "Último registro" End If End Sub Private Sub cmdAnterior_Click() 'controlamos el botón de Anterior 'limitándolo por el primer registro If fila > 2 Then fila = fila - 1 RecuperaDatos (fila) Else MsgBox "Primera entrada!!" End If End Sub Private Sub cmdFin_Click() fila = NumItems + 1 RecuperaDatos (fila) End Sub Private Sub cmdInicio_Click() fila = 2 RecuperaDatos (2) End Sub 'Procedimiento para recuperar datos de la hoja hacia el UserForm Private Sub RecuperaDatos(nRow As Long) Me.TxtNombre.Value = Cells(nRow, 1) Me.TxtApellido.Value = Cells(nRow, 2) Me.txtEdad.Value = Cells(nRow, 3) Me.txtSexo.Value = Cells(nRow, 4) End Sub
Listo... puedes comprobar rápidamente el correcto funcionamiento de los diferentes botones.
Gracias por aportar
ResponderEliminar