0% encontró este documento útil (0 votos)
201 vistas59 páginas

Excel y Macros

Macros allow users to automate tasks, create custom functions and commands, and build custom applications in Microsoft Excel. Macros are programs written in Visual Basic for Applications (VBA) that perform actions by manipulating Excel objects, properties, and methods. The document provides an introduction to macros and their uses and benefits, as well as an overview of objects, properties, methods, and how to access the VBA editor in Excel.

Cargado por

Esteban Rey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
201 vistas59 páginas

Excel y Macros

Macros allow users to automate tasks, create custom functions and commands, and build custom applications in Microsoft Excel. Macros are programs written in Visual Basic for Applications (VBA) that perform actions by manipulating Excel objects, properties, and methods. The document provides an introduction to macros and their uses and benefits, as well as an overview of objects, properties, methods, and how to access the VBA editor in Excel.

Cargado por

Esteban Rey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 59

Introducción a

Macros en
Microsoft Excel

1
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
2
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Excel y Macros
La Hoja de Cálculos Excel es una de las herramientas para el tratamiento de datos y su
análisis. Una de las mayores ventajas que posee es la flexibilidad que ofrece y la rapidez
con la que podemos construir plantillas y todo tipo de modelos, para diversos usos y
aplicaciones.

Una definición Simple

Macro: Es un conjunto de instrucciones de código (programado) que permiten


realizar una tarea determinada como así también expandir e incrementar las prestaciones
de Excel. Las macros se escriben en lenguaje de programación VBA (Visual Basic for
Applications). El Excel ya trae incorporado un editor de VBA por lo que las macros se
programan dentro del mismo programa Excel.

Utilidad de una Macro


Las macros nos permiten expandir e incrementar las prestaciones de la hoja Excel. Las 4
grandes "áreas" donde se aplican las macros son:

1. Automatización de procesos

Supongamos que todos los días debemos trabajar en nuestro libro Excel en el cual
debemos seleccionar un rango, centrarlo, cambiarle la fuente, poner la fuente en
cursiva, aplicarle negrita y finalmente aplicarle bordes a toda la selección. Estas 6
acciones las hacemos manualmente y no parecen muchas, ¿pero qué tal si hay que
hacer esto en repetidas ocasiones y todos los días? Una macro nos permite ejecutar los 6
pasos automáticamente, tan solo presionando un botón o una tecla. Las tareas ideales
para automatizar son aquellas que se hacen de forma repetida e involucran muchos
pasos, por ejemplo: imprimir informes, configurar la vista de la hoja, actualizar datos de
tablas dinámicas, etc.

2. Creación de funciones a medida

Las funciones y fórmulas Excel son quizás la esencia de la hoja de cálculos. Excel trae
incorporada unas 330 funciones estándar las cuales se pueden utilizar en forma aislada o
en forma combinada (anidadas). Sin embargo suele suceder que justo la función que
necesitamos no existe pero a través de las macros podemos programar funciones que
hagan exactamente lo que nosotros queremos. Y esas funciones se comportarán igual
que las de Excel (aparecerán en el menú de funciones en la categoría que nosotros
indiquemos, tendrán sus respectivos argumentos, etc.).

3. Creación de nuevos comandos, complementos y menús

Excel trae una gran cantidad de comandos y menús predefinidos que nos asisten para las
operaciones más habituales. Las macros nos permiten crear nuestros propios comandos
y menús personalizados, e incorporarlos al Excel. La utilidad de los mismos depende
tan solo de nuestras necesidades. Los complementos Excel también están creados con
macros. En el menú Herramientas > Complementos verá una lista de lo que tiene
instalado en su Excel. Su utilidad reside en agregar alguna funcionalidad extra.
3
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
4. Creación de aplicaciones a medida

Excel es utilizado en diversos campos y por una gran cantidad de usuarios. Las macros
le permitirán construir complejas y elegantes aplicaciones para cualquier uso que quiera
darle. Una aplicación Excel consiste en algo más que una simple plantilla con datos y
fórmulas. Una aplicación Excel es un verdadero programa de software con una serie de
características que lo hacen utilizable por cualquier usuario sin que el mismo tenga que
entender la lógica que hay por detrás.

Objetos, propiedades y métodos

Cuando hablamos de macros hablamos de Objetos, Propiedades y Métodos (OPM).


Estos son los 3 conceptos generales más importantes que debe conocer a la hora de
programar las macros.
Hay una manera muy práctica para comprender lo que son los Objetos, Propiedades y
Métodos (OPM).
Veamos un ejemplo sencillo de algunos OPM de Excel.
Objetos: prácticamente cada cosa que vea en Excel es un objeto. Ejemplos de objetos
son: un libro Excel, una hoja, un rango, una celda, un menú, un gráfico, una tabla
dinámica, un cuadro de diálogo, las etiquetas de hojas, las columnas, las filas, etc. Cada
parte de Excel es un objeto; Un objeto es algo que puede ver e identificar con un
nombre.
Propiedades: las propiedades son las características de los objetos. Por ejemplo, para el
objeto "celda" algunas de sus propiedades serían: alto, ancho, color, bloqueada o
desbloqueada, vacía, con un número o con una fórmula, etc. Por ejemplo para el objeto
"hoja" algunas de sus propiedades serían: visible u oculta, con o sin líneas de división,
con o sin barras de desplazamiento vertical y horizontal, etc.
Métodos: un método es una acción que podemos realizar sobre el objeto o una de sus
propiedades. Por ejemplo sobre el objeto "hoja" podemos: activar, mover, copiar o
borrar.
Estas definiciones son suficientes para empezar a entender algunos conceptos.
Programar una macro se trata de: conocer el nombre del objeto, conocer el nombre de
alguna propiedad del mismo que quiera modificar y también conocer el nombre de
algún método que desee aplicarle.

Lenguaje VBA
Recuerde que la programación de macros se hace a través del lenguaje VBA (Visual
Basic for Applications) desde el editor VBA que trae incorporado Excel. Este tipo de
programación también se conoce como "Programación Orientada a Objetos" (OOP,
Objects Oriented Programming). La Programación orientada a Objetos nos permite
trabajar sobre los objetos propios de Excel como así también crear nuestros propios
objetos.
Macros = VBA = OPM
El lenguaje VBA es muy fácil de entender y siempre gira en torno a seleccionar los
objetos, cambiar sus propiedades y/o ejecutarles distintos métodos. La única
particularidad es que el lenguaje VBA solo está en inglés.
Ejemplos de algunos objetos de Excel y su denominación en inglés, el idioma utilizado
por las macros:

4
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Ejemplos de Objetos VBA (Entre paréntesis su significado en español)
Cell (celda)
Range (rango)
Worksheet (hoja)
Workbook (libro)

Ejemplos de Propiedades VBA (Entre paréntesis su significado en español)


Value (valor)
Color (color)
Format (formato)

Ejemplos de Métodos VBA (Entre paréntesis su significado en español)


Copy (copiar)
Protect (proteger)
Delete (borrar)

Cómo comenzar
Antes de comenzar a programar macros es necesario que conozca la barra de
herramientas VBA y las distintas formas de acceder al editor de macros, que es la
herramienta donde escribirá el código de las mismas.

Barra de herramientas

La barra de herramientas de macros es considerablemente diferente entre Excel 2003 e


inferior y Excel 2007.

Excel 2003 o inferior:

Excel posee una Barra de Herramientas de Macros o VBA. Puede acceder a la misma
desde el menú Herramientas > Macros.

También tiene la opción de dejar siempre visible dicha barra de herramientas. Puede
hacer esto desde el menú Ver > Barras de Herramientas > Visual Basic. Vera como
aparece una nueva barra de herramientas de macros y además puede ubicar esta barra de
herramientas donde le sea más cómodo:

5
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Excel 2007:

Las opciones del menú de macros se encuentran en la ficha programador.

 Si no tiene visible la ficha Programador, puede activarla de la siguiente forma:


1. Presione el botón de Office (botón redondo en la parte superior izquierda de la
pantalla)
2. En la parte inferior del menú que se despliega, presione el botón Opciones de Excel.
3. En la lista de opciones Más Frecuentes, seleccione la casilla de Mostrar ficha
programador en la cinta de opciones.

Editor VBA

El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y
guardan las macros. Tiene 3 formas de acceder al editor:

Excel 2003 o inferior:

1. Desde el menú Herramientas > Macros > Editor de Visual Basic


2. Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic.
3. Desde el teclado (Teclas de Método Abreviado): ALT+F11

Excel 2007:

1. Desde la ficha Programador > botón Visual Basic


2. Desde el teclado (Teclas de Método Abreviado): ALT+F11
Una vez que haya accedido al editor de Visual Basic verá algo similar a la siguiente
Imagen.

6
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
El editor contiene 4 ventanas principales:

La Ventana Proyecto (parte izquierda superior)


La Ventana de Código (parte derecha)
La Ventana Propiedades (parte izquierda inferior)
La Ventana Inmediato (parte inferior derecha)

Ventana Proyecto - VBA Project: esta ventana muestra los libros Excel (xls) o los
complementos (xla) abiertos. Usualmente verá nombres del tipo "VBAProject" y entre
paréntesis el nombre del archivo o complemento Excel.

Ventana de Código: esta ventana es el lugar donde escribiremos el código de las


macros.

 Recuerde: presionando las teclas ALT+F11 puede ir desde Excel al Editor o


desde el Editor al Excel de forma alterna (debe mantener presionada la tecla
ALT y presionar F11 repetidas veces, vera como pasa de Excel al editor y
viceversa).

Si esta en el editor y quiere regresar a la hoja Excel también puede utilizar el ícono de
Excel que se encuentra en el menú superior del editor (primer ícono de la izquierda, con
la X de Excel)

7
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Escribir una macro

A la hora de crear una nueva macro existen 3 métodos:

1. Escribirla manualmente
2. Utilizar la grabadora de macros
3. Combinación de los 2 métodos anteriores
(Grabarla y luego retocarla manualmente)

Mi primera Macro

Objetivo de la macro:

 Escribir el valor 1.500 en la celda A1 de la hoja Excel.

Comenzara con una hoja Excel vacía y luego de ejecutar la macro vera que aparece el
valor 1.500 en la celda A1. El valor lo pondrá automáticamente la macro cuando se lo
indiquemos.

