Fomulario Wizard en Excel vba con Multipage
En esta ocasión muestro un ejemplo de cómo realizar un formulario Wizard con el objetivo de simular una encuesta.
Para el ejemplo se pudierdon haber utilizado formularios para cada pregunta, pero es mucho más funcional hacerlo con objetos Multipage, y sólo añadirles las instrucciones a los botones para desplazarnos entre las pestañas del objeto.
Cómo funciona ?
Tenemos un Form el cual contiene un Multipage que éste a su vez tiene 6 pestañas. También contiene 4 CommandbButtons que cumplen la función de desplazarse entre las pestañas:
-
Cerrar: cierra el formulario.
-
Anterior: se desplaza a la pestaña anterior.
-
Siguiente: se desplaza a la pestaña siguiente.
-
Mostrar resultado: se desplaza a la última pestaña con el resultado.
Imágenes del formulario
Código del formulario
El código se encuentra en el módulo del formulario.
'--------------------------------------------------------------------------------------- ' Module : UserForm1 ' Author : Sergio A Campos H ' Date : 27/08/2011 ' Purpose : Ejemplo de formulario (Wizard) '--------------------------------------------------------------------------------------- ' Private Sub CommandButton1_Click() 'Botón << anterior Me.MultiPage1.Value = Me.MultiPage1.Value - 1 End Sub ' Private Sub CommandButton2_Click() 'Botón siguiente >> Me.MultiPage1.Value = Me.MultiPage1.Value + 1 End Sub ' Private Sub CommandButton3_Click() 'Llenamos etiquetas con resultados Me.MultiPage1.Value = 5 Me.Label13.Caption = Me.txtNombre.Value Me.Label17.Caption = Me.ComboBox1.Value Me.Label16.Caption = Me.ComboBox2.Value Me.Label15.Caption = Me.ComboBox3.Value Me.Label14.Caption = Me.ComboBox4.Value End Sub ' Private Sub CommandButton4_Click() 'Salir Unload Me End Sub ' Private Sub MultiPage1_Change() 'Evento para el cambio de páginas Call MostrarCaption Call Botones End Sub ' Sub MostrarCaption() 'Se asigna el título al formulario Cuenta1 = Me.MultiPage1.Value + 1 Titulo = "EXCELeINFO - Cuestionario - Paso " & Cuenta1 & " de " _ & Me.MultiPage1.Pages.Count Me.Caption = Titulo End Sub ' Private Sub UserForm_Initialize() 'Llenamos Combos, título y botones With Me .MultiPage1.Value = 0 .MultiPage1.Style = fmTabStyleNone .ComboBox1.RowSource = "lstOpciones" .ComboBox2.RowSource = "lstOpciones" .ComboBox3.RowSource = "lstOpciones" .ComboBox4.RowSource = "lstSiNo" End With Call MostrarCaption Call Botones End Sub ' Sub Botones() 'Habilitar / deshabilitar botones Cuenta = Me.MultiPage1.Pages.Count - 1 If Me.MultiPage1.Value = 0 Then CommandButton1.Enabled = False CommandButton2.Enabled = True CommandButton3.Enabled = False ElseIf Me.MultiPage1.Value = Cuenta - 1 Then CommandButton2.Enabled = False CommandButton1.Enabled = True CommandButton3.Enabled = True ElseIf Me.MultiPage1.Value = 5 Then CommandButton2.Enabled = False CommandButton1.Enabled = False CommandButton3.Enabled = False Else CommandButton2.Enabled = True CommandButton1.Enabled = True End If End Sub