Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller VBA 03 PDF
Taller VBA 03 PDF
SEDE DE MEDELLÍN
______________________________
FACULTAD NACIONAL DE MINAS
Escuela de Sistemas
OBJETIVOS:
• General: Estudiar y utilizar los elementos del entorno de trabajo Visual Basic for Applications (VBA)
desde Microsoft Excel.
• Específicos: (a) Entender y Aplicar el concepto de ambiente de trabajo para el diseño de
aplicaciones, con sus componentes básicos: menú principal, barra de herramientas, caja de
controles, explorador de proyectos, ventana de propiedades, formulario base de diseño. (b) Diseñar
una interfaz sencilla, manipulando los objetos (controles) del tipo: UserForm, Label, TextBox,
CommandButton, Image. (c) Reconocer y manejar los diferentes tiempos en un proyecto VBA:
diseño, ejecución, depuración. (d) Emplear la definición, lectura y escritura de variables en VBA.
ENTORNO DE DISEÑO EN VBA:
En la siguiente anterior se muestran los componentes principales del entorno de diseño de aplicaciones
de Visual Basic for Applications (VBA).
Algunas operaciones típicas con el entorno de desarrollo en VBA son:
• Ocultar/Visualizar diversos componentes como a caja de controles, la barra de herramientas, la
ventana de propiedades, la ventana exploradora de proyectos (explorador de proyectos), el formulario.
• Ubicar controles sobre el formulario de diseño.
• Establecer propiedades al formulario y a los diversos controles ubicados sobre él.
• Asociar programas (procedimientos, subprogramas, rutinas, funciones) con los diversos controles
(objetos) que así lo requieran.
EJERCICIO 1:
El Índice de Masa Corporal – IMC de una persona puede calcularse de manera sencilla mediante la
siguiente fórmula:
peso(en kgs )
IMC =
altura 2 (en metros )
Así por ejemplo, una persona que pese 65 kgs. y mida 1.72 mts. tendría un IMC de 21.97 (65/1.722)
Desarrollar un proyecto en VBA para calcular este valor.
SOLUCIÓN:
Activar el entorno de trabajo Excel‐VBA en Excel 2003 (XP)
Si en vez de tener instalado el Windows Vista con su respectivo Office se tiene la versión anterior (Office
2003) se debe proceder de la siguiente manera. Primero debe permitírsele al Excel ejecutar macros, para
esto ir a Herramientas – Macro – Seguridad como se muestra en la Figura 1.6.
Luego donde dice “Nivel de seguridad” debe seleccionarse Medio o Bajo como se muestra en la Figura
1.7. En el primer caso aparecerá una ventana de confirmación cada vez que se abra el archivo de Excel
correspondiente para determinar si efectivamente se desea habilitar las macros. En el segundo caso
todas las macros podrán ser ejecutadas sin confirmación previa. Como esta propiedad de seguridad no
se define para un archivo en particular si no para todo el Excel en general, se recomienda seleccionar la
opción “Medio” para evitar que otras macros externas puedan hacer alguna operación no deseada.
Activar el entorno de trabajo Excel‐VBA en Excel 2007 (Vista)
Para activar el entorno de trabajo Excel‐VBA si se tiene instalado el Windows Vista con su respectivo
Office simplemente desde la barra de tareas haga clic en INICIO y luego en Microsoft Office Excel1 (es
posible que primero se tenga que ubicar el puntero del mouse en Microsoft Office, dependiendo de la
máquina en la cual se esté trabajando). Aparecerá la ventana o escritorio principal de Excel. Por ejemplo,
en la figura siguiente se muestra el escritorio principal de Excel 2007 (versión en español).
La flecha roja señala la opción y el ícono de Visual Basic, dentro de la ficha (pestaña o lengüeta) llamada
Programador.
1
Microsoft Office, Microsoft Office Excel son marcas registradas de Microsoft Corporation (http://www.microsoft.com/spanish/)
Esta ficha se activa haciendo clic en el botón de Windows (fecha verde) y haciendo de nuevo clic en la
pestaña Opciones de Excel (parte inferior de la figura 1.4, página siguiente), señala con la flecha roja. Al
hacer clic en la pestaña Opciones de Excel se llega al panel de diálogo mostrado en la figura 1.5. Allí se
debe activar la opción Mostrar ficha Programador en la cinta de opciones. A partir de esta activación,
siempre se mostrará la ficha Programador, a partir de la cual se accesa el entorno de VBA. Sin embargo,
independientemente de si la ficha Programador está o no activada, siempre es posible llegar al entorno
VBA pulsando las teclas Alt F11 a la vez (sostenga la tecla Alt y pulse la tecla F11).
Elaborar el proyecto en VBA
Una vez se define el nivel de seguridad apropiado (sólo se debe hacer una vez en el equipo siempre y
cuando luego no se cambie esta configuración) se puede proceder a crear el proyecto en VBA. Para esto
Se selecciona Herramientas – macro – Editor de Visual Basic como se muestra en la Figura 1.8. Una forma
abreviada de hacer esto, al igual que en Excel 2007 es oprimir las teclas Alt + F11.
Luego de entrar al entorno de programación VBA se puede iniciar diseñando la Interfaz del Usuario
dando clic derecho en el proyecto y seleccionando Insertar – UserForm, como se muestra en la Figura
1.9.
Una vez hecho esto aparecerá una ventana (form o formulario) en blanco como se muestra en la parte
derecha de la Figura 1.10. También debe aparecer el cuadro de herramientas (que se muestra en la parte
izquierda de la misma figura) donde se encuentran los controles típicos para desarrollar una interfaz. La
explicación de cada uno se presenta a continuación.
Control Descripción
Formulario (form) Corresponde al formulario (ventana) en sí
Etiqueta (label) Sirve generalmente para agregar texto a manera de títulos,
anotaciones, etc.
Cuadro de texto Sirve generalmente para las operaciones de lectura/escritura de las
(textbox) variables de entrada y salida respectivamente
Botón (command Sirve para realizar alguna operación bien sea de lectura o escritura de
button) datos, de transformación, o cualquier combinación de estas
Marco (frame) Puede servir para diseñar el formulario de manera ordenada
subdividiendo la ventana total en diferentes secciones. Por ejemplo:
sección de lectura de variables de entrada, sección de escritura de
variables de salida, sección de operaciones (botones). La utilización
de este control es opcional.
Téngase en cuenta que cualquiera de estos controles tiene una serie de propiedades que pueden ser
modificadas usando la ventana de propiedades que sale al darle clic derecho al control que se agregue al
formulario y seleccionando propiedades, o mediante la opción Ver‐ Ventana de propiedades (o
abreviado como F4) y señalando el control correspondiente (el formulario en sí mismo es también un
control con propiedades propias). De cualquiera de las dos formas debe aparecer la ventana de
propiedades para el control seleccionado como se muestra en la Figura 1.11 (en este caso las
propiedades corresponden a un control tipo “label” que se describirá a continuación).
Propiedad Descripción
(Name) Identificador único que tendrá el control dentro del proyecto. Se
recomienda utilizar nombres mnemotécnicos que consideren tanto el tipo
de control como la función asociada (por ejemplo botonAceptar,
textoResultados, etiquetaTitulo, etc.)
Backcolor Color de fondo
Caption Texto del control, aplica para todos los controles excepto para el cuadro de
texto
Font Propiedades del texto: tipo de letra, tamaño, estilos y efectos
Forecolor Color del texto
Text Texto que aparece en el control cuadro de texto
*Nota: Estas propiedades pueden ser definidas tanto en tiempo de diseño (como en estos ejemplos) o en
tiempo de ejecución (de manera dinámica) al interactuar con el usuario.
Teniendo en cuenta lo anterior es fácil diseñar una interfaz para el problema planteado como se muestra
en la Figura 1.12.
marcoEntrada
textoPeso
etiquetaPeso
textoEstatura
etiquetaEstatura
marcoResultados
textoIMC
etiquetaIMC
marcoOpciones
botonCalcular botonSalir
Una vez definida la interfaz se procede a pasar el algoritmo al código correspondiente en VBA. Para
hacer esto se puede seleccionar Ver – Código (o abreviado como F7) o dando doble clic en cualquier
parte del formulario.
Como el VBA es un entorno de programación estructurado basado en eventos (ciertas operaciones se
llevan a cabo cuando cierto evento ocurre sobre un control) el código se distribuye como se muestra en
la figura 1.13. Así por ejemplo, al dar doble clic en el control botonCalcular aparecería en el entorno de
programación el cursor situado al interior de:
Private Sub botonCalcular_Clic()
End Sub
Esto significa que lo que se escriba al interior de esas instrucciones será lo que se ejecutaría cuando al
correr el programa se de clic sobre el botón Calcular. Nótese que en esa instrucción aparece
“botonCalcular_Clic()” y no “Calcular_Clic()” pues el nombre del control (que se definió con la propiedad
Name) es “botonCalcular” mientras que “Calcular” es simplemente lo que aparece en pantalla. En este
caso lo que se debe ejecutar es precisamente lo que estamos buscando con este algoritmo que es
calcular el IMC de una persona. Si hiciéramos el diagrama de caja respectivo de este problema sería algo
como:
Leer peso
Leer estatura
IMC = peso / estarura2
Mostar IMC
Que traducido a VBA es precisamente lo que aparece en la parte superior de la Figura 1.13 para
botonCalcular. Es necesario recordar que TODAS las variables (las de entrada, las de salida y las
intermedias) que se utilicen en el código deben ser declaradas, esto con el fin que el lenguaje de
programación sepa de qué tipo de datos es cada una. Un listado de cómo se declaran en VBA los tipos de
datos más importantes vistos en la clase teórica se presenta a continuación:
Tipo de dato Sintaxis en VBA
Entero Corto Integer
Entero Largo Long
Real Simple Single
Real Doble Double
Cadena de texto String
Lógico Boolean
Luego de la declaración de variables aparece:
peso = Val(textoPeso.Text)
estatura = Val(textoEstatura.Text)
Las cuales asignan valores a las variables peso y estatura respectivamente, a partir de lo digitado en las
correspondientes cuadros de texto en tiempo de ejecución. Con la función Val() se asigna el valor
numérico de lo digitado; si se digitan números obviamente los valores asignados corresponden a esos
números; si se digitan letras y otros caracteres, se asignará cero.
Luego aparece el cálculo de la variable de salida: IMC = peso / (estatura ^ 2)
Y por último aparece la instrucción: textoIMC.Text = IMC, que lo que hace es precisamente poner en la
caja de texto textoIMC el valor calculado.
Como en la interfaz diseñada también aparece un botón para salir, es necesario agregar el código
correspondiente. En VBA la instrucción que se emplea para terminar un programa es End como se
muestra en la parte inferior de la figura 1.13. En este caso como dicha instrucción se encuentra al
interior de Private Sub botonSalir_Clic(), esto significa que cuando al ejecutar el programa se de clic
sobre ese boton el programa terminaría (se cerraría la ventana).
EJERCICIO 2:
Teniendo en cuanta lo aprendido hasta el momento, realice un proyecto en VBA para leer dos valores
numéricos y tener la opción de realizar sobre ellos las operaciones aritméticas básicas. Una posible
interfaz se muestra en la Figura 1.14.
Nótese que además de los botones para las 4 operaciones aritméticas básicas y el botón de salir, hay dos
botones adicionales: “Leer Datos” y “Borrar” para hacer el programa un poco más completo. Como se
muestra en la parte media de la figura 1.15 el botonBorrar lo único que hace es poner el contenido de
los cuadros de texto vacíos.
Para este problema como se tienen varias y no solo una operación (a diferencia del ejercicio anterior) es
conveniente hacer dos cosas:
• Primero, las variables (tanto de entrada como de salida) no se definen al interior del código de
cada operación si no de manera general como se muestra en la parte superior figura 1.15. Para
hacer esto solo es necesario seleccionar en la ventana del código la opción “General” que
aparece de primera en la lengüeta que sale en la parte superior izquierda de esa ventana. Lo que
se escriba allí aparecerá aparte de la programación de los controles y será general para todos
ellos. Esto significa que las variables que se declaren allí (al igual que como lo estamos haciendo
para este ejercicio) serán “comunes” para todos los controles y por tanto no es necesario
declararlas en cada uno.
• Segundo, y tendiendo en cuenta lo anterior, la lectura de los datos de entrada no se hace en
cada operación, si no que se tiene un botón específico (botonLeer) para hacerlo como se
muestra en el segundo bloque presentado en la figura 1.15. Esto sirve para no tener que copiar
el mismo código en todos los botones de operaciones. Nótese que al final aparece la instrucción
Msgbox “Datos leidos”. Esta sirve para que aparezca una ventana de información con el texto
correspondiente.
Nota: Un apóstrofe (o comilla simple) indica un comentario. Los comentarios son ignorados a tiempo de
ejecución; sólo sirven para explicar (documentar) ciertas partes de un código como se muestra en la
parte final de la figura 1.15 (en botonSalir). Normalmente en VBA tales comentarios se muestran en
verde (salvo que se cambie la convención de colores del editor).
Aparte de la definición (general) de variables y de los botones de “Leer Datos”, “Borrar” y “Salir” se
encuentran los botones para las 4 operaciones básicas. Cada uno tendrá un código muy simple como el
que se muestra a manera de ejemplo para botonSumar en la figura 1.15. LA única operación que tiene
una restricción especial es la de dividir, puesto que si B toma el valor de 0 no se puede realizar (división
indefinida). Para tener en cuenta esta situación es posible emplear la instrucción SI … DE LO CONTRARIO
… FIN SI, cuya traducción a VBA se presenta en la figura 1.16
Nótese en este código que si B es diferente de 0, la operación se realiza normalmente y el resultado se
imprime, mientras que en caso contrario (si B es cero) se mostraría un mensaje de información indicando
la situación.