1. Escribir la macro manualmente


Los pasos son los siguientes:

1. Prepare el Editor de Visual Basic


1.1 Cree un nuevo libro Excel y guárdelo con el nombre Libro 1.
1.2 Abra el editor de Visual Basic con las teclas ALT+F11.
1.3 Doble clic en VBAProject (Libro1) para ver las carpetas.
1.4 Doble clic en Hoja1 (Hoja1) para empezar a escribir el código de la macro.

2. Escriba la macro
2.1 En la ventana de macros escriba textualmente el siguiente código:

' Esta macro escribe el valor 1500 en la celda A1


Sub MiPrimeraMacro()
Range("A1").Value=1500
End Sub
8
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
2.2 Si la macro está bien copiada vera que la primera línea queda en color verde y la
segunda y cuarta en azul. Estos colores los asigna automáticamente el editor. Así es
como debe visualizarlo:

 Si la ventana de su editor tiene una instrucción "Option Explicit" escrita en la


parte superior, puede dejarla.

Ejecutar la Macro

Excel 2003 o inferior:

Si ya tiene escrita la macro en el editor, ahora podrá ejecutarla, o sea hacer que
funcione. Tiene 2 formas de hacer esto:

A. Ejecutar la macro desde el mismo Editor


Si se posiciona en cualquiera de las líneas de código de la macro y luego presiona la
tecla F5 la macro se ejecutará (para ver el resultado puede volver a la hoja Excel con
ALT+F11).

B. Ejecutar la macro desde Excel


Otra forma de ejecutar la macro es desde el mismo Excel. Puede hacerlo desde el menú
Herramientas > Macros > Macro.

Se abrirá un cuadro que contiene una lista con los nombres de las macros creadas.
Seleccione MiPrimeraMacro y haga clic en Ejecutar.

9
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Si ha seguido uno de los 2 pasos anteriores ya podrá ver el resultado de la macro. ¿Qué
hizo la Macro? Si se fija en el Libro 1, Hoja 1, Celda A1 verá que se escribió el valor
1.500.

Excel 2007:

A. Ejecutar la macro desde el mismo Editor


Si se posiciona en cualquiera de las líneas de código de la macro y luego presiona la
tecla F5 la macro se ejecutará (para ver el resultado puede volver a la hoja Excel con
ALT+F11).

B. Ejecutar la macro desde Excel


Otra forma de ejecutar la macro es desde el mismo Excel. Esto se hace desde la ficha
Programador > Macros

Se abrirá un cuadro que contiene una lista con los nombres de las macros creadas.
Seleccione MiPrimeraMacro y haga clic en Ejecutar.

10
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Comprender la Macro
Recuerde que el propósito de nuestra primera macro fue escribir el valor 1500 en la
celda A1 de Excel. La macro ya fue escrita y ejecutada en los pasos anteriores. Ahora
vamos a analizar cada una de las líneas del código:

1º línea de código: el comentario

' Esta macro escribe el 1500 en la celda C10


Sub MiPrimeraMacro()
Range("A1").Value = 1500
End Sub
- La primera línea de una macro suele ser un comentario.
- Los comentarios se pueden poner en cualquier línea y cantidad.
- En la medida que las macros crecen los comentarios se vuelven muy útiles para su
propia referencia.
- Un comentario siempre comienza por un signo '. Si tipea dicho signo seguido de un
texto y luego presiona Enter, el editor detecta que es un comentario y lo pinta verde
automáticamente.
- Un comentario no tiene efectos sobre la macro, es solo para su referencia.

 Recuerde: los comentarios son muy útiles para comentar sus macros y siempre
deben comenzar con el signo '. Si ha puesto bien dicho signo al comienzo de la
línea, el editor detecta automáticamente que es un comentario y lo pinta de verde
luego de presionar Enter.

2º línea de Código: el nombre de la macro

' Esta macro escribe el 1500 en la celda C10


Sub MiPrimeraMacro()
Range("A1").Value = 1500
End Sub
- Aquí es donde comienza realmente la macro.
- Toda macro siempre comienza con la palabra Sub, luego un espacio, luego un nombre
(sin espacios intermedios) y finalmente los paréntesis ().
- Este nombre luego lo utilizaremos para ejecutar la macro.
- Luego de escribir esta línea y presionar Enter el Editor detectará que es el nombre de
la macro y pondrá la palabra Sub en color azul de forma automática.

11
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
 Recuerde: el nombre de la macro siempre comienza con la palabra Sub, luego un
espacio, luego el nombre que quiera ponerle a su macro (SIN espacios
intermedios) y finalmente los paréntesis.

3º línea de código: la instrucción de la macro

' Esta macro escribe el 1500 en la celda C10


Sub MiPrimeraMacro()
Range("A1").Value = 1500
End Sub
- Esta es la instrucción principal de nuestra macro. Con este código logra nuestro
objetivo (que la macro escriba el valor 1500 en la celda C10).
Range("A1").Value = 1500
Range("A1"): Es el objeto.
Value: Es la propiedad.
= 1500: Es el valor que le da a la propiedad.
- Esta línea de código se interpreta así: a la celda A10 de Excel asignarle el valor 1500.

 Recuerde: siempre debe hacer referencia a un objeto para luego asignarle


propiedades o métodos.

4º línea de código: el fin de la macro

' Esta macro escribe el 1500 en la celda C10


Sub MiPrimeraMacro()
Range("A1").Value = 1500
End Sub
- Una macro siempre termina con la instrucción End Sub.
- Luego de escribir esto y presionar Enter, el Editor entenderá que es el fin de la macro
y lo pondrá en color azul de forma automática.

 Recuerde: siempre debe finalizar su macro con la instrucción End Sub.

2. Utilizar la grabadora de macros

Va a grabar su primer macro. Es la misma macro que hizo, pero esta vez la hará con la
grabadora de macros.

Grabando la Macro
Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fácil
ya que escribe de forma automática el código VBA de la macro.

Los pasos son los siguientes:

12
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Excel 2003 o inferior

1. Vamos a grabar la macro


1.1 Seleccione el menú Herramientas > Macros
1.2 Seleccione la opción Grabar nueva macro.

1.3 Se abrirá un cuadro de diálogo como el que se muestra a continuación.

1.4 Donde dice Nombre de la macro escriba MiPrimeraMacro.


1.5 Presione Aceptar y la macro comenzará a grabar todo lo que haga.
1.6 Ubíquese en la celda A1 y escriba el valor 1500.

2. Barra para frenar la grabación

Cuando comienza a grabar la macro activa una nueva barra de macros. El botón
cuadrado de la izquierda le permite parar la grabación y finalizar la macro.

Otra forma de detener la grabación de la macro es desde el menú Herramientas >


Macros > Detener grabación.

13
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
3. Observemos como quedó la macro grabada
3.1 Acceda al editor de Visual Basic con ALT+F11.
3.2 Debe hacer clic en Módulo1 para visualizar el código de la nueva macro grabada:

 Podrá observar que el código que se grabó es distinto al código que había escrito
cuando hizo la macro manualmente.

4. Vamos a probar la macro


4.1 Vuelva a Excel con ALT+F11.
4.2 Verá que la celda A1 tiene el valor 1500 porque lo escribió mientras grababa la
macro.
4.3 Para ver como opera la macro borre dicho valor.
4.4 Abra el menú de macros desde el menú Herramientas > Macro > Macros
4.5 Seleccione MiPrimeraMacro (no se confunda con Hoja1.MiPrimeraMacro que es la
que hizo primero).
4.6 Presione Aceptar y verá como se escribe nuevamente el valor 1500 en la celda A1.

Excel 2007:

1. Vamos a grabar la macro


1.1 Seleccione la ficha Programador > Grabar macro

1.2 Se abrirá un cuadro de diálogo:

14
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
1.4 Donde dice Nombre de la macro escriba MiPrimeraMacro. Ese será el nombre que
le dará a su macro.
1.5 Presione Aceptar y la macro comenzará a grabar todo lo que haga.
1.6 Posiciónese en la celda A1 y escriba el valor 1500.

2. Detener la grabación
Para terminar de grabar, debemos presionar el botón de detener grabación

3. Veamos
como quedó la macro grabada
3.1 Acceda al editor de Visual Basic con ALT+F11.
3.2 Debe hacer clic en Módulo1 para visualizar el código de la nueva macro grabada:

 Podrá observar que el código que se grabó es distinto al código que había escrito
cuando hizo la macro manualmente.

4. Vamos a probar la macro


4.1 Vuelva a Excel con ALT+F11.
4.2 Verá que la celda A1 tiene el valor 1500 porque lo escribió mientras grababa la
macro.
15
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
4.3 Para ver como opera la macro borre dicho valor.
4.4 Abra el menú de macros presionando ALT+F8
4.5 Seleccione MiPrimeraMacro (no se confunda con Hoja1.MiPrimeraMacro que es la
que hizo primero).
4.6 Presione Aceptar y verá como se escribe nuevamente el valor 1500 en la celda A1.

Escrita Vs. Grabada


Las diferencias entre la macro escrita manualmente y la grabada automáticamente.
A. la primera vez la escribió manualmente.
B. la segunda vez la grabo directamente con la grabadora de macros.
Denominemos Macro Escrita a la primera y Macro Grabada a la segunda para
diferenciarlas. Aunque al ejecutarlas el resultado final fue el mismo, hay algunas
diferencias que hay que analizar:

Excel 2003:

MACRO ESCRITA MACRO GRABADA


1. Como la hicimos 1. Como la hicimos
1.1 Creamos un Libro Excel llamado 1.1 Utilizamos el mismo Libro1.xls
Libro1. 1.2 Encendimos la grabadora de macros
1.2 Abrimos el editor de macros con desde el menú Herramientas > Macro >
ALT+F11. Grabar nueva macro
1.3 En VBAProject (Libro1) hicimos 1.3 Nos posicionamos en la celda A1 de la
doble clic en Hoja1 (Hoja1) Hoja1 y escribimos el valor 1500.
1.4 Escribimos el código de la 1.4 Detuvimos la grabación de la macro
macro. desde el menú Herramientas > Macro >
Detener grabación.
2. El código de la macro 2. El código de la macro
El código que escribimos fue: 2.1 Con ALT+F11 accedemos al editor de
' Esta macro escribe el valor 1500 en macros.
la celda A1 2.2 El código que se grabó
Sub MiPrimeraMacro() automáticamente fue el siguiente:
Range("A1").Value=1500
End Sub Sub MiPrimeraMacro()
'
' MiPrimeraMacro Macro
' Esta macro escribe el valor 1500 en A1

