Archivo de Ejemplo: Capital de Austria
Userform es una herramienta de Excel la cual, a través de la programación en Visual Basic, permite mostrar figuras y enlazar a través de botones otras ventanas u objetos. También permite el ingreso de datos a través de casillas de ingreso de texto o número.
A continuación, se desarrollará un ejemplo de su aplicación.
AUSTRIA
Para un mejor entendimiento del tema, se ejemplificará primero a modo de introducción en excel y posteriomente se mostrará el uso de Userform empleando macros en un pequeño CUESTIONARIO acerca de la información en la primera hoja de excel
1) EXCEL: Primero, para información copiamos y pegamos en las celdas de excel. En caso de insertar una imagen en la barra de herramientas está la opción "INSERTAR", luego haremos click en"Imágenes" e insertaremos la imagen deseada.
Posteriormente llenaremos la información y daremos el formato deseado.
Una vez llenado la información para la lectura con las imágenes respectivas, continuaremos con la creación del cuestionario a través de macros.
(Para mayor visualización de la imagen, hacer click en la misma)
2) Macros: La siguiente macro sirve para evaluar los conocimientos elaborados en el punto 1), a través de formularios.
Para iniciar con el cuestionario se colocó 2 botones y una imagen dentro de una hoja.
Para colocar botones se hizo a través del Desarrollador o Programador:
(Para mayor visualización de la imagen, hacer click en la misma)
Una vez colocados, se procede a colocar el contenido.
(Para mayor visualización de la imagen, hacer click en la misma)
Para generar un formulario, dentro del Visual Basic se realiza lo siguiente:
Dentro del formulario, para cargar una imagen, botones o texto se hace uso de las herramientas.
(Para mayor visualización de la imagen, hacer click en la misma)
Para ingresar una imagen, es necesario que está tenga un formato GIF, dado que no acepta ningún formato. dentro de las herramientas el último botón es el que permite ingresar a imágenes.
Formulario 1
El formularo 1 es el siguiente:
Este sigue el siguiente código, que debe ser ingresado a través del botón "Continuar"
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
' Mensaje de respuesta correcta
MsgBox "Respuesta Correcta", vbOKOnly, "Continuar"
' Ocultar formulario
UserForm1.Hide
' Mostrar siguiente formulario
UserForm2.Show
End If
' Mensaje en caso de responder incorrectamente
If OptionButton2.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton3.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton4.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton5.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
End Sub
Formulario 2
El formulario 2 aparecerá una vez que se haya obtenido la respuesta correcta en el anterior formulario.
El programa para esta pregunta del formulario es la siguiente:
Private Sub CommandButton1_Click()
' En caso de seleccionar respuesta correcta
If ComboBox1.Text = "Dinamarca" Then
' Mensaje de respuesta correcta
MsgBox "Respuesta correcta", vbExclamation, "Continuar"
' Ocultar formulario
UserForm2.Hide
' Mostrar siguiente formulario
UserForm3.Show
Else
' Mensaje de respuesta errónea
MsgBox "Error, respuesta incorrecta"
End If
End Sub
--------------------------------------------------------
Private Sub UserForm_Activate()
' Limpiar lista desplegable
ComboBox1.Clear
' Seleccionar las opciones del archivo
ult = Cells(Rows.Count, 1).End(xlUp).Row
' Cargar todas las opciones de la primera columna
For y = 1 To ult
ComboBox1.AddItem Cells(y, 1)
Next
End Sub
Nota: En este punto hay que tener cuidado, pues en el primer caso es el programa para el botón y en el segundo es para cargar de data al formulario.
Formulario 3
El formulario 3 aparecerá una vez que se haya obtenido la respuesta correcta en el anterior formulario.
Private Sub CommandButton1_Click()
' Respuesta correcta
If OptionButton3.Value = True Then
' Mensaje de respuesta correcta
MsgBox "Respuesta Correcta", vbOKOnly, "Continuar"
' Ocultar formulario
UserForm3.Hide
' Mostrar siguiente formulario
UserForm4.Show
End If
' En caso de responder incorrectamente
If OptionButton1.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton2.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton4.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton5.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
End Sub
Formulario 4
El formulario 4 es parecido al anterior
Private Sub CommandButton1_Click()
' Seleccionar la respuesta correcta
If OptionButton5.Value = True Then
' Mensaje de respuesta correcta
MsgBox "Respuesta Correcta", vbOKOnly, "Continuar"
' Ocultar formulario
UserForm4.Hide
' Mostrar siguiente Formulario
UserForm5.Show
End If
' Mensaje en caso de seleccionar respuesta incorrecta
If OptionButton1.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton2.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton3.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton4.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
End Sub
Formulario 5
Este es el último formulario, donde se realiza la última pregunta.
Private Sub CommandButton1_Click()
' Seleccionar la respuesta correcta
If OptionButton4.Value = True Then
' Mostrar mensaje de respuesta correcta
MsgBox "Respuesta Correcta", vbOKOnly, "Continuar"
' Ocultar Formulario
UserForm5.Hide
' Mostrar mensaje final
MsgBox "Gracias jugar", vbOKOnly, "FIN DEL CUESTIONARIO"
Else
' Mensaje de respuesta incorrecta para las opciones restantes
If OptionButton1.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton2.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton3.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
If OptionButton4.Value = True Then MsgBox "Respuesta Incorrecta", vbCritical, "Intentelo de nuevo"
End If
End Sub
El archivo se adjunta al final de este post.