Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semestre
2016
Universidad Católica del Norte
1
Introducción
En la Guía de Auto Aprendizaje EX04 Ud. aprendió a construir un formulario de ingreso de datos en EXCEL
usando VBA. En el Ejercicio 1 de esa guía aparecieron dos campos: ‘Región’ y ‘Comuna’, que era necesario
completarlos cada vez que se ingresaba un registro de datos, escribiéndolos. En ambos casos se trata de
conjuntos o listas limitadas de alternativas de donde seleccionar, razón por la cual podríamos diseñar el
formulario de tal manera, que el usuario no tenga que escribir los nombres, sino seleccionarlos de una lista
desplegable.
Por ello en esta Guía profundizaremos un poco más el tema, y aprenderemos a programar listas desplegables
dentro de un Formulario de EXCEL, usando VBA (Visual Basic Application).
Para ello, comenzaremos por diseñar la Hoja donde iremos almacenando los datos que se ingresen a través
del formulario. Para evitar equívocos, copie en su computador el diseño exactamente como aparece en la
Figura 1 (vale decir, en las mismas filas y columnas).
Figura 1
Figura 2
Recuerde que, para construir un Formulario en VBA, debe distinguirse dos etapas:
2
Crear el Formulario
Como este tema ya lo aprendió en la Guía de Auto Aprendizaje EX04, aquí solo puntearemos los
pasos.
a) Vaya al Menú principal y seleccione la opción Desarrollador. Una vez allí, presione en la Cinta
de Opciones el botón Visual Basic
Primero, escribiremos los nombres o etiquetas de cada zona del formulario. Repita el
siguiente procedimiento para cada nombre:
ii. Mueva el cursor a la posición del formulario donde desea escribir el nombre del campo;
iii. Haga un solo click con el mouse sobre el texto para editar el nombre por defecto y escriba
el nombre que corresponde: ‘Región del País’, ‘N° de Habitantes’ y ‘Clima’.
Segundo, definiremos el tipo de botón de control que usaremos para cada una de las
etiquetas creadas. Si observamos el formulario de muestra de la Figura 2, notaremos que se
usó ‘Cuadro de texto’ para las etiquetas ‘N° de Habitantes’ y ‘Clima’, mientras que para la
etiqueta ‘Regiones del País’ se usó el botón ‘Cuadro de Lista’ . Veamos cómo aplicar
cada caso.
i. Cuadro de texto
2) Mueva el cursor a la posición del formulario donde desea definir el área de ingreso
(debajo de la etiqueta correspondiente, en este ejemplo)
3) Estírelo lo necesario para que se pueda visualizar toda la información potencial que se
ingresará más adelante cuando el formulario quede operativo.
3
ii. Cuadro de Lista
2. Mueva el cursor a la posición del formulario donde desea definir el área de ingreso
(debajo de la etiqueta correspondiente, en este ejemplo)
3. Estírelo lo necesario para que se pueda visualizar toda la información potencial que se
ingresará más adelante cuando el formulario quede operativo.
Figura 3
Tercero, agregaremos al formulario dos botones: uno para materializar la inserción de cada
registro de datos que deseemos ingresar a la planilla, y otro para cancelar la operación, antes
de grabar el registro, en caso que nos hayamos equivocado. Para ello, repetiremos, para cada
botón a agregar, el siguiente procedimiento.
ii. Mueva el cursor a la posición del formulario donde desea insertar el botón (agrándelo o
achíquelo a su gusto, estirándolo desde los vértices)
iii. Haga un solo click con el mouse sobre el texto para editar el nombre por defecto y
escriba el nombre que corresponde: en uno INSERTAR y en el otro CANCELAR
4
Figura 4
Programar el Formulario
Como ya se dijo en la guía anterior, programar el formulario, que es un objeto de VBA, significa
especificar aspectos como de dónde se obtienen los datos para construir la lista de despliegue;
cómo se muestra el formulario; en qué área de la Hoja de EXCEL se deberán grabar exactamente
los datos ingresados a través del formulario; qué ocurre cuando se presiona alguno de los botones
INSERTAR o CANCELAR, etc. Comenzaremos por programar cada uno de los campos de ingreso
de datos y en seguida programaremos cada uno de los botones, para terminar con la macro que
ejecuta el formulario. A diferencia de lo que hicimos en la Guía anterior, en ésta los datos se
grabarán solo cuando se haya presionado el botón INSERTAR.
TextBox1 - Botón ‘N° de habitantes’- este es un campo numérico y por lo tanto debemos
construir una rutina que no permita el ingreso de datos que no sean numéricos. Ejecute los
siguientes pasos:
ii. Presione el botón derecho del mouse y seleccione la opción ‘Código’. Se desplegará la
ventana que muestra la Figura 5.
Figura 5
iii. Inserte las sentencias de instrucción de VBA que se muestran en la Figura 6 y cuya
lógica está explicada en la misma figura. Consulte en Internet para que logre una mejor
comprensión de cada una de las funciones y métodos utilizados: Beep, SetFocus.
5
Figura 6
TextBox2 - Botón ‘Clima’- este es un campo de texto y por lo tanto debemos construir una
rutina que no permita el ingreso de datos que no sean de texto. Ejecute los siguientes pasos:
ii. Presione el botón derecho del mouse y seleccione la opción ‘Código’. Se desplegará la
ventana que muestra la Figura 7.
Figura 7
iii. Inserte las sentencias de instrucción de VBA que se muestran en la Figura 8 y cuya
lógica ya fue explicada en la Figura 6. La diferencia es que ahora preguntamos si el
TextBox2 es numérico y distinto de blanco, pues en ese caso, se debe esperar hasta
que el usuario ingrese un dato de texto.
Figura 8
6
ListBox1 - Botón ‘Región del país’- este es un campo de texto y por lo tanto debemos
construir una rutina que no permita el ingreso de datos que no sean de texto. Ejecute los
siguientes pasos:
i. Seleccione con su mouse el área de ingreso de datos del campo ‘Región del país’
ii. Presione el botón derecho del mouse y seleccione la opción ‘Código’. Se desplegará la
ventana que muestra la Figura 9. Esta vez no ingresaremos ninguna sentencia, porque
el control de la lista lo pondremos en parte en la programación del botón INSERTAR, y
en parte en la macro que ejecuta el formulario.
Figura 9
CommandButton1 - Botón ‘INSERTAR’- este botón graba en la Hoja de EXCEL los datos
que el usuario ingresa en el Formulario. Ejecute los siguientes pasos:
i. Haga doble click con su mouse sobre el botón ‘INSERTAR’. Su ventana lucirá como
muestra la Figura 10.
Figura 10
ii. Inserte las sentencias de instrucción de VBA de modo que el resultado luzca como
muestra la Figura 11.
Ahora bien; ¿qué significa la programación que hicimos en este botón? Veámosla en
términos generales, y Ud. investigue en Internet el detalle de lo que no comprenda.
7
3) Unload Me: Se usa para quitar un formulario de usuario de la memoria. En este caso,
‘Unload’ puede estar seguido del nombre del formulario, por ejemplo, UserForm1
o de la palabra reservada Me. Lea en Internet para aprender más acerca de esta
función.
Figura 11
8
CommandButton2 - Botón ‘CANCELAR’- este botón limpia o vacía los campos del
Formulario, antes de grabarlos, en caso que Ud. se haya equivocado, por ejemplo, o
simplemente se arrepienta. Ejecute los siguientes pasos:
i. Haga doble click con su mouse sobre el botón ‘INSERTAR’. Su ventana lucirá como
muestra la Figura 12.
Figura 12
iii. Inserte las sentencias de instrucción de VBA, que Ud. ya conoce, porque las usó en la
Guía anterior, de modo que el resultado luzca como muestra la Figura 13.
Figura 13
Esta macro podría ser algo muy sencillo, como desplegar el formulario en pantalla. Sin embargo,
en nuestro ejemplo hemos programado dentro de la macro la lista de despliegue que debe
cargarse en el formulario al desplegarlo. La Figura 14 detalla la programación que Ud. debe
copiar en su computador. ¿Qué podemos destacar en este código?
Mediante el uso With ... End With, se puede realizar una serie de declaraciones
sobre un objeto especificado sin necesidad de repetir el nombre del objeto múltiples
veces. En nuestro ejemplo se aplicó de la siguiente manera:
With UserForm1.ListBox1
.AddItem "Arica y Parinacota"
.AddItem "Tarapacá"
donde se pudo agregar cada región a la lista, sin tener que repetir en cada sentencia
‘Addterm’, el nombre del objeto (UserForm1.ListBox1).
9
Expresión MultiSelect = fmMultiSelectSingle:
Figura 14
10
Figura 15
11
Ejercicios
EJERCICIO 1
Usando el mismo ejercicio que construyó con la Guía de Auto Aprendizaje, modifíquelo de modo que el campo ‘Clima’
también esté controlado por una Lista de Despliegue que incluya los siguientes conceptos:
CLIMAS
Desértico costero
Desértico normal
Mediterráneo seco
Mediterráneo seco y húmedo
Templado lluvioso
Marítimo lluvioso
Tundra
Estepario costero
Hielo de Alturas
12