Range("A1").Select
ActiveCell.FormulaR1C1 = "1500"
Range("A2").Select
End Sub
Recuerde: que este código quedó en
VBAProject (Libro1) > Módulo1
3. Ejecución de la macro 3. Ejecución de la macro
Posicionados sobre cualquier línea Para comprobar que funciona, primero
del código anterior presionamos F5. borramos el valor 1500 de la celda A1,
Luego con ALT+F11 volvimos a la Hoja1 (lo habíamos escrito para grabar la
hoja de Excel y comprobamos que en macro). Luego ejecutamos la macro desde
16
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
la celda A1 de la Hoja1 se escribió el el menú Herramientas > Macro > Macros.
valor 1500. Seleccionamos de la lista MiPrimeraMacro
y luego Aceptar. De esta forma se volvió a
escribir el valor 1500 en la celda A1 de la
Hoja1.

El porqué de estas diferencias:

Excel 2007:

MACRO ESCRITA MACRO GRABADA


1. Como la hicimos 1. Como la hicimos
1.1 Creamos un Libro Excel llamado 1.1 Utilizamos el mismo Libro1.xls
Libro1. 1.2 Encendimos la grabadora de macros
1.2 Abrimos el editor de macros con desde la ficha Programador > Grabar
ALT+F11. macro
1.3 En VBAProject (Libro1) hicimos 1.3 Nos posicionamos en la celda A1 de la
doble clic en Hoja1 (Hoja1) Hoja1 y escribimos el valor 1500.
1.4 Escribimos el código de la 1.4 Detuvimos la grabación desde la ficha
macro. Programador > Detener grabación
2. El código de la macro 2. El código de la macro
El código que escribimos fue: 2.1 Con ALT+F11 accedemos al editor de
' Esta macro escribe el valor 1500 en macros.
la celda A1 2.2 El código que se grabó
Sub MiPrimeraMacro() automáticamente fue el siguiente:
Range("A1").Value=1500
End Sub Sub MiPrimeraMacro()
'
' MiPrimeraMacro Macro
' Esta macro escribe el valor 1500 en A1

Range("A1").Select
ActiveCell.FormulaR1C1 = "1500"
Range("A2").Select
End Sub
Recuerde que este código quedó en
VBAProject (Libro1) > Módulo1
3. Ejecución de la macro 3. Ejecución de la macro
Posicionados sobre cualquier línea Para comprobar el funcionamiento,
del código anterior presionamos F5. primero borramos el valor 1500 de la celda
Luego con ALT+F11 volvimos a la A1, Hoja1 (lo habíamos escrito para grabar
hoja de Excel y comprobamos que en la macro). Luego ejecutamos la macro
la celda A1 de la Hoja1 se escribió el desde la ficha Programador > Macros.
valor 1500. Seleccionamos de la lista MiPrimeraMacro
y luego Aceptar. De esta forma se volvió a
escribir el valor 1500 en la celda A1 de la
Hoja1.

17
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Diferencias
Tanto la Macro Escrita como la Macro Grabada logran la misma función de escribir el
valor 1500 en la celda A1 de la Hoja1. Sin embargo, en los 3 puntos de la tabla de la
sección anterior verá que hay algunas diferencias. El análisis de las mismas nos
permitirá ver las ventajas y desventajas de escribir una macro de forma manual o de
grabarla con la grabadora de macros.

MACRO ESCRITA MACRO GRABADA


1. Como la hicimos 1. Como la hicimos
Desventaja: escribir una macro Ventaja: no es necesario conocer código
manualmente implica conocer los de programación. La grabadora lo escribe
objetos y propiedades de Excel. En automáticamente.
este caso teníamos que saber
previamente que existía un objeto
Range y una propiedad Value, y
también debíamos saber como era la
sintaxis de los mismos >
Range("A1").Value=1500.
2. El código de la macro 2. El código de la macro
Ventaja: nuestra macro escrita Desventaja: cuando utilizamos la
quedó con 1 sola instrucción grabadora, el código que se escribe
principal, la que indica poner el automáticamente suele ser excesivo.
valor 1500 en la celda A1. Recordemos el código que grabó la macro:

' Esta macro escribe el valor 1500 en Sub MiPrimeraMacro()


la celda A1 ' Esta macro escribe 1500 en A1
Sub MiPrimeraMacro() Range("A1").Select
Range("A1").Value=1500 ActiveCell.FormulaR1C1 = "1500"
End Sub Range("A2").Select
End Sub
La macro grabó nuestras acciones pero
utilizó 3 líneas de código (solo contamos
las que están entre Sub y End Sub). Vemos
que el código es más largo y que aparecen
nuevos objetos, propiedades y métodos. La
macro se interpreta así:
Primero seleccionar el rango A1. Luego en
la celda activa introducir una fórmula con
el valor 1500. Finalmente, como
presionamos Enter, se posiciona en la
celda siguiente, la A2.
El objetivo fue logrado, pero la macro
generó más código del necesario.

El método de la macro grabada parece el preferible, porque lo hace todo de forma


automática y evita tener que escribir un código. Sin embargo, hay muchas acciones que
la grabadora de macros no puede hacer.

18
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Conclusión

Los 2 métodos que tenemos para crear una macro:


1. El método de escribir manualmente la macro
2. El método de grabar la macro automáticamente.
En la primera tabla se mostró el proceso de elaborar cada una y en la segunda tabla se
mostraron las diferencias, con sus ventajas y desventajas.
A modo de conclusión podemos decir que la diferencia está en el código generado.
Aunque las macros grabadas son más sencillas porque no requiere conocer el código
necesario (objetos, propiedades y métodos) sin embargo la cantidad de código que
generan suelen ser más largas.
A pesar que el resultado final es el mismo, un código con más líneas siempre es menos
deseable que un código con menos líneas. Porque un código largo es más difícil de
controlar y de comprender y a la larga puede ser más propenso a que genere errores o
disminuya la velocidad de ejecución de la macro.

Macro escrita
Sub MiPrimeraMacro()
Range("A1").Value=1500
End Sub
Macro grabada
Sub MiPrimeraMacro()
Range("A1").Select
ActiveCell.FormulaR1C1 = "1500"
Range("A2").Select
End Sub
En la macro grabada verá un nuevo objeto, ActiveCell (celda activa) y una nueva
propiedad del mismo, FormulaR1C1 (fórmula de la celda).
Lo mejor es escribir las macros manualmente y utilizar la grabadora en aquellos casos
donde no tenemos ni idea sobre cuál es el código que necesitamos o como es el nombre
del objeto, propiedad o método.

Ejemplos de Macros

Macro 1

Escriba manualmente una nueva macro:

1. Cree un nuevo libro Excel y guárdelo con el nombre Libro1.


2. Acceda al Editor de Visual Basic con las teclas ALT+F11.
3. Inserte un nuevo Módulo desde el menú Insertar > Módulo.
4. Dentro del módulo escriba textualmente el siguiente código:

' Esta macro muestra un texto en una ventana emergente


Sub MostrarTexto()
Msgbox "Manual de Macros SoloExcel"
End Sub
19
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
5. Puede ejecutar esta macro rápidamente posicionándose en cualquiera de sus líneas de
código y luego presionando la tecla F5 para ver lo que sucede.
También puede ejecutarla volviendo a Excel con ALT+F11 y desde el menú
Herramientas > Macros > Macro, eligiendo de la lista la macro MostrarTexto y luego
Aceptar.
6. Esta macro utiliza la instrucción Msgbox que sirve para abrir una ventana con la
información que le indiquemos.

Macro 2
Escriba manualmente una nueva macro:

1. Puede utilizar el mismo Libro1 de la macro anterior.


2. Acceda al Editor de Visual Basic con las teclas ALT+F11.
3. Puede utilizar el mismo Módulo de la macro anterior.
4. Dentro del módulo escriba textualmente el siguiente código:

' Esta macro oculta las líneas de división de las celdas


Sub OcultarLineas()
ActiveWindow.DisplayGridlines = False
End Sub

5. Puede ejecutar esta macro rápidamente posicionándose en cualquiera de sus líneas de


código y luego presionando la tecla F5 para ver lo que sucede.

También puede ejecutarla volviendo a Excel con ALT+F11 y desde el menú


Herramientas > Macros > Macro, eligiendo de la lista la macro OcultarLineas y luego
Aceptar.

6. Verá que la macro elimina las líneas de división de las celdas de la hoja activa (algo
que también puede hacer desde Excel, menú Herramientas > Opciones > pestaña Ver >
casilla Líneas de división).
Esta macro utiliza el objeto ActiveWindow (ventana activa).
Luego le asigna la propiedad DisplayGridlines=False (mostrar líneas de división=falso)
Si quisiera volver a ver las líneas de división puede cambiar la propiedad False por
True:

ActiveWindow.DisplayGridlines = True

Macro 3
Escriba manualmente una nueva macro:

1. Puede utilizar el mismo Libro1 de la macro anterior.


2. Acceda al Editor de Visual Basic con las teclas ALT+F11.
3. Haga doble clic en Hoja1 (Hoja1)
4. Escribe textualmente el siguiente código:

20
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
' Esta macro copia un rango a la celda activa
Sub CopiaRango()
Range("A1:A5").Copy Destination:=ActiveCell
End Sub

5. Para probar esta macro vuelva a Excel con ALT+F11 y escriba algunos números o
palabras en el rango A1:A5. Por ejemplo:

5.1 Ubíquese en la celda C1


5.2 Desde el menú Herramientas > Macros > Macro, elija de la lista la macro
CopiaRango y luego Aceptar.
5.3 El resultado será que el rango A1:A5 se copiará a partir de la celda C1 que era la
celda activa al ejecutar la macro.

6. Esta macro utiliza algunas OPM (objetos, propiedades y métodos) nuevos:


Range("A1:A5")
El objeto Range.
Copy
Este es un método (una acción)
Destination:=ActiveCell
Este es otro objeto. Destination se suele utilizar luego de un Copy y ActiveCell hace
referencia a la celda activa.

