Introducciรณn a
Visual Basic Applications Aprende a programar macros desde 0
Quique Arranz www.excelyvba.com
A mi mujer, que me aguanta cuando me pongo a programar y se me olvida todo lo que tengo alrededor. A mi padre, que me metió “el gusanillo” de la programación en Excel. A Vanesa, que me dio la oportunidad de usar VBA en el trabajo cuando todavía era un “niño”. A Ignacio “El Gurú”, que me animó mucho a seguir aprendiendo, aunque fuera trabajando a las 4 de la mañana.
ร ndice Introducciรณn 6 Trabajar con VBA 8 Hablar con Excel 14 Las variables 18 Las claves de la programaciรณn 28 Operaciones con celdas 44 Objeto Application 50 Objeto Workbook 54 Objeto Worksheet 58 Instrucciรณn Set 64 Eventos en VBA 66 Crear funciones 74
Introducción a Visual Basic Applications
InTROdUCCIÓn ¡Enhorabuena! La compra de este libro te va a abrir “nuevos horizontes” en tú día a día con Excel. Pero antes de nada tienes que saber que trabajar con Visual Basic Applications (VBA) puede parecer muy difícil al principio pero después de un pequeño tiempo se convertirá en algo mágico. Durante este tiempo de aprendizaje vas a pasar por tres etapas que son consecutivas y que de ti depende que se conviertan rápidamente en la última:
Una pequeña y breve definición de estas etapas te ayudará durante las próximas semanas: • Emoción: al principio querrás aprender rápido y mucho. Estarás emocionado con cada nuevo descubrimiento. • Frustración: poco después te darás cuenta de que no es tan sencillo aprender a programar en VBA. Al principio, cuando empiezas a hacer tus propias macros, todo parece dificilísimo. Tardas un montón en hacer pequeñas tareas que manualmente harías más rápido. Estás todo el día buscando información en libros e Internet y es frustrante porque no entiendes casi nada y todo te parece chino. • Rápido aprendizaje: pero después de superar la frustración te darás cuenta de que ya has aprendido los fundamentos de VBA y que ya estás aprendiendo a hacer cosas más complejas sin problemas. Es un momento de gran satisfacción. Es aquí donde tienes que llegar cuanto antes.
Para aquellos que tienen formación en programación será mucho más rápido llegar a la etapa de “Rápido aprendizaje”. Para los que como yo, no tienen esa formación, os costará un poco más pero vuestro esfuerzo merecerá la pena.
Una pequeña anécdota Durante mi primer trabajo no me hicieron mucho caso y me mandaban pocas tareas. Algunas de ellas eran con Excel y eran tan aburridas que mentalmente me resistía a hacerlas. Como eran tan repetitivas pensé “¿y si diseño algo en Excel que lo haga automáticamente?”. Y me lancé a la tarea. Estuve varios días para hacer esta primera macro pero su resultado valió la pena y me permitió adentrarme en este increíble mundo. La satisfacción que obtienes cuando empiezas a programar es inmensa. Bueno, programar puede que no te satisfaga pero sí que lo hará ver que el fruto de tú esfuerzo es muy dulce. Que lo que acabas de programar, ya sea copiar unas celdas o una tarea mucho más compleja, funciona y lo hace exactamente como tú quieres. Pero recuerda que nada se obtiene sin sacrificio. Para llegar a aprender a usar VBA con un buen nivel vas a tener que dedicar un montón de ratos y luchar y luchar por encontrar la solución a los problemas que se te plantean. Deberás hacer ejercicios, ya sea los que incluye la ampliación de este libro u otros que busques por ahí. La única manera de aprender VBA es mediante la práctica así que ya sabes, remángate y a practicar. Pero no quiero hacerte esperar más. Creo que con esta breve introducción estás más que preparado para las semanas o meses que vienen. Mucha suerte y mucho ánimo en tú aprendizaje.
¿Pero cómo consigo un rápido aprendizaje? Si sigues este libro punto por punto estoy convencido de que en menos de lo que piensas vas a aprender a programar en VBA con un muy buen nivel. Trabaja duro durante los primeros capítulos y sigue los ejercicios propuestos. Sin esos ejercicios, por mucho que leas, no te servirá de nada este libro.
6
7
Introducción a Visual Basic Applications
TRABAJAR COn VBA
Añadir un nuevo módulo
El editor de VBA
Antes de nada, vamos a describir qué es un módulo. Un módulo en VBA es una especie de “carpeta” donde vamos a guardar los “trocitos de código” que necesitemos para componer nuestro programa en VBA.
El editor de VBA, también llamado VBE (Visual Basic Editor) es la pantalla donde, fundamentalmente, vamos a trabajar en los próximos días. Esta pantalla es donde podremos organizar nuestro código y donde nos dedicaremos a programar, probar, ejecutar y corregir los posibles errores.
Para añadir un nuevo módulo puedes hacerlo a través de la lista de Opciones de la barra superior seleccionando la opción “Insertar” y después “Módulo”. De esta manera, se creará un nuevo módulo en el libro que tengamos seleccionado
La ventana de VBA es la siguiente:
El módulo que hemos añadido aparecerá en la ventana de la izquierda tal y cómo vemos en la siguiente imagen con el nombre “Módulo 1”. • En la parte superior de la pantalla podemos ver la barra de opciones del editor de VBA. • En las barras que están por debajo veremos los diferentes accesos rápidos. • El recuadro de la izquierda es el listado de los diferentes Proyectos de VBA que tenemos abiertos: pueden ser Add-Ins (como los dos primeros que se ven) o un libro cualquiera como el siguiente. • En la parte de la derecha tendremos las propiedades de los objetos que tenemos seleccionados en el área de proyectos. En este caso, una hoja de Excel.
Al insertar un módulo automáticamente se habilita la pantalla central para poder escribir nuestro código.
• Finalmente, en la parte central tenemos el área de escritura donde podremos programar el código que necesitemos. Si no lo tienes exactamente así, no te preocupes. Es cuestión de que habilites estas opciones. Para ello ve a la opción “Ver” de la barra de opciones de la parte superior.
8
9
Introducción a Visual Basic Applications
Mi primera macro
Por ejemplo, si olvido poner la palabra “Sub” después de la palabra “End” al final de la macro aparecerá un mensaje como el siguiente cuando intento ejecutar una macro.
En el lenguaje de programación llamamos macro a un conjunto de líneas de código que nos permiten realizar ciertas tareas. Un ejemplo de macro sería el siguiente: Sub Primera_Macro() Código de la macro End Sub Donde, como podemos ver, hay varios elementos. Los diferentes elementos que vemos son: • Sub: Todas la macros empiezan por Sub. Bueno, no es exactamente así pero ya explicaremos cómo empiezan y por qué empiezan diferente. • nombre: Después de Sub escribimos el nombre de nuestra macro. Podemos escribir cualquier nombre pero no podremos usar espacios entre palabras ni caracteres especiales (/.,?...) y en general todo lo que se salga de letras, números y una barra baja ( _ ). • Paréntesis: Después del nombre insertaremos unos paréntesis (abierto y cerrado). Esto tienen su significado, no pienses que es una tontería. Pero lo veremos más adelante. • Código: Después escribimos el código de la macro. • End Sub: Finalmente debemos escribir End Sub para que VBA entienda que hemos terminado nuestra macro. Lo bueno y lo malo de la programación es que debemos escribir las cosas de la manera exacta y no vale si nos desviamos un poco. De ser así, al cometer pequeños errores, el sistema los detectará y nos animará a corregirlos. Y deberemos corregirlos porque si no lo hacemos el código no funcionará.
10
El programa ha detectado que la macro no está completamente escrita, en este caso falta escribir la palabra Sub al final de la macro. Como lo interpreta como un error nos da un mensaje y nos señala donde está el error para que podamos corregirlo.
Crear una macro Vamos a escribir la macro más sencilla del mundo para comenzar. Una macro que nos mandará un mensaje en pantalla. Para escribir tú macro puedes copiar este texto de aquí debajo: Sub Saludo() Msgbox "Hola amigo" End Sub Para ejecutarla debes hacer click sobre el botón de “Play” que hay en la ventana superior de VBE.
También puedes ejecutar una macro más rápidamente colocando el cursor dentro de la macro y después pulsando la tecla F5 de tú teclado. Te recomiendo que lo hagas con las dos la primera vez pero después acostúmbrate a usar el atajo del teclado F5.
11