Para comprender de buena manera en que consiste un userform,
lo que haremos será crear uno de ellos, paso a paso, explicando lo que
sea necesario según sea el caso.
Supongamos que deseamos realizar una encuesta, donde le preguntaremos a
una persona su nombre y que equipo de fútbol, de una lista posible,
considera como mejor. Además, esta encuesta la queremos realizar a
través de un formulario que se activará cada vez que presionemos un
determinado botón de comando que se encuentra en una de las hojas
(Hoja1) de nuestro archivo de ejemplo (userforms02.xls).
Concretamente, el siguiente es objetivo perseguido:
Lo que haremos en primer lugar será insertar el cuadro de comando en la
hoja Userforms. Luego le aplicaremos los formatos que
deseemos para que quede llamativo dicho control.
Posteriormente, lo que haremos será crear el userform, para esto
necesitamos abrir el Editor de Visual Basic (ALT + F11).
Luego de lo cual, iremos al menú Insertar/Userform. Además iremos
a la propiedad Caption de dicho userform, configurándola como "Equipo
Favorito". Una vez realizados todos estos paso, la
pantalla debiese haber quedado de la siguiente forma:
A continuación comenzaremos a trabajar en el Userform, al cual le
insertaremos algunos controles y modificaremos algunas propiedades de
los mismos hasta dejarlo con el siguiente aspecto:
En general, lo realizado hasta el momento no dista mucho de lo realizado
anteriormente con los cuadros de controles, por esta razón es que no
hemos reparado en detalles menores.
Antes de incrustar los distintos botones de opción, será necesario en
primer lugar insertar el Marco, esto es un control que permite
agrupar otros controles, dándoles un aspecto de grupo.
Tendremos que utilizar una Etiqueta de Texto, la cual nos
permitirá colocar un texto de referencia (Nombre) al cuadro de texto que
aparece en su costado.
A continuación, haremos un pequeño cuadro resumen con las
propiedades que deberá configurar para cada uno de los controles, por
favor sígalo muy atento:
|
Etiqueta |
|
Cuadro de Texto |
|
Marco |
|
Propiedad |
Valor |
|
Propiedad |
Valor |
|
Propiedad |
Valor |
|
|
|
|
|
|
|
|
|
|
Accelerator : |
N |
|
(Name) : |
TextName |
|
Caption : |
Equipo: |
|
Caption : |
Nombre: |
|
TabIndex : |
1 |
|
TabIndex : |
2 |
|
TabIndex : |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Opción: Real |
|
Opción: Colo-Colo |
|
Opción: Manchester |
|
Propiedad |
Valor |
|
Propiedad |
Valor |
|
Propiedad |
Valor |
|
|
|
|
|
|
|
|
|
|
Accelerator : |
R |
|
Accelerator : |
C |
|
Accelerator : |
B |
|
Caption : |
Real Madrid |
|
Caption : |
Colo-Colo |
|
Caption : |
Manchester |
|
(Name) : |
OpcionReal |
|
(Name) : |
OpcionColo |
|
(Name) : |
OpcionManch |
|
TabIndex : |
0 |
|
TabIndex : |
1 |
|
TabIndex : |
2 |
|
|
|
|
Value : |
True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Botón Grabar |
|
Botón Cancelar |
|
|
|
|
Propiedad |
Valor |
|
Propiedad |
Valor |
|
|
|
|
|
|
|
|
|
|
|
|
|
Default : |
True |
|
Cancel : |
True |
|
|
|
|
Caption : |
Grabar |
|
Caption : |
Cancelar |
|
|
|
|
(Name) : |
BotAcep |
|
(Name) : |
BotCanc |
|
|
|
|
TabIndex : |
3 |
|
TabIndex : |
4 |
|
|
|
A través de la propiedad TabIndex lo que estamos
haciendo es establecer en cada control el orden de tabulación que
tendrán, es decir, el orden en que se irá desplazando el cursor cada vez
que presionemos la tecla "Tab" de nuestro teclado, en caso que
nos deseemos mover de esta forma dentro del formulario, en lugar de
utilizar el mouse. Nótese que los controles de opción tienen
su propia numeración, dentro del marco que los cobija.
Otra propiedad muy interesante que hemos aplicado en este ejemplo es
Acelerator, la cual sirve para configurar el acceso rápido a los
controles de opción, acción que se realiza mediante la combinación
teclas "ALT + Letra destacada", donde la letra destacada es
aquella "letra" que hemos asignada a dicha propiedad y que aparecerá
subrayada en el formulario.
Una vez realizada la configuración de las propiedades de los
distintos controles, procederemos ahora a configurar los distintos
botones a través del código VBA.
En primer lugar configuraremos el control que activa el
Userform (Abrir Formulario), para lo cual introduciremos la siguiente
línea de código:
Private
Sub CommandButton1_Click()
UserForm1.Show
End Sub
Posteriormente, configuraremos el control "Cancelar", para que cuando lo
accionemos cierre el Userform creado:
Private
Sub BotCanc_Click()
Unload UserForm1
End Sub
Finalmente configuraremos el control "Guardar", en este caso la
codificación será un poco más compleja:
Private
Sub BotAcep_Click()
Sheets("Hoja1").Activate
If TextName.Text = "" Then
MsgBox "Debe introducir un nombre."
TextName.SetFocus
Exit Sub
End If
NextRow = Application.WorksheetFunction.CountA(Range("A:A"))
+ 1
Cells(NextRow, 1) = TextName.Text
If OpcionReal Then Cells(NextRow, 2) = "Real"
If OpcionColo Then Cells(NextRow, 2) = "Colo-Colo"
If OpcionManch Then Cells(NextRow, 2) = "Manchester"
TextName.Text = ""
OpColo = True
TextName.SetFocus
End Sub
La primera instrucción tiene como objetivo asegurarse de que la hoja
activa sea la "Hoja1". El siguiente grupo de código cumple
la misión de verificar que el cuadro de texto no quede en blanco, y si
así sucediera, enviará un mensaje que indicará tal situación no
permitiendo "grabar" o recopilar la información. El tercer grupo
de código (que en este case es una única línea de código) cumple la función de buscar la primera celda disponible para
registrar el valor obtenido del userform. El cuarto grupo es
el encargado de recopilar la información que figura tanto en el cuadro
de texto como en los botones de opción. El último grupo de código
deja en blanco el cuadro de texto y deja seleccionada por defecto la
opción "Colo-Colo".
En el siguiente apartado, podrá descargar el archivo con este ejemplo
desarrollado.
|