El editor de Macros

Es importante reconocer bien las principales opciones y secciones que tiene el editor de
macros (también conocido como editor de Visual Basic), dado que será la herramienta
que utilizara para escribir las macros.

Como Acceder
El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y
guardan las macros. Tiene 3 formas de acceder al editor:

 La forma más rápida de acceder al editor es presionando ALT+F11

21
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
También tiene otras formas de acceder:
Excel 2003 o inferior: desde el menú Herramientas > Macros > Editor de Visual Basic
Excel 2007: desde la ficha Programador > Visual Basic

Aparecerá la siguiente imagen:

Las principales ventanas de editor son:


Proyecto (arriba a la izquierda)
Propiedades (abajo a la izquierda)
Inmediato (arriba a la derecha)
Código (abajo a la derecha)
No importa si no ve todas las ventanas (se pueden mostrar u ocultar desde el menú
"Ver").

Ventana Proyecto
Esta ventana puede activarla desde el menú Ver > Explorador de proyectos, dentro del
editor de Visual Basic.
En la ventana de Proyecto hay carpetas donde se guardarán y escribirán las macros.
Presione el botón Alternar Carpetas para que se ordenen mejor los elementos, como se
ve a continuación:

22
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Proyectos
En un primer nivel tenemos los proyectos. Por regla general, cada libro Excel tiene
asociado un proyecto. Por ejemplo, si crea un nuevo libro Excel desde el menú de Excel
Archivo > Nuevo y vuelve al editor de macros (ALT+F11), verá que aparece el
proyecto VBAProject (Libro1). Dentro del paréntesis aparece el nombre de su libro
Excel y lo de VBAProject podrá cambiarlo luego.
En resumen VBAProject (Libro1) es la carpeta principal, asociada a un libro Excel
determinado, donde insertaremos todo lo referido a las macros para dicho libro.
Carpetas
En un segundo nivel tenemos 3 carpetas:
1. Microsoft Excel Objetos.
2. Formularios.
3. Módulos.

1. Microsoft Excel Objetos


1.1 ThisWorkbook siempre está presente. Si escribe una macro aquí la misma afectará a
todo el libro.
1.2 Hoja1(Hoja1) hace referencia las hojas de Excel (habrá 1 por cada hoja de nuestro
libro). Si escribe una macro aquí la misma solo afectará a la hoja en cuestión.

2. Formularios
Los formularios son más conocidos como UserForms. Si no lo visualiza puede
agregarlos desde el menú Insertar > Userform.
2.1 Dentro de la carpeta de Formularios hay un elemento llamado Userform1.

3. Módulos
Los módulos sirven para escribir macros a nivel genérico, sin estar relacionadas a la
hoja o libro en particular. Si no visualiza ninguno puede agregarlos desde el menú
Insertar > Módulo.
3.1 Dentro de la carpeta de Módulos hay un elemento llamado Módulo1. Podrá insertar
tantos módulos como necesite. En los módulos podrá escribir macros que operan de
forma genérica, sin distinguir entre hojas o libros.
Haciendo doble clic izquierdo en cualquiera de estos objetos verá que se habilita la
Ventana de Código de la izquierda (una hoja en blanco grande). En la misma es donde
se escriben las macros.
Recuerde: antes de escribir una macro debe evaluar donde hacerlo.
1. Si es una macro que solo debe afectar una hoja en particular escríbala en los objetos
de Hoja, en el nombre de Hoja correspondiente.
2. Si la macro debe afectar a todo un libro en particular escríbala en el objeto
ThisWorkbook. Estas suelen ser macros que se ejecutan al abrir, cerrar o guardar el
libro.
3. Si la macro es de tipo genérica escríbala en un Módulo.
4. Si quiere hacer un formulario utilice el objeto Userform.

Ventana Propiedades
Esta ventana se ubica en la parte inferior izquierda de la pantalla. Si no la puede
visualizar puede activarla desde el menú Ver > Ventana propiedades.

23
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Cada objeto tiene sus propiedades. Por ejemplo, si hace doble clic en el objeto
Módulo1, podrá ver sus propiedades:

Algunos objetos tienen muchas propiedades (por ej. los Userforms) así que tiene la
opción de ordenar los mismos de forma alfabética o por categoría. El objeto Módulo1
solo tiene la propiedad (Name) Módulo1. Si quisiera podría reemplazar el nombre de
Módulo1 y asignar otro nombre a gusto.

 Consejo: en la medida que va insertando muchas macros en su proyecto,


conviene ir creando nuevos módulos con nombres apropiados para mantener
ordenadas sus macros.

Ventana Código
Cada vez que haga doble clic izquierdo en algún Objeto de la Ventana Proyecto se
activará a la derecha la Ventana de Código. Si no la puede visualizar puede activarla
posicionándose en el Objeto y luego desde el menú Ver > Código.
Si todavía no ha escrito ninguna macro verá la ventana de código en blanco. En nuestro
ejemplo hemos escrito 3 macros:

Esta ventana no tiene mayores complicaciones. Lo que interesa es más bien el código
que escriba aquí. Puede escribir todas las macros que quiera en esta ventana. Recuerde
que el mismo editor asignará automáticamente los colores al código y además separará
con una línea continúa cada macro.
24
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
En la medida que empecemos a escribir muchas macros, existe una forma rápida de
movernos entre ellas. Desde la lista desplegable de la parte superior derecha podrá ver
la lista de macros escritas. Haciendo clic en cualquiera de ellas el editor nos posicionará
rápidamente en la misma.

Ventana Inmediato
Si no la puede visualizar puede activarla desde el menú Ver > Ventana Inmediato.

La ventana inmediato sirve para escribir, ejecutar y probar un código macro


rápidamente, sin tener que armar toda la macro. Por ejemplo, si quisiera averiguar la
cantidad de hojas que tiene un Libro podría escribir la siguiente macro en un módulo y
ejecutarla:
Sub ContarHojas()
Dim N As Long
N= thisworkbook.Sheets.Count
Msgbox N
End Sub
De momento no importa los objetos, propiedades o métodos que utilizamos.
Supongamos que solo nos interesa saber el número de hojas del libro, pero no queremos
armar toda la macro, solo nos interesa obtener el resultado. Entonces, en la ventana
inmediato podemos escribir:
?thisworkbook.Sheets.Count y al presionar Enter en la fila siguiente nos mostrará el
número de hojas que posee el libro. El signo ? al comienzo significa que estamos
buscando conocer el resultado de algo. El resultado final se vería así, suponiendo que el
libro tiene 1 hoja:

25
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Otro ejemplo: Si el libro fue guardado, podríamos querer averiguar el directorio donde
se encuentra. Podríamos desde la Ventana Inmediato, escribiendo ?thisworkbook.Path y
presionando Enter. Al presionar Enter, en la fila siguiente se mostrará la ruta del libro,
por lo que en la Ventana Inmediato vera algo así, suponiendo que el libro se encuentra
guardado en ese directorio:

En los 3 ejemplos anteriores buscábamos un resultado y anteponíamos el signo ? al


comienzo de la instrucción (buscábamos un nombre o un número). En otros casos
podemos ejecutar una acción directamente y por lo tanto escribimos la macro sin el
signo ?. Por ejemplo, si queremos que en la celda A1 aparezca el valor 100 lo podemos
ejecutar desde la Ventana Inmediato como se ve a continuación:

En la celda A1 de la Hoja activa de Excel aparecerá el valor 100.

 Recuerde: desde la Ventana Inmediato puede ejecutar macros de forma


inmediata, como su nombre lo indica. Pero dichas macros solo se ejecutan 1 vez
al presiona enter y no quedan disponibles en la lista de macros ni la puede
utilizar en sus desarrollos.

26
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Proteger el código

Así como se pueden proteger los libros, las hojas y las celdas de Excel, también es
posible proteger con una contraseña el código de nuestras macros. Una vez que tenga
sus macros escritas en el editor puede ir al menú Herramientas > Propiedades de
VBAProject... y luego hacer clic en la pestaña de Protección:

Para proteger sus macros siga estos pasos:


1. Tilde la casilla Bloquear proyecto para su visualización
2. Escriba una Contraseña
3. Vuelva e escribir su contraseña en Confirmar contraseña
De esta forma, cuando alguien acceda al editor, verá la ventana proyecto del libro pero
no podrá ver los objetos donde quedan escritas las macros (módulos, hojas y userforms).
Si hace doble clic en el Proyecto aparecerá una ventana solicitando la clave.

Ejecución de Macro
Dependiendo del caso le interesará ejecutar la macro desde un menú, desde un botón o
incluso ejecutarla automáticamente cuando ocurran determinados eventos, como ser al
abrir, cerrar o guardar el libro, activar o desactivar una hoja, etc.

Desde el código
La forma más rápida de ejecutar una macro es desde el mismo código. Cuando termina
de escribir una macro puede posicionarse en cualquiera de sus líneas de código y
presionar la tecla F5. Recuerde que puede acceder al código de las macros desde el
editor de macros, con las teclas ALT+F11.

27
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Desde el Menú

Otra forma de ejecutar una macro es desde el menú de macros, que lo puede visualizar
presionando ALT+F8
Verá que se abre un cuadro como el siguiente:

Para ejecutar la macro:


1. Elija el Nombre de la macro de la lista
2. Clic en Ejecutar
En la parte inferior figura una lista desplegable donde puede elegir si quiere listar las
macros de Todos los libros abiertos, solo las de Este libro o las de PERSONAL.XLS.
PERSONAL.XLS es un libro Excel que se abre automáticamente cada vez que abre
Excel. Este libro permanece oculto desde Excel, pero es posible verlo desde el editor de
macros. Todas las macros que escriba en PERSONAL.XLS siempre estarán disponibles
cada vez que habrá sus libros Excel. Es una opción muy útil por si tiene macros que
quiere utilizar en todos sus libros Excel (solo estarán disponibles en su PC).

28
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Desde el Teclado

Otra forma muy práctica de ejecutar una macro es desde el teclado. Esto también se
conoce como teclas de método abreviado. Para configurar las teclas con las cuales
ejecutar debe hacer lo siguiente:
1. Ir al menú de macros presionando ALT+F8
2. Elegir el nombre de la macro de la lista y luego hacer clic en el botón Opciones.

