Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Marzo del 2018)
1.625 visualizaciones desde el 11 de Marzo del 2018
267,4 KB
7 paginas
Aula Macedonia
Curso de Programación en VBA para Excel
Artículo realizado por
Iñaki Ecenarro.
Capítulo 1. Introducción y primeros pasos
Este curso va dirigido a aprender a programar en Visual Basic for Applications (VBA) para la hoja de cálculo
Microsoft Excel. El VBA es muy similar en el resto de herramientas de Microsoft Office (Word, PowerPoint, etc), por
lo que los conocimientos aquí adquiridos pueden aplicarse en esos otros programas. Además el VBA es también
muy similar al Visual Basic de verdad, por lo que puede ser una puerta de acceso a la programación de aplicaciones
(utilizando Visual Basic) para personas sin conocimientos previos de programación.
Desde los primeros tiempos de las hojas de cálculo, con las míticas primeras versiones de Lotus 123, existían
macros (el nombre completo era macrocomandos), que servían para automatizar tareas repetitivas. En aquellos
tiempos las macros se limitaban básicamente a simular pulsaciones del teclado el usuario, es decir, al ejecutar una
macro era como si el usuario estuviese pulsando las teclas que la macro "pulsaba", lo que a pesar de su sencillez
permitía hacer cosas interesantes. Con el tiempo las macros fueron evolucionando, pudiéndose incluir en ellas
sentencias que no se traducían en pulsaciones de teclas, aunque todo ello se hacía introduciendo fórmulas en las
celdas de la hoja de cálculo, lo que dejaba bastante que desear. Con la llegada de Excel 5.0, Microsoft introdujo las
macros basadas en el popular Visual Basic, creando lo que ha llamado Visual Basic for Applications, compartido por
todas las aplicaciones de Microsoft, y que añade a las mismas unas posibilidades enormes de personalización y
creación de soluciones a medida de las necesidades de cada usuario. De hecho, creo que el nombre "macro"
debería dejar de utilizarse en favor de otros conceptos más relacionados con los lenguajes de programación (como
rutinas, subrutinas y funciones), pero yo creo que se mantiene por razones históricas.
Lo primero que tuve que decidir antes de escribir este curso sobre programación en Excel fue hacia
quién iba a ir dirigido: por un lado están todas las personas que dominan uno o más lenguajes de
programación, y con poco esfuerzo pueden aprender los detalles específicos de Visual Basic for
Applications para Excel. Por otro lado están todas aquellas personas que utilizan Excel
simplemente como una hoja de cálculo que hace operaciones aritméticas, que desaprovechan toda
la potencia de Excel. He decidido que este curso va a ir dirigido a estos últimos, porque creo que
es el perfil del usuario habitual de Excel, y aquellas personas que estén en el primer grupo pueden también utilizar el
curso, deteniéndose en las partes que expliquen cosas específicas de Excel y saltándose otras como los conceptos
generales de programación.
Una nota sobre versiones de Excel: la última versión de Excel es la de Office 97 (llamada Excel 97), aunque todavía
existen muchos sitios en los que se utiliza la versión de Office 95 (Excel 95). Casi todo lo que vamos a hacer
funciona en las dos versiones, y en los casos en los que no sea así procuraré indicarlo.
El mejor método para aprender VBA es utilizar la opción de grabar macros de Excel: todo lo que hagamos mientras
Excel está grabando una macro se traduce en la instrucciones de VBA necesarias para repetir nuestras acciones.
Vamos a utilizar esa opción para crear nuestra primera macro. Primero selecciona la opción "Herramientas, Grabar
Macro", y escribe algo en la celda A1. Luego selecciona la opción "Herramientas, Grabar macro..., Detener
grabación" para que Excel debe de grabar. Para ver la macro que acabamos de crear el método es distinto en Excel
95 y Excel 97: en Excel 95, las macros se almacenan en módulos, que son como una hoja más del libro, podemos
ver una hoja llamada "Módulo1" en las pestañas que están en la parte inferior. En Excel 97, para escribir macros se
utiliza el Visual Basic Editor, y accedemos a él mediante la opción Herramientas, Macros, Abrir Editor Visual Basic.
En cualquiera de las dos versiones veremos que Excel ha escrito algo parecido a esto:
Sub Macro1()
ActiveCell.Formula = "Mi primera macro"
Range("A2").Select
End Sub
Esta rutina escribe "Mi primera macro" en la celda activa y luego se desplaza a la celda inferior, en este caso la
celda A2 (esto ocurre porque Excel tiene por defecto la opción de que cuando pulsas "Intro" el cursor se desplaza a
la celda de abajo, y Excel también ha incluido eso en la macro).
Vamos a ir poco a poco. La primera línea define una subrutina llamada Macro1 (es el nombre que le ha puesto Excel,
pero podemos cambiarlo a lo que nosotros queramos). Cada rutina que escribamos debe empezar con Sub y
terminar con una sentencia "End Sub".
Antes de explicar la segunda línea, una explicación sobre los "objetos": un objeto es una variable de VBA que
representa cualquier elemento de Excel. Por ejemplo, para representar un rango de una hoja de cálculo se utiliza el
objeto Range, o para representar una hoja de cálculo se utiliza el objeto Worksheet. En nuestra macro estamos
utilizando el objeto "ActiveCell", que es un objeto de tipo Range que siempre apunta a la celda activa.
Los objetos tienen "propiedades" y "métodos". Una propiedad es un atributo del objeto que define una
característica del mismo. Por ejemplo, la propiedad "Row" del objeto "ActiveCell" nos indica en qué fila de la hoja de
cálculo está la celda activa. Para acceder a una propiedad de un objeto se utiliza el nombre del objeto, un punto y el
nombre de la propiedad (p.ej. ActiveCell.Row). Unas propiedades muy utilizadas son las propiedades "Value" y
"Formula" que se aplican a todos los objetos Range. En nuestro ejemplo de macro, asignamos a la propiedad
"Formula" del objeto ActiveCell un texto, que es como si el usuario escribiera ese texto en esa celda.
Los "métodos" son acciones que se pueden llevar a cabo sobre un objeto, son rutinas que se aplican sobre el objeto.
Para llamar a un método se utiliza el nombre del objeto, un punto y el nombre del método. Por ejemplo, el método
"ActiveCell.ClearContents" borra el contenido de la celda activa (es decir, como si el usuario pulsa la tecla
"Suprimir").
Volvamos a nuestra primera macro. La segunda línea asigna un valor a la propiedad "Formula" del objeto ActiveCell.
En realidad no es una formula sino una cadena, pero da lo mismo. Fíjate en que en VBA siempre que escribamos
una cadena de carácteres hay que encerrarla entre comillas dobles ("), igual que en otros lenguajes. Si dentro de
una cadena queremos poner unas comillas dobles, sólo tenemos que escribirlas dos veces ("en esta cadena hay
unas comillas "" dobles")
La tercera línea llama al método Select del rango "A2" de la hoja activa. Fíjate en la forma de obtener el objeto que
representa a la celda "A2", utilizando Range("A2"). La última línea se encarga de indicar dónde termina la rutina. Por
cada Sub que escribamos obligatoriamente tenemos que escribir un "End Sub".
Ejecutar una subrutina
Para ejecutar una rutina hay varios métodos.
Con la opción "Herramientas, Macro..." Excel te lista todas las macros disponibles y puedes seleccionar la
que quieras y ejecutarla.
Asignar una macro a una nueva opción del menú de Herramientas.
Asignar una "tecla rápida" a la macro, que se ejecutará cada vez que pulsemos esa tecla.
Crear un botón y asignar a ese botón la rutina, de forma que ésta se ejecutará cada vez que pulsemos el
botón. Para crear un botón tenemos que mostrar la barra de herramientas de "Diálogo" (pulsa con el botón
derecho sobre cualquier barra de herramientas, y en el menú que aparece selecciona "Diálogo" y verás que
aparece la nueva barra de herramientas). En esa barra de herramientas hay un botón que sirve para colocar
botones (valga la redundancia) en nuestra hoja. Pulsa ese botón y crea el tuyo en cualquier parte de una hoja
de cálculo, con el tamaño que quieras. Luego pulsa sobre ese botón con el botón derecho y del menú
contextual selecciona la opción "Asignar macro". Verás una lista de macros disponibles, selecciona la que
acabamos de crear (Macro1). Ahora cada vez que pulsemos el botón se ejecutará la macro Macro1.
Mientras estamos editando una hoja de módulos, un método muy práctico de ejecutar las rutinas es situar el
cursor dentro de una rutina y pulsar el botón de "Ejecutar macro" de la barra de herramientas de Visual
Basic. Hay que tener cuidado con este método en Excel 95, porque en algunos casos puede dar errores: por
ejemplo, con este método nuestra primera macro no funciona porque "ActiveCell" no existe, ya que estamos
en una hoja de módulo, por lo que Excel nos dará un mensaje de error. En Excel 97 este problema no ocurre
porque no existen hojas de módulo, sino módulos dentro del Visual Basic Editor.
Podemos utilizar cualquiera de estos métodos (y otros que ya veremos) para ejecutar nuestra rutina, y
comprobaremos que cada vez que la ejecutamos escribe un texto en la celda activa y luego desplaza la selección a
la celda de abajo.
Utilizar funciones de VBA
Además de los objetos con sus métodos y propiedades Excel también tiene funciones. Para llamar a una función
simplemente hay que escribir su nombre y luego los parámetros necesarios. Por ejemplo, vamos a hacer una
pequeña macro que utilice la función MsgBox. Esta función sirve para presentar cuadros de diálogo con mensajes
para el usuario, aunque no tenemos muchas opciones para diseñar el diálogo, sólo se puede elegir el tipo de icono
entre varios predefinidos (interrogación, exclamación, etc.) y unas cuantas opciones sobre los b
Comentarios de: Curso de programación en VBA para Excel - Capítulo 1. Introducción y primeros pasos (0)
No hay comentarios