Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

VBA: Botones de Siguiente y Anterior en un UserForm

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:

'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 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.


This post first appeared on EXCEL FORO: EJERCICIOS, EJEMPLOS, SOLUCIONES, DUDA, please read the originial post: here

Share the post

VBA: Botones de Siguiente y Anterior en un UserForm

×

Subscribe to Excel Foro: Ejercicios, Ejemplos, Soluciones, Duda

Get updates delivered right to your inbox!

Thank you for your subscription

×