3. Donde dice Tecla de método abreviado presione la tecla MAYUSC y luego una letra.
La macro se ejecutará con Ctrl+Mayúsc+Q

 Recuerde: la macro siempre se ejecuta con la tecla Ctrl+ la letra que usted
escriba en la casilla. Sin embargo, hay muchas combinaciones de Ctrl+Letra que
ya están ocupadas por Excel (Ctrl+C copiar, Ctrl+V pegar, Ctrl+X pegar, etc.)
No se aconseja que utilice dichas combinaciones. Por eso lo que se hace es
presionar Mayúsc antes de la letra de tal forma que la macro se ejecutará con
Ctrl+Mayús+Letra y de esta forma no alterar las teclas de método abreviado por
defecto de Excel.

29
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Desde Objetos

Muchas veces, y sobre todo cuando desarrolle aplicaciones en Excel, le interesará


asignar macros a objetos gráficos insertados en la hoja. Excel posee una gran cantidad
de figuras y dibujos que puede insertar en la hoja.

Excel 2003: desde el menú Ver > Barra de Herramientas > Dibujo. Esto muestra un
menú como el siguiente:

Excel 2007: desde la ficha Insertar > Formas. Esto muestra un menú como el siguiente:

Si ya ha insertado una figura en su hoja Excel, podrá asociarle una macro siguiendo
estos pasos:

1. Haga clic izquierdo en la figura para desplegar su menú de opciones.


2. Elija la opción Asignar macro

30
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
3. Al elegir la opción de Asignar macro abrirá el menú de macros. Seleccione de la lista
la macro de su interés luego Aceptar.

4. Finalmente la figura quedará con la macro asignada, de tal forma que cada vez que
haga un clic encima de la figura, se ejecutará la macro.

Desde Botones (sólo para Excel 2000 a 2003)


También es posible crear nuevos botones para la barra de herramientas de Excel y
asignarle macros a los mismos. Para hacerlo siga estos pasos:

1. Ir al menú Ver> Barra de herramientas > Personalizar.


1.1 Desde la pestaña Comandos, en la lista de Categorías, elija la opción Macros.
1.2 A la derecha aparecerá una opción de Personalizar botón sobre la cual debe hacer
clic izquierdo y luego arrastrar y soltar ese botón a la barra de botones de Excel.

31
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
2. Es importante que mantenga abierto el cuadro de Personalizar, porque si no podrá
editar el botón. Si hacemos clic izquierdo sobre el botón se desplegará el menú de
opciones. Las opciones más importantes son las de Cambiar imagen del botón y la de
Asignar macro. Esta última opción nos permitirá abrir el cuadro de diálogo con la lista
de macros creadas para asignarle una macro determinada.

Automáticamente
Las macros también se pueden ejecutar automáticamente. Por ejemplo, se pueden hacer
macros que se ejecuten cada cierto tiempo o que se ejecuten solas cada vez que el
usuario hace algo como abrir, cerrar, guardar un libro, activar o desactivar una hoja,
etc.
32
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Macros de Eventos

En este caso se las denomina macros de evento, porque ante un determinado evento o
acción realizada por el usuario, la macro se ejecuta automáticamente.

Eventos de Libros
Los eventos de libros permiten disparar automáticamente una macro cuando suceden
determinadas acciones a nivel del libro Excel en cuestión, por ejemplo al abrirlo,
guardarlo, cerrarlo, imprimirlo, etc.

Instrucciones para insertar una macro de evento a nivel libro:

1. Las macros de eventos se deben escribir en la carpeta ThisWorkbook del editor


de macros.

2. Luego en la primera lista desplegable de la ventana de macros elija la opción


Workbook.

3. Finalmente, en la lista desplegable de la derecha vera todos los eventos de libro que
puede utilizar para disparar su macro.

33
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
4. Por ejemplo, si hace clic en la opción Activate, verá que en la ventana de macros se
escribe automáticamente el siguiente código:

Private Sub Workbook_Activate()

End Sub

Al seleccionar una macro de vento el editor escribe automáticamente la primera y


última línea de su código (no debe modificar esto). Luego podrá escribir su código
macro entre esas líneas. En este caso, la macro que escriba se ejecutará cada vez que
active el libro Excel en cuestión. Por ejemplo, puede hacer una macro que muestre un
mensaje de saludo cada vez que abra el libro:

Entonces, cada vez que abra el libro, la macro se ejecutará automáticamente y verá el
saludo:

En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa
que esa macro no la podrá ver en la lista del menú de macros. Esto es así porque la
macro no se puede ejecutar manualmente, si no que se ejecuta automáticamente cuando
ocurre el evento, en este caso cuando se activa el libro Excel en cuestión.
Existen más de 20 macros de evento a nivel libro. Las más importantes son:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' El código que escriba aquí se ejecutará automáticamente al cerrar el libro
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
' El código que escriba aquí se ejecutará automáticamente al imprimir el libro
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' El código que escriba aquí se ejecutará automáticamente al guardar el libro
End Sub
Private Sub Workbook_Open()
'El código que escriba aquí se ejecutará automáticamente al abrir el libro
End Sub

34
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Eventos de Hojas

Los eventos de hojas permiten disparar automáticamente una macro cuando suceden
determinadas acciones a nivel de hojas Excel, por ejemplo al activarla, desactivarla,
calcularla, etc.
Instrucciones para insertar una macro de evento a nivel hoja:
1. Las macros de eventos se deben escribir en la carpeta Hoja1 (Nombre) del editor de
macros. Fíjese que Hoja1 identifica el número de hoja de Excel y (Nombre) será el
nombre que tenga asignado dicha hoja en Excel. Por ejemplo, si en su Excel la primera
hoja se llama "Gastos", en el editor vera Hoja1 (Gastos).
En este caso tenemos Hoja1 (Hoja1). Al hacer doble clic en dicha carpeta, la macro que
escriba solo afectará a dicha hoja.

2. Luego en la primera lista desplegable de la ventana de macros elegimos la opción


Worksheet.

3. Finalmente, en la lista desplegable de la derecha vera todos los eventos de hoja que
podrá utilizar para disparar su macro automáticamente.

4. Por ejemplo, si hace clic en la opción Activate, verá que en la ventana de macros se
escribe el siguiente código:

Private Sub Worksheet_Activate()

End Sub
35
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Al seleccionar una macro de evento el editor escribe automáticamente la primera y
última línea de su código (no debe modificar esto). Luego podrá escribir su código
macro entre esas líneas. En este caso, la macro que escriba se ejecutará cada vez que
active la hoja Excel en cuestión. Por ejemplo, puede hacer una macro que muestre un
mensaje de saludo cada vez que active la hoja:

Entonces, cada vez que active la hoja, la macro se ejecutará automáticamente y verá el
saludo:

En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa
que esa macro no la podrá ver en la lista del menú de macros. Esto es así porque la
macro no se puede ejecutar manualmente, si no que se ejecuta automáticamente cuando
ocurre el evento, en este caso cuando se activa la hoja Excel en cuestión.
Existen unas 9 macros de evento a nivel hoja.

Las más importantes son:

Private Sub Worksheet_Activate()


' El código que escriba aquí se ejecutará automáticamente al activar la hoja
End Sub

Private Sub Worksheet_Calculate()


' El código que escriba aquí se ejecutará automáticamente al calcular la hoja
End Sub

Private Sub Worksheet_Deactivate()


' El código que escriba aquí se ejecutará automáticamente al desactivar la hoja
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


' El código que escriba aquí se ejecutará automáticamente al moverse entre las celdas
de la hoja (cada vez que seleccione y se posicione en una nueva celda)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

36
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
' El código que escriba aquí se ejecutará automáticamente al producirse un cambio en la
hoja (por ejemplo al introducir un dato en una celda, seleccionar una opción de una lista
desplegable, etc.)
End Sub

Formularios
Un Formulario (o su denominación en inglés Userform) se utiliza para crear un Cuadro
de Diálogo donde el usuario puede introducir información, o realizar otras operaciones.
Al ejecutar muchas de las opciones del menú de Excel se abren formularios. Por
ejemplo, desde el menú Herramientas > Opciones se abre un formulario como el
siguiente, donde se pueden activar o desactivar distintas opciones de Excel.

Este formulario es muy completo y posee pestañas en la parte superior, casillas de


selección (cuadraditos con tildes), casillas de opciones (círculos con un punto dentro) y
listas desplegables (lista con una flechita que despliega distintas opciones).
También puede crear su propio formulario como se ve a continuación.

37
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Los Userforms se utilizan mucho para crear aplicaciones Excel que luzcan de forma
profesional y permitan al usuario introducir datos o elegir opciones de una forma guiada
y más intuitiva.

Crear un Formulario
Para crear un Userform debe hacer lo siguiente:
1. Abra el editor de macros (por ejemplo, con CTRL+F11).
2. Inserte un objeto Userform. Esto podrá hacerlo fácilmente:
2.1 Seleccione el Libro Excel donde trabajara, en nuestro
caso VBAProject (Libro2).
2.2 Haga clic derecho en el mismo y elija la opción Insertar >
Userform
2.3 Como se ve en la fotografía, vera que aparece un objeto
Userform1 que cuelga de la carpeta Formularios

3. En la ventana de Código de la derecha, vera que aparece un Userform en blanco, sin


controles. Para abrir
su Cuadro de
Herramientas puede
hacerlo desde el
38
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
menú Ver > Cuadro de Herramientas. Ahí figuran los controles que podrá agregar
dentro del Userform. Para añadir uno, simplemente haga clic izquierdo en el control
deseado y luego clic izquierdo dentro del Userform, en el sitio donde quiera agregar el
control.

La idea es que mediante estos controles podrá tanto capturar como enviar información o
datos desde o hacia las celdas de Excel respectivamente. También podrá asociar macros
a los controles que agreguemos al Userform .

Si se posiciona sobre los Controles del Cuadro de herramientas, verá que aparece su
nombre. Simplemente haga clic izquierdo en el control deseado y luego clic izquierdo
en el Userform, en el sitio donde quiera agregar el control. En nuestro caso hemos
agregado algunos controles de forma desordenada dentro del Userform.

Controles del Formulario

Tenemos una serie de controles para agregar al


