Formularios de usuario
Objetivos del capítulo
En este capítulo descubrirá los formularios de usuario, que sirven de interfaz entre su programa y los usuarios de una forma más intuitiva y agradable que a través de los básicos y a veces austeros cuadros de diálogo vistos hasta ahora.
Conocerá los principales controles con los que los usuarios pueden interactuar y creará su primer formulario.
Terminará este capítulo adaptando algunos de los ejercicios de los capítulos anteriores con formularios de usuario creados específicamente.
Formularios de usuario: UserForm
¿Qué es un formulario de usuario?
Cuando quiera solicitar una serie de datos a un usuario, como un apellido, un nombre o la fecha de nacimiento, puede mostrar sucesivamente tres cajas de diálogo tipo InputBox. El riesgo es que el usuario se equivoque en uno de los pasos y tenga que volver a iniciar el proceso.
Los formularios de usuario son cuadros de diálogo avanzados en los que se pueden mostrar objetos con los que el usuario puede interactuar; estos objetos se denominan controles.
Dependiendo de las necesidades de su negocio y del proceso que quiera ofrecer a sus usuarios, los formularios pueden ser muy elaborados o sumamente sencillos.
He aquí dos formularios, uno sencillo y otro más complejo, que permiten a los usuarios insertar automáticamente información en las hojas de Excel:
![images/cap19_img_01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
![images/cap19_img_02.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_02.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
En la siguiente sección, verá algunos de estos controles y la principal información que puede obtener de ellos.
Al igual que los módulos, cada formulario de usuario estará representado en el Explorador de Proyectos. Los encontrará en la carpeta llamada Formularios.
![images/cap19_img_03.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_03.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Crear un primer formulario
Para ofrecer a los usuarios una interfaz sofisticada, se necesitan algunas manipulaciones muy sencillas y rápidas.
Agregar un formulario de usuario
Antes de poder manipular un formulario de usuario, debe añadirlo al libro. Hay dos formas de crear un formulario y también se puede importar uno ya existente.
Por medio del menú
Para añadir un nuevo formulario directamente desde el menú, active el menú Insertar y elija UserForm.
![images/cap19_img_04.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_04.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Directamente en el Explorador de proyectos
Haga clic derecho en el Explorador de proyectos, seleccione el submenú Insertar y elija UserForm.
![images/cap19_img_05.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_05.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
El nombre predefinido del primer formulario es UserForm1.
![images/cap19_img_06.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_06.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Haga doble clic en el objeto UserForm1 en el Explorador de Proyectos para mostrar el formulario y personalizarlo.
Personalizar un formulario de usuario
Una vez creado el formulario, el primer paso es darle las dimensiones que desee.
Dimensionar el formulario
Utilice el ratón para mover los cuadrados blancos.
![images/cap19_img_07.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_07.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
o especifique las propiedades de alto (Height) y ancho (Width) directamente en la ventana de propiedades del formulario.
![images/cap19_img_08.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_08.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Agregar controles
Una vez que su formulario tenga las dimensiones deseadas, puede añadirle controles. El Cuadro de herramientas le permite arrastrarlos y soltarlos para insertarlos en el formulario.
![images/19OSTHS01.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/19OSTHS01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Si el Cuadro de herramientas no está visible, puede hacerlo aparecer yendo al menú Ver y haciendo clic en Cuadro de herramientas.
En este ejemplo, haga clic en el control Botón de comando:
![images/19OSTHS02.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/19OSTHS02.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Una vez que haya seleccionado el botón de comando en el Cuadro...
Controles en un formulario de usuario
Cuando se utiliza un formulario de usuario, hay varios objetos disponibles, todos ellos con sus propios puntos fuertes y usos dedicados. En esta sección se analizarán algunos.
Cada uno de ellos está presente en el Cuadro de herramientas.
![images/cap19_img_14.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_14.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Etiqueta o título: Label
![images/cap19_IC_A.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_IC_A.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Texto de la etiqueta: Caption
La etiqueta muestra un texto que solo puede modificarse mediante el código, al que se puede acceder a través de la propiedad Caption del control.
LblBienvenida.Caption = "Bienvenidos"
Ejemplo 7: modificar el texto de una etiqueta
Cuadro de texto: TextBox
![images/cap19_IC_B.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_IC_B.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Texto introducido en el cuadro: Value
Cuando quiera recuperar el texto introducido en un cuadro de texto, utilizará la propiedad Value del control.
MsgBox TxtInformacion.Value
Ejemplo 8: mostrar el contenido de una zona de texto
Cuadro de lista y Cuadro combinado: ListBox...
Gestión de eventos en un formulario
Al igual que se pueden activar instrucciones sobre eventos que tienen lugar en las hojas o en sus libros, también se pueden activar con controles que se encuentran dentro del formulario.
La nomenclatura de los eventos se realiza de acuerdo con la siguiente lógica: Private Sub NombreDelControl_Evento(). A continuación, algunos ejemplos.
Al cargar el formulario: UserForm_Initialize
El primer evento que se activa cuando se carga un formulario es su inicialización; esto corresponde a la macro UserForm_Initialize.
Puede utilizar este evento para rellenar los valores predefinidos en los distintos controles y así preparar mejor el formulario.
Private Sub UserForm_Initialize()
TxtDepartamento.Value = "Contabilidad"
End Sub
Ejemplo 17: instrucciones que se activan al cargar el formulario
Al hacer clic: Click
Las interacciones en las interfaces pueden realizarse tanto con el teclado como con el ratón y, como los usuarios están especialmente acostumbrados a hacer clic, el evento que detecta el clic en un control puede utilizarse para activar instrucciones. El procedimiento se llamará NombreDelControl_Click. He aquí un ejemplo:
Private Sub BtnCancelar_Click()
If MsgBox("¿Está seguro de que quiere cancelar la entrada
activa?",vbYesNo)=vbYes Then
Unload Me ...
Ejercicios
En el marco de estos ejercicios, tratará de crear una interfaz que satisfaga una necesidad específica; le daremos una imagen de ejemplo del formulario de usuario para guiarle.
Formulario básico
Cree un formulario llamado UsfEjercicio1.
Coloque un cuadro de texto y un botón de comando en este formulario. El formulario podría tener el siguiente aspecto:
![images/cap19_img_15.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_15.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Cuando el usuario haga clic en el botón, el texto contenido en la zona de texto deberá añardirse en la columna A de la hoja activa del libro ThisWorkbook.
Ir un poco más lejos
Cree un formulario llamado UsfEjercicio2.
Coloque un cuadro de texto, un botón de comando y una casilla de verificación en este formulario.
Cuando se muestra el formulario, la casilla de verificación debe estar marcada (valor True) y la caja de texto debe contener el valor Canadá.
Cuando el usuario haga clic en el botón, debe aparecer un cuadro de diálogo que muestre el texto proporcionado, en minúsculas si la casilla está marcada o en mayúsculas si no lo está.
![images/cap19_img_16.png](https://www.eni-training.com/download/8085119a-0c84-4016-9951-8b65c868e345/images/cap19_img_16.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)