Está en la página 1de 12

Semestre
2016
Universidad Católica del Norte

Autor: Prof. Renato Sukno R.


Tecnologías de Información
Ing. Civil Industrial

Guía de Auto Aprendizaje


EX-05

Uso de Listas de Despliegue en un


Formulario de Ingreso de Datos

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

El formulario que construiremos será el que muestra la Figura 2.

Figura 2

Recuerde que, para construir un Formulario en VBA, debe distinguirse dos etapas:

 Creación/Dibujo del formulario


 Programación del formulario

Veamos a continuación cada una de ellas.

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

b) En la ventana que se desplegó, seleccione la siguiente ruta: InsertarUserForm

c) En la nueva ventana desplegada, vamos a construir el formulario en tres pasos:

 Primero, escribiremos los nombres o etiquetas de cada zona del formulario. Repita el
siguiente procedimiento para cada nombre:

i. En el Cuadro de Herramientas que aparece al lado del borrador de formulario, seleccione


el botón ‘Etiqueta’ pinchándolo con el mouse;

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

1) En el Cuadro de Herramientas que aparece al lado del borrador de formulario,


seleccione el botón ‘Cuadro de texto’ pinchándolo con el mouse.

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.

4) Repita los pasos anteriores para el d. cuadro de texto.

3
ii. Cuadro de Lista

1. En el Cuadro de Herramientas seleccione el botón ‘Cuadro de Lista’


pinchándolo con el mouse.

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.

El Formulario que construyó en su computador debiera lucir como la Figura 3.

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.

i. En el Cuadro de Herramientas que aparece al lado del borrador de formulario, seleccione


el botón ‘Botón de comando’ pinchándolo con el mouse.

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

El Formulario que construyó en su computador debiera lucir como la Figura 4.

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.

a) Programación de los campos de ingreso de datos

 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:

i. Selecciones con su mouse el área de ingreso de datos del campo ‘Nombres’

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:

i. Selecciones con su mouse el área de ingreso de datos del campo ‘Clima’

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

b) Programación de los botones del Formulario

 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.

1) Sentencia CASE: es la clásica sentencia CASE de los lenguajes de programación que


Ud. ya conoce. Se evalúa una condición, y según el resultado de dicha evaluación, el
programa ejecuta distintas acciones. En nuestro ejemplo, coloca el nombre del mes en
la celda A6, según la elección que hizo el usuario en la Lista de Despliegue.

2) ActiveCell.FormulaR1C1 = Val(TextBox1): almacena en la celda activa de la Hoja de


EXCEL, el valor numérico del contenido de TextBox2. Lea en Internet acerca de la
función de conversión ‘Val’.

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

c) Programación de la Macro que Despliega el Formulario

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?

 Sentencia With UserForm1.ListBox1:

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:

Actúa sobre el panel de Propiedades de ListBox1, indicándole que la lista es de


selección única (es decir, se puede seleccionar solo un elemento de la lista por vez).

 Expresión RowSource = "":

Actúa sobre el panel de Propiedades de ListBox1, indicándole que la lista no se


encentra en la Hoja de EXCEL. Si la lista no la hubiésemos incluido en la macro y la
leyésemos desde la propia Hoja de EXCEL, aquí iría el rango donde se encuentra
dicha lista.

Figura 14

Agregar Botón en la Hoja EXCEL


Siguiendo los mismos pasos que vio en la Guía de Auto Aprendizaje EX04, incorpore en la Hoja
EXCEL un botón para ejecutar la macro que activa el formulario de Ingreso de datos que acaba de
crear. Haga que luzca similar al que se muestra en la Figura 15. Se puso el botón sobre el diseño
de la matriz, para asegurar que no se vea afectado por la inserción de nuevas filas.

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

Envíe el ejercicio resuelto en el plazo y al correo especificado por el


Profesor de la Asignatura.

12

También podría gustarte