Userform, que los podrá visualizar desde el menú Ver
> Cuadro de Herramientas.

La utilidad de cada control se explican en el mismo orden que aparecen en el Cuadro de


Herramientas; en la figura anterior (de izquierda a derecha y de arriba hacia abajo).

39
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Seleccionar objetos: sirve para seleccionar controles que se hayan insertado en el
Userform.
Label (etiqueta): sirve para poner un título o un texto. Ejemplo: podemos poner un
texto del tipo "Complete las opciones a continuación" y ubicarlo en cualquier sitio del
Userform. También podemos agregar títulos o descripciones al resto de comandos que
se agregan en el Userform.
Textbox (cuadro de texto): sirve para que el usuario introduzca datos. Ejemplo: si
quiere que el usuario introduzca una fecha o un nombre.
ComboBox (cuadro combinado): sirve para que un usuario elija una opción de
una lista. Ejemplo: crea una lista con los meses de Enero a Diciembre para que el
usuario elija uno de ellos.
ListBox (cuadro de lista): sirve para que un usuario rellene o elija varias opciones
de una lista. Ejemplo: crea una lista con Regiones o Ciudades y el usuario deberá elegir
una o varias de ellas.
CheckBox (casilla de verificación): sirve para que un usuario active una
determinada función. Ejemplo: podrá hacer que al cerrar el Userform se imprima un
reporte solo si la casilla de selección está tildada.
OptionButton (botón de opción): sirve para que un usuario seleccione una opción
determinada entre varias posibilidades. Ejemplo: quiere que el usuario indique si es de
sexo Masculino o Femenino. De todas las opciones solo se puede seleccionar una de
ellas.
ToggleButton (botón de alternar): sirve para activar o desactivar alguna
funcionalidad. Este botón adopta el modo "Encendido" / "Apagado". Ejemplo: quiere
que el usuario defina su idioma, en modo encendido español y en modo apagado inglés.
Frame (marco): sirve para agrupar elementos de un Userform (los elementos se
deben ubicar dentro del Frame). Ejemplo: tiene varios grupos de OptionButton y para
distinguirlo lo agrupa con un Frame. Si tiene un grupo de opciones tipo
masculino/femenino los agrupa dentro de un frame. Si luego tiene otro grupo de
opciones del tipo Mayor de Edad / Menor de Edad lo agrupa dentro de otro Frame.
CommandButton (botón de comando): es un simple botón que le permite ejecutar
acciones. Ejemplo: un botón de Ayuda que ejecuta otro Userform con ayuda para el
usuario.
TabStrip (barra de tabulaciones): en un mismo Userform se pueden crear
distintas secciones. Ejemplo: un userform con cuatro secciones: Norte, Sur, Este y
Oeste. Dentro de cada sección podrá ubicar distintos controles.
MultiPage (página múltiple): en un mismo Userform se pueden crear distintas
páginas. Ejemplo: un userform con 2 páginas: España y Resto del Mundo. Dentro de
cada página podra ubicar distintos controles o distintas secciones.

ScrollBar (barra de desplazamiento): si tiene una lista con muchos elementos el


scrollbar le permite navegarlo. Ejemplo: tiene una lista con 150 países. Con el ScrollBar
podrá subir y bajar por la lista de los mismos utilizando las flechas de desplazamiento.
SpinButton (botón de número): permite aumentar o disminuir valores. Ejemplo:
tiene una lista con tipos de interés y quiere que sea incrementado o disminuido en
cantidades predeterminadas desde el SpinButton.

40
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Image (imagen): permite introducir imágenes en el Userform. Ejemplo: quiere
introducir una fotografía como fondo del Userform para darle un aspecto más
profesional.
RefEdit (referencia): permite hacer referencia a una celda de Excel. Ejemplo:
quiere que el usuario seleccione un dato que fue introducido previamente en una celda
Excel.

Haciendo doble clic en cada control se abrirá una ventana donde podrá escribir y
asociarle una macro.

Para ver como se verían estos controles dentro del Userform, vamos a crear un
Userform que contiene los 15 controles que se pueden agregar. Los hemos agregado en
el mismo orden en que aparecen en el Cuadro de Herramientas.

Ejemplos Paso a Paso


Antes de crear un Userform debe pensar bien cual será su objetivo y cuáles son los
controles que utilizara.
Objetivo: Crear un Userform para que un usuario complete unos datos personales
(Nombre, Edad y Fecha de Nacimiento). Luego que el usuario complete sus datos, al
apretar un botón, los mismos se visualizaran en una tabla de Excel.
Los controles que utilizaremos son:
Textbox: para que el usuario ingrese los datos.
Label: para darle el nombre a los Textbox.
CommandButton: para proceder con el ingreso de datos o cancelar.
1. Creamos la tabla en la hoja Excel
Primero debemos crear un nuevo libro que contenga una tabla Excel donde se volcarán
los datos del Userform. Para esto creamos un nuevo libro llamado Datos.xls y creamos
la siguiente tabla:

41
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
2. Creamos un Userform (UF)
Los UF se crean desde el editor de Visual Basic.
2.1 Abrimos el editor con ALT+F11
2.2 Seleccionamos Ver > Explorador de Proyectos para ver la lista de proyectos
disponibles (los mismos se verán en la parte izquierda de la ventana).
2.3 En la venta de Proyectos seleccionamos VBAProject(Datos.xls)
2.4 Desde el menú superior elegimos Insertar > Userform
2.5 Aparecerá un nuevo Userform vacío junto con el Cuadro de Herramientas (si el
mismo no aparece se puede abrir desde el menú Ver > Cuadro de Herramientas)

3. Nombramos el Userform
3.1 Abrimos las propiedades desde el menú Ver > Ventana Propiedades.
3.2 Hacemos doble clic en donde dice (Name) UserForm1, en la parte superior y
tipeamos DatosUF, luego Enter (este es el nombre con el que nos referiremos al
Userform desde las macros).

3.3 El nombre del Userform cambió en la Ventana de Proyecto, pero el Userform


mismo sigue mostrando "Userform1" en su barra de su título. Para cambiarlo vamos a la
Ventana Propiedades, hacemos doble clic en Caption, escribimos Datos Personales
(encima de Userform1) y luego Enter.

42
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
4. Agregamos un Cuadro de Texto.
Para permitir que el usuario ingrese datos en el Userform agregamos un control
TextBox, desde el Cuadro de Herramientas.
4.1 Hacemos clic en el control de TextBox y luego hacemos clic en el Userform, en la
parte donde queramos ubicarlo.

4.2 Con el nuevo TextBox seleccionado hacemos doble clic en la Ventana de


Propiedades, propiedad (Name), tipeamos la palabra UFNombre y luego enter (este es el
nombre que le asignamos al objeto para luego referirnos a él desde las macros).

4.3 Hacemos clic en una parte vacía del Userform, para volver a seleccionar todo el
Userform.

5. Agregamos un Texto
Para ayudar al usuario a ingresar sus datos, debemos indicarle que es lo que debe
introducir en el Cuadro de Texto del Paso anterior. Podemos agregar una etiqueta de
texto que describa la información que se debe introducir.
43
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
5.1 En el Cuadro de Herramientas hacemos clic en el botón Label o Etiqueta
5.2 En el Userform hacemos clic a la izquierda del TextBox, para agregar la Etiqueta de
texto.

5.3 Si fuera necesario podemos cambiar el tamaño de la etiqueta de texto o del Cuadro
de Texto para que no se superpongan. Se puede hacer clic en sus bordes (pequeños
cuadraditos) y arrastrar para cambiar su tamaño.
5.4. Seleccionamos la nueva etiqueta, hacemos doble clic en la propiedad Caption de la
ventana de propiedades, tipeamos Nombre y luego Enter.

5.5 Hacemos clic en alguna parte vacía del Userform para seleccionarlo y mostrar el
cuadro de herramientas.

6. Agregamos los Cuadros de Texto restantes


Agregamos los cuadros de texto y las etiquetas restantes (ya lo hicimos para el nombre
así que repetimos para Edad y Fecha de Nacimiento).

Repetimos los pasos 4 y 5 y agregamos:

* Un TextBox cuyo (Name) sea UFEdad, con una Etiqueta llamada "Edad"
* Un TextBox cuyo (Name) sea UFFecha, con una Etiqueta llamada "Fecha Nac."

Es muy importante que no olvide asignar bien los nombres (Name) a los Textbox, si no
la macro dará error. Puede revisar los pasos 4 y 5 para recordar como hacerlo.

Si los textbox no quedan alineados se pueden alinear de la siguiente forma:

44
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
1. Clic en el primer TextBox
2. Manteniendo pulsada la tecla MAYUS, seleccione los otros TextBox
3. Vamos al menú Formato > Alinear > Izquierda
4. Hacemos clic en alguna parte vacía del Userform para seleccionarlo y mostrar el
cuadro de herramientas.

7. Agregamos los Botones


Para permitir que el usuario ejecute una acción, se puede agregar un Botón de comando.
Nuestro Userform tendrá un botón para Agregar los datos a la tabla Excel y otro botón
para Cerrar el Userform.
7.1 En el Cuadro de Herramientas hacemos clic en Botón de comando.
7.2 En el Userform hacemos clic en la parte inferior izquierda para agregar el botón.
7.3 Con el nuevo botón seleccionado hacemos doble clic en la propiedad (Nombre) de
la Ventana de Propiedades, tipeamos UFAgregar y luego enter.
7.4 Con el nuevo botón seleccionado hacemos doble clic en su propiedad Caption en la
Ventana de Propiedades, tipeamos Agregar y luego enter.
7.5 Hacemos clic en alguna parte vacía del Userform para seleccionarlo y mostrar el
Cuadro de Herramientas.
7.6 Repetimos los pasos anteriores para agregar otro Botón de comando llamado
UFCerrar y nombre "Cerrar".
7.8 Si fuese necesario podemos reubicar los botones dentro del Userform.
Es muy importante que no olvide asignar bien los nombres (Name) a los Botones de
comando, si no la macro dará error.

8. Agregamos el código al botón Agregar


8.1 Seleccionamos nuestro botón de comando Agregar
8.2 Desde el menú superior elegimos la opción Ver > Código. Esto abrirá una ventana
donde podremos escribir código macro para dicho objeto.
8.3 Donde titila el cursor escribimos lo siguiente:

