Publicado el 9 de Julio del 2019
458 visualizaciones desde el 9 de Julio del 2019
260,5 KB
8 paginas
Aula Macedonia
Curso de Programación en VBA para Excel
Artículo realizado por
Iñaki Ecenarro.
Capítulo 3. Cuadros de diálogo (Userforms).
Este capítulo va a tratar sobre los cuadros de diálogo, que se utilizan para obtener información del usuario. Una
aclaración respecto a versiones: uno de los cambios más importantes de Excel 95 a Excel 97 en el apartado de
programación es la parte de cuadros de diálogo. La verdad es que hay muchas diferencias entre ambos y eso hace
imposible hablar de las dos versiones a la vez, por lo que este capítulo está dirigido sólo a Excel 97.
Todos los ejemplos de este capítulo están incluídos en este fichero: Excel3.xls
(117kbs)
Los cuadros de diálogo en Office 97 son mucho más potentes que en la versión anterior. Se han añadido muchas
opciones, como la posibilidad de definir eventos, utilizar controles ActiveX además de los incluidos en Excel (si no
sabes qué es un control ActiveX no tiene demasiada importancia, es un tema avanzado que quizá algún día
tratemos), etc.
Nuestro primer cuadro de diálogo va a ser muy sencillo: vamos a presentar un cuadro de diálogo en el que el usuario
puede introducir un número, y si pulsa "Aceptar" copiaremos el número introducido en la celda activa. Si el usuario
pulsa "Cancelar" no haremos nada.
Lo primero es ir al editor de Visual Basic, utilizando la opción "Herramientas, Macro, Editor de Visual Basic", o
simplemente pulsando AltF11.
En la parte izquierda de la pantalla tendremos el "Explorador de Proyectos" y la ventana de "Propiedades". Igual que
antes, si no puedes ver estas ventanas utiliza el menú "Ver" para hacer que aparezcan. En el "Explorador de
Proyectos" aparecen todos los "proyectos" de VBA: cada libro que tengamos abierto es un proyecto. Dentro de cada
libro aparecen todas las hojas del libro y también los módulos y cuadros de diálogo que crearemos más adelante.
En la ventana de "Propiedades" aparecen las propiedades del objeto que tengamos seleccionado en ese momento.
Supongo que a estas alturas ya debe estar claro el concepto de "propiedad" de un objeto. Por ejemplo, vamos a ir a
un proyecto de VBA en el "Explorador de Proyectos". Dentro de él veremos las hojas de cálculo del libro, y vamos a
seleccionar una de ellas. En la ventana de "Propiedades" van a aparecer las propiedades de la hoja seleccionada.
Por ejemplo, la primera propiedad que vemos es la propiedad Name, que ya conocemos. Podemos utilizar la
ventana de "Propiedades" para cambiar las propiedades del objeto seleccionado.
Ahora para crear nuestro cuadro de diálogo vamos a utilizar la opción "Insertar, Userform" (Userform es el nombre
que da Excel 97 a los cuadros de diálogo).
En este momento vemos en la parte derecha un cuadro de diálogo vacío, y por otro
lado veremos el "Cuadro de herramientas", en el que están todos los controles
que podemos poner en el cuadro de diálogo. Si no aparece el Cuadro de
Herramientas utiliza la opción "Ver, Cuadro de herramientas" para que aparezca.
Los controles del "Cuadro de herramientas" son los típicos de cualquier cuadro de
diálogo que podemos ver en cualquier aplicación de Windows:
Etiqueta: para
mostrar un texto
en el cuadro de
diálogo. El usuario
no puede editarlo.
Cuadro de texto:
para que el
usuario introduzca
un texto.
Cuadro
combinado: el
clásico control de
persiana para que
el usuario
seleccione una
opción entre
varias.
Cuadro de lista:
para que el usuario seleccione una opción de entre las que le presentamos.
Casilla de verificación: verdadero o falso
Botón de opción: también para que el usuario seleccione una opción entre varias.
Botón de comando: un botón normal y corriente, como los típicos de "Aceptar" y "Cancelar"
Marco: para agrupar varios controles. Su uso es básicamente por razones estéticas. Como puedes ver en el
diálogo de ejemplo un marco puede tener distintas apariencias.
Primero vamos a ver las propiedades del objeto UserForm. Para ello seleccionamos el Userform de la parte
derecha simplemente pulsándolo con el ratón. En la parte inferior izquierda, en la ventana de Propiedades, tenemos
la lista de propiedades del objeto UserForm. Utilizando esta ventana podemos cambiar el valor de cualquier
propiedad del Userform. Algunas de las propiedades más importantes son:
Name: el nombre con el que vamos a identificar el UserForm. Tiene que ser único y no puede tener espacios
ni otros caracteres raros. Yo suelo ponerles un nombre que empiece por "uf" (por ejemplo,
ufDatosPersonales), porque así cuando en el código VB haga una referencia a este objeto sé que se trata de
un objeto UserForm.
Caption: es el título que el usuario verá en el cuadro de diálogo. Se puede poner cualquier texto, incluyendo
espacios.
BackColor: el color de fondo del cuadro de diálogo. Por defecto es el color gris que suelen tener todos los
cuadros de diálogo en Windows.
ForeColor: el color de primer plano, es decir, del texto que aparezca en el cuadro de diálogo.
Font: el tipo de letra por defecto para el cuadro de diálogo. Este es el tipo de letra que tendrán todos los
controles que insertemos en el cuadro de diálogo, pero si luego queremos cambiarlo para cualquier control
puede hacerse.
StartupPosition: la posición en la que aparecerá el cuadro de diálogo. Si le damos el valor "CenterScreen" el
diálogo saldrá en el centro de la pantalla.
SpecialEffect: para cambiar un poco los bordes del cuadro de diálogo.
Picture, PictureAlignment, PictureSizeMode, PictureTiling: se utilizan para poner un dibujo como fondo
del cuadro de diálogo.
Hay más propiedades, pero su uso es bastante sencillo, y consultando la ayuda encontrarás la descripción de todas
las propiedades.
Vamos con nuestro diálogo: lo primero es cambiarle el nombre; vamos a la ventana de Propiedades y en la propiedad
Name, escribimos por ejemplo "ufPrimero". Luego en la propiedad "Caption" escribiremos "Mi primer UserForm". Las
demás propiedades las dejamos como están, aunque si quieres cambiar alguna que afecte a la presentación del
diálogo (color de fondo, efectos especiales, etc) puedes hacerlo tranquilamente.
En cualquier momento puedes probar tu cuadro de diálogo seleccionándolo con el ratón y utilizando la opción
"Ejecutar, Ejecutar Sub/Userform" (o más rápido pulsando F5 o el botón de ejecutar
). Para cerrar el diálogo
tendrás que utilizar la "X" que aparece en la parte superior derecha, porque todavía no hemos añadido ningún botón
para cerrar el diálogo.
Como hemos dicho antes, en nuestro cuadro de diálogo queremos que el usuario escriba un número. Para que
pueda hacerlo, tendremos que poner un cuadro de texto en el diálogo. Para ello pulsamos en el UserForm para que
aparezca el "Cuadro de Herramientas" y en éste pulsamos sobre el control "Cuadro de Texto"
. Una vez
seleccionado el "Cuadro de Texto" pulsamos en cualquier parte del UserForm y veremos que aparece un cuadro de
edición. Podemos utilizar el ratón para moverlo y cambiarle el tamaño.
Pulsando con el ratón, seleccionaremos el cuadro de edición, y como de costumbre veremos que en la ventana de
"Propiedades" aparecen todas las propiedades del objeto "Cuadro de Texto" (TextBox en inglés), entre las que se
encuentran:
Name: el nombre del objeto. Como antes, no puede incluir espacios ni caracteres especiales. Yo suelo
utilizar nombres que empiecen por "tb", para identificar estos objetos como un TextBox, pero se puede utilizar
cualquier nombre.
Text: es el texto que va dentro del cuadro de edición, es decir, el que ha escrito el usuario.
TextAlign: alineación del texto dentro del cuadro de diálogo. Normalmente si lo que queremos es que el
usuario introduzca una cadena de texto se suele alinear a la izquierda, y si queremos que introduzca números
se suele alinear a la derecha.
MultiLine: los valores posibles son verdadero y falso, indicando si queremos que el control permita al usuario
escribir más de una línea o no.
Las propiedas sobre la apariencia del control son parecidas a las que hemos visto antes (BackColor, ForeColor,
SpecialEffects). El resto de propiedades se pueden consultar en la ayuda. Aunque parezca que nos estamos
dejando muchas cosas, una vez que empezamos a tener claras las cosas el utilizar propiedades que no hemos
usado nunca es muy sencillo. O sea, que por ahora nos centramos en lo básico.
Bueno, ahora vamos a nuestro cuadro de diálogo. Seleccionamos nuestro cuadro de edición, lo colocamos en una
posición que nos guste, y vamos a las propiedades. Primero la propiedad Name, que en este caso vamos a dejar tal
como está, TextBox1. No suele ser aconsejable dejar estos nombres, porque si tienes varios cuadros de edición en
un diálogo al final no sabes a cuál te estás refiriendo, pero como en este caso sólo vamos a tener un cuadro de
edición no nos importa demasiado. Ahora vamos a la propiedad "TextAlign" y vamos a seleccionar la opción
"fmTextAlignRight" para alinear el texto a la derecha, ya que lo que queremos es que le usuario introduzca un
número. Por ahora no vamos a hacer nada más con este control.
Si ejecutamos el cuadro de diálogo veremos que podemos introducir un valor en el cuadro de edición que hemos
creado, pero aparte de eso no podemos hacer mucho más.
Lo siguiente que vamos a hacer es poner un texto descriptivo para el cuadro de edición. Para ello seleccionamos del
"Cuadro de herramientas" el control "Etiqueta"
, y pulsamos en el UserForm para crear un control del tipo
etiqueta. Utilizando el ratón le podemos cambiar el tamaño y moverlo, para ponerlo a la izquierda del control de
edición que hemos creado antes.
En la ventana de propiedades de nuestro nuevo control (recu
Comentarios de: Capítulo 3. Cuadros de diálogo (Userforms) (0)
No hay comentarios