45
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Private Sub UFAgregar_Click()

Dim iFila As Long


Dim ws As Worksheet
Set ws = Worksheets(1)

'encuentra la siguiente fila vacía


iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

'Verifica que se ingrese un nombre


If Trim(Me.UFNombre.Value) = "" Then
Me.UFNombre.SetFocus
MsgBox "Debe ingresar un nombre"
Exit Sub
End If

'copy the data to the database


ws.Cells(iFila, 1).Value = Me.UFNombre.Value
ws.Cells(iFila, 2).Value = Me.UFEdad.Value
ws.Cells(iFila, 3).Value = Me.UFFecha.Value

'limpia el formulario
Me.UFNombre.Value = ""
Me.UFEdad.Value = ""
Me.UFFecha.Value = ""
Me.UFNombre.SetFocus

End Sub

8.4 En el menú superior elegimos Ver > Objeto para regresar al Userform.

9. Agregamos el código al botón Cerrar


9.1 Seleccionamos el botón de comando Cerrar
9.2 En el menú superior elegimos Ver > Código
9.3 Donde titila el cursor escribimos el siguiente código:

Private Sub UFCerrar_Click()


Unload Me
End Sub
9.4 En el menú superior elegimos Ver > Objeto para regresar al Userform.
10. Permitir al usuario cerrar el Userform con la tecla ESC
10.1 Seleccionamos el botón de comando Cerrar
10.2 En la Ventana Propiedades cambiamos la propiedad Cancel a True.
Probar el Userform
1. Hacemos clic en alguna parte vacía del Userform para seleccionarlo y mostrar el
cuadro de herramientas.
2. En el menú superior elegimos Ejecutar > Ejecutar Sub/Userform
3. Ahora podemos comenzar a completar el primer cuadro del Userform y escribimos un
nombre, por ej. Juan.
46
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
4. Presionamos la tecla TAB para movernos al siguiente cuadro de texto.
5. Cuando hemos completado todos los cuadros de texto, hacemos clic en el botón de
Agregar y los datos se completarán en la Tabla de Excel.
6. Podemos repetir los pasos anteriores e ir agregando distintos nombres con sus
respectivos datos.
7. Hacemos clic en Cerrar para volver al editor de macros.
La tecla TAB sirve para moverse entre los distintos controles de un Userform. Si al
presionar TAB el orden del movimiento no es el correcto, es posible cambiarlo:
1. Clic derecho en una parte vacía del USerform.
2. Elegimos Orden de Tabulación.
3. Seleccionamos el control de la lista y con los botones de Mover Arriba o Mover
Abajo ajustamos el orden.
4. Hacemos clic en OK
Asignar un botón para ejecutar el Userform
Podemos agregar un botón para que un usuario pueda ejecutar el Userform desde la hoja
Excel.
1. Activamos Excel, libro Datos.xls, Hoja 1
2. En la Barra de Dibujo, en el menú Ver > Barras de Herramientas > Dibujo hacemos
clic en una figura, por ejemplo el cuadrado, y lo insertamos en la hoja.
3. Seleccionamos dicha figura y con clic derecho en su borde elegimos Asignar Macro
4. Hacemos clic en el botón Nuevo
5. Donde titila el cursor escribimos: DatosUF.Show
6. Cada vez que hagamos clic en la figura se ejecutará el Userform.

Ejecutar Macro desde Macro


Muchas veces nos interesa ejecutar o llamar una macro desde otra macro. Esto es muy
útil porque si tenemos un desarrollo muy grande, para mantener ordenado el código
conviene dividir la tarea en distintas macros y luego vamos ejecutando la macro que se
necesite en cada momento.

Para llamar una macro desde otra macro simplemente se escribe el nombre de la macro
invocada dentro del código de la macro principal. Por ejemplo, si ejecutamos la Macro1
y queremos que desde la misma se ejecute la Macro2 lo haríamos así:

Sub Macro1()
'El código de mi Macro1
Macro2
End Sub

Si queremos identificar mejor que estamos llamando una macro desde otra macro
podemos anteponer la palabra Call. El efecto es el mismo, solo que al anteponer la
instrucción Call, la misma queda en azul automáticamente, y nos permite identificar
mejor que estamos llamando otra macro.

Sub Macro1()
'El código de mi Macro1
Call Macro2
End Sub

47
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Por ejemplo, tenemos una SuperMacro que realiza la siguiente función:

Sobre el rango seleccionado:


1. Asigna un formato numérico.
2. Asigna bordes.
3. Asigna color de relleno.

El código de la SuperMacro es el siguiente:

Sub SuperMacro()
'Asigna Formato Numérico
Selection.NumberFormat = "#,##0;[Red]#,##0"
'Asigna Bordes
With Selection.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'Asigna Color de Relleno
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub

Esta SuperMacro podríamos simplificarla de tal forma que ejecute 3 MiniMacros:

Sub SuperMacro()
Call FormatoN
Call Bordes
Call Relleno
End Sub

La palabra Call se puede omitir pero recomendamos utilizarla para identificar mejor que
estamos llamando otras macros. Como se vé en el código, la SuperMacro ejecuta 3
macros. Estas 3 macros deben estar ubicadas en el mismo módulo y las escribimos a
continuación:

Sub FormatoN()
'Asigna Formato Numérico
Selection.NumberFormat = "#,##0;[Red]#,##0"
End Sub

Sub Bordes()
'Asigna Bordes
With Selection.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub
48
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Sub Relleno()
'Asigna Color de Relleno
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

End Sub

Depuración y Errores

Es común que cuando ejecutamos una macro la misma tenga algún error. Los errores
pueden ser errores de tipeo o estructuras mal escritas. El editor de macros tiene un
autocontrol que permite corregir estos errores comunes.
Veamos algunos casos:
En este primer ejemplo utilizaremos una macro sencilla cuya única función es
seleccionar la celda A2. Si escribimos correctamente la macro, el editor asigna
automáticamente los colores azules, lo que significa que ha reconocido la estructura
Sub() - End Sub.
Ejemplo:
'Esta macro selecciona la celda A2
Sub Macro()
Range("A2").Select
End Sub

Si las instrucciones están bien escritas el editor convierte automáticamente las


mayúsculas y asigna los colores azules a las estructuras reconocidas y verde a los
comentarios.
Si cometiéramos un error al referirnos al objeto "Range" y por ejemplo olvidáramos
poner la comilla luego del 2, al dar enter a dicha línea aparecería un mensaje de error y
la línea se pintaría automáticamente de rojo.

Sub Macro()
Range("A2).Select
End Sub

Cuando sucede esto aparece un aviso que nos indica el error cometido. Si vemos que la
línea está roja es señal que debemos corregir algo (usualmente falta o sobra algún
carácter). En nuestro caso, hemos olvidado poner la comilla (el objeto Range siempre
requiere que la celda esté entre comillas y luego entre paréntesis).

Veamos otro error de tipeo. En ese caso escribimos erróneamente "Sab", en lugar de
"Sub". A pesar que no aparecerá ningún mensaje de error, vemos que el editor no ha
pintado de azul la palabra "Sab".

Sab Macro()
Range("A2").Select
End Sub

49
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Al intentar ejecutar esta macro no sucederá nada, porque no se ha respetado la
estructura de Sub() - End Sub con la que debe comenzar y finalizar una macro
respectivamente.

En otras ocasiones, la macro arrastra un error pero el mismo no aparece hasta ejecutarla.
Veamos el caso de la siguiente macro. Al escribirla no ha generado error y ninguna
línea se ha pintado de rojo. Sin embargo, al ejecutarla sí aparece un error.

Sub Macro()
If Range("a2").value = 2 Then
MsgBox "Mal"
End Sub

El error que aparece al ejecutarla es un aviso que indica:

"Error de compilación: Bloque If sin End If"

Al hacer clic en aceptar la macro queda en "Modo Interrupción", lo que significa que
todo queda en pausa y no se podrán ejecutar nuevas macros (el modo de interrupción se
identifica porque el nombre de la macro queda resaltado en amarillo). Lo que debemos
hacer en esta instancia es salir de modo interrupción desde el mismo editor, menú
Ejecutar > Reestablecer. Luego procedemos a corregir la macro. En este caso el mensaje
fue claro: la estructura estaba incompleta, nos faltó el End If.
Una vez que se ha interrumpido la macro, tenemos la opción de ejecutarla paso a paso
(o línea por línea) y así determinar en qué línea está el error. Esto lo puede hacer
posicionándose en la primera fila de la macro y luego presionar la tecla F8. De esta
forma se irá resaltando con amarillo y ejecutando cada fila, hasta que llegue a la que
produce el error. También puede hacerlo desde la opción del menú Depuración > Paso a
paso por instrucciones.

Complementos (Add Ins).


Una vez que tenemos nuestras macros, es posible unirlas bajo la forma de un
Complemento, también conocidos como Add-in, de tal forma que se pueden distribuir a
otros usuarios para que lo instalen y tengan acceso a las macros.
En general, estos complementos no son más que nuevas funcionalidades y opciones
para Excel, realizadas con macros.

Excel 2003 o inferior:

Para acceder a los complementos puede hacerlo desde el menú Herramientas >
Complementos de la hoja Excel, y verá un cuadro similar al que se muestra a
continuación:

50
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
A la izquierda se ve la lista de complementos disponibles siendo posible activarlos o
desactivarlos (seleccionando o deseleccionando la casilla a la izquierda de su nombre).
Cuando queremos instalar nuevos complementos debemos hacerlo con el botón
Examinar. Dicho botón nos permitirá buscar el directorio donde se encuentra el
complemento que deseamos instalar. La extensión de los archivos de complementos es
XLA.
La utilidad de un complemento es que podemos crear nuestras macros y luego
guardarlas como complemento. De esta forma, dichas macros estarán disponibles en
todas las hojas Excel que abramos, dado que el complemento se cargará
automáticamente (Excel carga automáticamente todos los complementos que estén
seleccionados al abrirse).

El proceso de creación de un complemento es sencillo:

1. Primero debe crear sus macros normalmente, desde el editor de macros


2. Luego debe guardar dicho archivo Excel desde el menú Archivo > Guardar como...
3. Se abrirá el Cuadro de diálogo de guardar y en la parte inferior hay una lista
desplegable llamada Guardar como tipo. En dicha lista debe elegir la opción
Complemento de Microsoft Excel, que suele ser la última de las opciones.

4. Deberá elegir un nombre para su complemento y guardarlo normalmente. Dicho


archivo se guardará automáticamente con la extensión XLA.
5. Para instalar el complemento debe hacerlo desde el menú Herramientas >
Complementos y luego la opción Examinar. Deberá buscar el directorio donde guardo el

51
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
archivo XLA y seleccionarlo. De este modo, cada vez que abra el Excel, el
complemento estará activo.

Excel 2007:

Para visualizar los complementos instalados, puede hacerlo desde la ficha


Complementos, y verá un cuadro similar al que se muestra a continuación (los
complementos visibles dependen de lo que tenga activado, en este caso solo tiene
activado un complemento llamado "ASAP Utilities").

Si quiere instalar nuevos complementos, deberá hacerlo desde el menú Office >
Opciones de Excel > Complementos. Con el botón Ir podrá abrir el cuadro de
complementos.

Y se abrirá el cuadro de complementos

52
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
A la izquierda se ve la lista de complementos disponibles siendo posible activarlos o
desactivarlos (seleccionando o deseleccionando la casilla a la izquierda de su nombre).
Cuando queremos instalar nuevos complementos debemos hacerlo con el botón
Examinar. Dicho botón nos permitirá buscar el directorio donde se encuentra el
complemento que deseamos instalar. La extensión de los archivos de complementos es
XLA.

La utilidad de un complemento es que podemos crear nuestras macros y luego


guardarlas como complemento. De esta forma, dichas macros estarán disponibles en
todas las hojas Excel que abramos, dado que el complemento se cargará
automáticamente (Excel carga automáticamente todos los complementos que estén
seleccionados al abrirse).

El proceso de creación de un complemento es sencillo:

1. Primero debe crear sus macros normalmente, desde el editor de macros


2. Luego debe guardar dicho archivo Excel desde el menú Archivo > Guardar como...
3. Se abrirá el Cuadro de diálogo de guardar y en la parte inferior hay una lista
desplegable llamada Guardar como tipo. En dicha lista debe elegir la opción
Complemento de Microsoft Excel, que suele ser la última de las opciones.

4. Deberá elegir un nombre para su complemento y guardarlo normalmente. Dicho


archivo se guardará automáticamente con la extensión XLA.
5. Para instalar el complemento debe hacerlo desde el menú Herramientas >
Complementos y luego la opción Examinar. Deberá buscar el directorio donde guardo el
53
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
archivo XLA y seleccionarlo. De este modo, cada vez que abra el Excel, el
complemento estará activo.

Seguridad de Macros
Las opciones de seguridad de macros han cambiado considerablemente en la nueva
versión Excel 2007

Excel 2003:

Excel posee 3 niveles de seguridad de


macros. Los mismos se pueden definir
desde el menú Herramientas > Opciones
> pestaña Seguridad > botón Seguridad
de macros. El cuadro de diálogo que se
abre se ve así:

Lo recomendable es tener el nivel de


seguridad en Medio. De esta forma cada
vez que abramos un archivo tendremos
la opción de habilitar o deshabilitar las
macros, mediante un mensaje
automático de aviso que aparece. Si el
archivo proviene de una fuente segura
las podremos habilitar sin problemas.

Excel 2007:

Esta versión de Excel posee


gran cantidad de novedades
respecto a temas de
seguridad. En primer lugar,
las opciones de niveles de
seguridad de macros las
encontramos en el menú
Office > Opciones de Excel
> Centro de confianza >
Configuración del Centro de
confianza tal cual se ve a
continuación:

Al presionar el botón de Configuración del Centro de confianza aparece una nueva


ventana en la cual debemos elegir de Configuración de macros (parte izquierda) y luego
seleccionar la opción Deshabilitar todas las macros con notificación. Esto hará que cada
vez que se abra un libro con macros, aparezca un mensaje notificando de las mismas y
dando la opción de habilitarlas o deshabilitarlas.

54
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
No mostrar el mensaje de "Habilitar Macros"
Otra opción muy interesante que ofrece Excel 2007 es la de generar "Carpetas de
confianza", de tal modo que para cualquier archivo que esté guardado en esas carpetas,
se habilitarán automáticamente las macros (nos evitaremos el molesto mensaje de
"Habilitar macros"). Para configurar esto vamos al Centro de Confianza, seleccionamos
Ubicaciones de confianza y luego indicamos una carpeta desde el botón de Agregar
nueva ubicación.

Firma Digital

Excel 2003:

Cuando se abre un libro


Excel que contiene
macros, aparece un
mensaje de aviso
indicando si se desean
habilitar o deshabilitar
las mismas.

Si quiere ejecutar las macros y que no vuelva a aparecer dicho mensaje, deberá crear
una Firma Digital.

Para crear una firma digital hay que ejecutar un archivo llamado Selfcert.exe.

55
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Al ejecutar Selfcert.exe se abre una pequeña ventana donde se pide el ingreso del texto
de la firma digital y luego aceptar.
Ahora lo que debemos hacer es asociar dicha firma a nuestro archivo xls con macros.
Para esto abrimos nuestro xls con macros, pasamos al editor de macros y elegimos las
opciones del menú Herramientas > Firma Digital. Luego hacemos click en el botón
Elegir, escogemos la firma creada, aceptamos y todo listo, macros firmadas.

Cuando abramos el xls con macros nuevamente, Excel indicará que posee macros
firmadas por XXXX (nombre de la persona que creo la firma). Si marcamos la casilla de
confiar de esta fuente, ya nunca más aparecerá el mensaje de macros al abrir dicho
archivo. Todos los xls que lleven esa firma se abrirán con sus macros habilitadas.

56
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Macros Privadas
Recuerde que puede visualizar las macros de su libro presionando ALT+F8. Verá que se
abre un cuadro como el siguiente:

En el mismo figuran los nombres de las macros creadas, así que solo tiene que
seleccionar la macro y luego hacer clic en el botón de Ejecutar.

Si desea ocultar las macros del libro en dicho cuadro puede hacerlo utilizando la
instrucción Private cuando escriba su macro. Debe utilizar dicha instrucción delante de
la palabra Sub. De este modo solo ocultará la macro en cuestión. Ejemplo:

Private Sub MiMacro()


'Esta macro no aparecerá en la lista de macros
'Código de su macro aquí
End Sub

Si tiene muchas macros en el módulo y quiere ocultarlas todas, en lugar de escribir la


palabra Private en cada una de ellas, puede colocar la siguiente instrucción al comienzo
de su módulo:

Option Private Module

De esta forma todas las macros de dicho módulo quedarán ocultas.

Acelerar el código

En la medida que la cantidad de código contenido en las macros se incrementa, es


posible que la velocidad de ejecución de las mismas disminuya. Sin embargo, existen
algunas recomendaciones para mantener las macros rápidas:

1. Evitar actualización de pantalla

57
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Cuando ejecutamos la macro, podemos ir viendo en la pantalla todo lo que sucede,
sobre todo en el caso de macros que activan o desactivan hojas, seleccionan rangos, etc.
Esto hace que la macro se ejecute un poco más lento. Si solo queremos ver el resultado
final y ganar velocidad, debemos utilizar la instrucción
Application.ScreenUpdating=False. En general se recomienda incluir siempre esta línea
al comienzo de cada macro, por ejemplo:

Sub SuperMacro()
Application.ScreenUpdating=False
'El código de la macro aquí
Application.ScreenUpdating=True
End Sub

Al final, volvemos a dejarla en True, que es como debe quedar por defecto.

2. Prevenir cálculos mientras se ejecuta el código

Si nuestra macro realiza cambios en distintas celdas, en cada cambio realizado se


recalculará la hoja. Si el libro tuviera muchas fórmulas y la macro cambiara muchas
celdas, esto haría que se ejecute muy lento, porque se estaría recalculando la hoja
repetidas veces. Lo recomendable es deshabilitar el cálculo, ejecutar la macro y luego
volver a activar el modo de cálculo automático. Por ejemplo:

Sub SuperMacro()
Application.Calculation = xlCalculationManual
'El código de la macro aquí
Application.Calculation = xlCalculationAutomatic
End Sub

3. Utilizar la instrucción With

Cuando tenemos que definir muchas propiedades de un único objeto, no es necesario


hacer mención al objeto cada vez, porque esto le quita velocidad de ejecución a la
macro. Para ganar velocidad y mantener el código más simple, conviene hacer mención
al objeto una única con la instrucción With y luego definir sus propiedades, por
ejemplo:

Sub CambiarFormatoRango()
With Range("A1")
.Value = 10
.Font.Bold = True
.Interior.ColorIndex = 5
End With
End Sub

4. Insertar fórmulas relativas

Si queremos insertar fórmulas en celdas mediante macros, existe una forma más rápido
de hacerlo que con Copiar y pegar.

58
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]
Por ejemplo:

Sub CopiarFormula()
Range("A1:A10").FormulaR1C1 = "=SUM(RC[1]:RC[5])"
End Sub

Para saber como obtener la fórmula podemos hacer lo siguiente:

4.1 Insertamos la fórmula en la celda


4.2 Vamos al menú Herramientas > Macros > Grabar nueva macro.
4.3 Desde la celda con la fórmula presionamos la tecla F2 y luego Enter.
4.4 Revisamos la macro grabada para obtener el código.

5. Evitar el uso de Copiar, Pegar y Seleccionar

Cuando se utiliza la grabadora de macros, es común que se genere más código del
necesario y esto hace que funcione un poco más lento. Las instrucciones que suelen ser
redundantes son Select, Selection.Copy y Paste. Supongamos que queremos copiar un
rango en otro rango. Si utilizamos la grabadora el código será el siguiente:

Sub CopiaRango()
Range("C10:C12").Select
Selection.Copy
Range("E10").Select
ActiveSheet.Paste
End Sub

Sin embargo hay una forma más directa donde evitamos el Select, el Selection y el
Paste:

Sub CopiaRango()
Range("C10:C12").Copy Range("E10")

End Sub

59
SoloExcel Tucumán 810 1º Subsuelo - Capital Federal - Tel 4393-9235
www.soloexcel.com.ar Email [email protected]

También podría gustarte