SlideShare ist ein Scribd-Unternehmen logo
1 von 165
Downloaden Sie, um offline zu lesen
1º PARTE - Teoría y Programación de Macros 
(Nivel principiante - intermedio) 
Introducción 
Bienvenido al Manual de Macros de Exceluciones. Estás por comenzar una de las experiencias más fascinantes 
y atractivas de la Hoja de Cálculos Excel. 
Con las macros podrás sorprender y sorprenderte porque incrementarás las prestaciones y el potencial de Excel 
de forma ilimitada. El único límite que tendrás será tu imaginación. 
Excel y Macros 
La Hoja de Cálculos Excel es una de las herramientas más poderosas 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. 
Sin embargo, si realmente quieres "exprimir todo el jugo" a Excel, deberás conocer y utilizar una de sus mayores 
y más potentes herramientas: las macros. 
Si eres usuario principiante de la hoja Excel con este manual darás un salto cuántico y te convertirás 
rápidamente en todo un experto. Y si eres un usuario avanzado de Excel y ya tienes conocimientos previos de 
macros, este manual te servirá para refrescar algunos conceptos pero también te sorprenderás con nuevos 
códigos y secciones especiales que hemos preparado para ti. 
Una definición sencilla 
Una buena forma de introducirnos al mundo de las macros es con una definición sencilla y directa. 
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. 
Mucha gente le tiene un poco de miedo a la palabra "programación". Bueno, si ese es tu caso no debes 
preocuparte. Hace unos años nosotros mismos no teníamos la más mínima idea de programación Excel. Pero la 
buena noticia es que con un buen manual (confiamos en que este lo es!) podrás aprender y "tomar vuelo" 
rápidamente en el mundo de las macros. 
Verás que es fácil, divertido y que puedes expandir al infinito los límites de Excel
Utilidad de una macro 
Anteriormente definimos a las macros como algo que nos permite expandir e incrementar las prestaciones de la 
hoja Excel. ¿Cuáles serían algunos ejemplos de esto? Bueno, los ejemplos los iremos viendo en este manual, 
pero a grandes rasgos podemos comentar que las 4 grandes "áreas" donde se aplican las macros son: 
1. Automatización de tareas y procesos que involucran muchos pasos 
2. Creación de nuevas funciones a medida (aparte de las que ya posee Excel). 
3. Creación de nuevos comandos, complementos y menús. 
4. Creación de completas aplicaciones a medida. 
Como queda en claro, con las macros podemos automatizar y crear. Veamos un poco más en detalle estas 4 
áreas donde aplicaremos las macros. 
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 que 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... 
Creación de funciones a medida: las funciones y fórmulas Excel son quizás la esencia de la hoja de cálculos (si 
no se pudieran utilizar funciones y fórmulas no habría 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. Nuevamente, las macros vienen a nuestra salvación. 
Podemos programar funciones a medida 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.) 
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. Si ves en el menú 
Herramientas > Complementos verás una lista de los que tienes instalado en tu Excel. Los mismos suelen ser 
distribuidos de forma gratuita o también se compran. Su utilidad reside en agregar alguna funcionalidad extra al 
Excel. 
Creación de aplicaciones a medida: Excel es utilizado en diversos campos y por una gran cantidad de usuarios. 
Las macros te permitirán construir complejas y elegantes aplicaciones para cualquier uso que quieras darles. El 
límite solo es tu imaginación. 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 "Exceliana" que hay por 
detrás. 
Objetos, Propiedades y Métodos (OPM) 
Cuando hablamos de macros hablamos de Objetos, Propiedades y Métodos (OPM). Estos son los 3 conceptos 
generales más importantes que debes conocer a la hora de programar las macros. De momentos solo te 
daremos una sencilla definición y luego iremos profundizando más en ellos. 
Hay un ejemplo muy práctico para comprender lo que son los Objetos, Propiedades y Métodos (OPM). 
Supongamos que tenemos una canasta con frutas. ¿Cuales serían los OPM de la misma? 
Objetos: los objetos de la canasta de frutas serían las mismas frutas (manzanas, naranjas, peras…). 
Propiedades: las propiedades serían las características de las frutas (color, olor, sabor, textura…).
Métodos: finalmente los métodos son las acciones que podríamos ejercer sobre las frutas (comprarlas, 
venderlas, comerlas, almacenarlas, limpiarlas, quitarles la piel,…). 
Pasemos ahora a ver un sencillo ejemplo de algunos OPM de Excel. 
Objetos: prácticamente cada cosa que veas 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. En fin, cada partecita de Excel es un objeto. Un objeto es algo que puedes 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. 
De momento estas definiciones son suficientes para empezar a entender algunos conceptos. Recuérdalas bien 
porque las usaremos en todo el manual. 
En la medida que adquieras mayores conocimientos sobre como programar macros irás manejando y 
conociendo cada vez más objetos, con sus propiedades y sus métodos. En definitiva, de eso se trata programar 
una macro: conocer el nombre del objeto, conocer el nombre de alguna propiedad del mismo que quieras 
modificar y también conocer el nombre de algún método que desees aplicarle. 
Lenguaje VBA 
Recuerda 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. 
Esto se relaciona con lo que te comentábamos en la sección anterior sobre Objetos, Propiedades y Métodos. 
Hablar de macros, lenguaje VBA y OPM es lo mismo. 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. Sin embargo, y para que no te desalientes, conocemos 
muchísimos programadores de macros que prácticamente no saben inglés! Esto es así porque solo hay que 
conocer la palabra en inglés para cada objeto, propiedad y método. Veamos un sencillo ejemplo de algunos 
objetos de Excel y su denominación en inglés, el idioma utilizado por las macros: 
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)
En la medida que avances con la lectura de este manual te irás familiarizando con la denominación de los 
distintos objetos, propiedades y métodos. El lenguaje VBA tiene miles de OPM, y existe una forma muy práctica 
de conocerlos todos que es con la grabadora de macros, tema que trataremos más adelante. 
Aprender macros es mucho más fácil de lo que tu te imaginas. Es cierto que hay macros muy complicadas que 
requieren un conocimiento muy avanzado. Pero es un lenguaje fácil y muy intuitivo. Además Excel posee una 
grabadora de macros que las escribe de forma automática. Luego nosotros podemos retocarlas a gusto. Te 
aseguramos que en cuanto termines este manual estarás escribiendo tus propias macros y te sorprenderás lo 
fácil que es seguir aprendiendo y profundizando tus conocimientos. Nosotros te daremos las herramientas para 
que lo consigas! 
Como comenzar 
Antes de comenzar a programar macros es necesario que conozcas la barra de herramientas VBA y las distintas 
formas de acceder al editor de macros, que es la herramienta donde escribirás el código de las mismas. 
En las secciones siguientes te enseñaremos ambos conceptos. 
Barra de Herramientas VBA 
El primer paso para empezar a programar macros es familiarizarnos con las herramientas que nos ofrece Excel 
para programarlas. 
Excel posee una Barra de Herramientas de Macros o VBA. Puedes acceder a la misma desde el menú 
Herramientas > Macros. Dicho menú se ve como en la fotografía a continuación (fíjate que también se indican las 
combinaciones de teclas para acceder a dichas opciones). 
También tienes la opción de dejar siempre visible dicha barra de herramientas. Puedes hacer esto desde el 
menú Ver > Barras de Herramientas > Visual Basic. Verás como aparece una nueva barra de herramientas de 
macros. Puedes ubicar esta barra de herramientas donde te sea más cómodo. 
Editor VBA 
El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y guardan las macros. Tienes 3 
formas de acceder al editor: 
A. Desde el menú Herramientas > Macros > Editor de Visual Basic 
B. Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic. 
C. Desde el teclado (Teclas de Método Abreviado): ALT+F11 
(el acceso a la Barra de Herramientas de la opción 1 y 2 los explicamos en la sección anterior) 
Consejo: cualquiera de las 3 formas te abrirá el editor de visual basic (nuestra forma preferida es la número 3, 
dado que es más rápido presionar ALT + F11 que abrir los menús desde el ratón). 
Una vez que hayas accedido al editor de visual basic verás algo similar a la figura siguiente (no importa si no lo 
ves estrictamente similar, eso dependerá de las ventanas que tengas visibles y ocultas).
El editor contiene 3 ventanas principales: la Ventana Proyecto (parte izquierda superior), la Ventana de Código 
(parte derecha) y la Ventana Propiedades (parte izquierda inferior). 
La Ventana Proyecto - VBA Project: esta ventana muestra los libros Excel (xls) o los complementos (xla) 
abiertos. Usualmente verás nombres del tipo "VBAProject" y entre paréntesis el nombre del archivo o 
complemento Excel. Veamos el caso de VBAProject (Libro1). Simplemente significa que tienes abierto un libro 
Excel llamado Libro 1. Luego cuelgan 3 carpetas más: Hoja1 (Hoja1), ThisWorkbook y Modulo (no importa si ves 
todos estos elementos ahora, luego te enseñaremos como activarlos). Estas carpetas es donde habitan las 
macros. Haciendo doble clic en ellas activarás la ventana donde se escriben las macros. 
Ventana de Código: esta es el lugar donde escribiremos el código propiamente dicho de las macros. Como no 
hemos escrito ninguna macro todavía veremos la hoja en blanco. Recuerda bien estas dos ventanas, ya que las 
usaremos a continuación para escribir nuestra primera macro.
Como verás el Editor de VB tiene muchas ventanas. Pero de momento solo nos interesan las dos ventanas que 
te indicamos anteriormente: la Ventana Proyecto – VBA Project y la Ventana de Código donde se escribe el 
código de las macros. La Ventana de Propiedades la dejaremos para más adelante porque de momento no nos 
interesa. 
Recuerda: presionando las teclas ALT+F11 puedes ir desde Excel al Editor o desde el Editor al Excel de forma 
alterna (debes mantener presionada la tecla ALT y presionar F11 repetidas veces, verás como pasas de Excel al 
editor y viceversa). 
Si estás en el editor y quieres regresar a la hoja Excel también puedes utilizar el ícono de Excel que se encuentra 
en el menú superior del editor (primer ícono de la izquierda, con la X de Excel). 
Escribir una Macro 
A la hora de crear una nueva macro existen 3 métodos. 
A. Escribirla manualmente
B. Utilizar la grabadora de macros 
C. Combinación de los 2 métodos anteriores 
(Grabarla y luego retocarla manualmente) 
En cada situación utilizarás un método distinto. Por ejemplo, las macros muy sencillas las puedes escribir 
manualmente porque tienen pocas líneas y ya las conoces. En otros casos la podrás crear con la grabadora de 
macros y olvidarte del código VBA. Sin embargo, en la medida que progreses con las macros verás que el 
método más utilizado suele ser el número 3 mediante el cual primero grabarás y luego harás ajustes manuales 
en el código para hacerlo más eficiente y que se ejecute más rápido. 
En este capítulo vamos a ver como se escribe una macro manualmente (método 1) 
Mi primera Macro 
Vamos a escribir manualmente nuestra primera macro ahora!. Es una macro muy sencilla, pero te servirá para 
orientarte en el Editor de Visual Basic y reconocer los pasos requeridos para hacer una macro. 
Objetivo de nuestra macro 
Escribir el valor 1.500 en la celda A1 de la hoja Excel. 
¿que significa esto? Que comenzaremos con una hoja Excel vacía y luego de ejecutar la macro verás que 
aparece el valor 1.500 en la celda A1. El valor lo pondrá automáticamente la macro cuando nosotros se lo 
indiquemos. 
Suena demasiado simple, cierto? Sin embargo es suficiente como para comenzar y que aprendas generalidades 
que luego aplicarás en todas tus macros. Como es una macro sencilla vamos a escribirla manualmente para que 
comiences a empaparte del editor de macros y sus partes. 
Escribir la macro 
Bueno, es importante que recuerdes el objetivo: esta macro escribirá automáticamente el valor 1.500 en la celda 
A1 de tu hoja Excel. Los pasos que debes seguir son los siguientes: 
1. Prepara el Editor de Visual Basic 
1.1 Crea un nuevo libro Excel y guárdalo con el nombre Libro 1. 
1.2 Abre 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. Escribiros la macro 
2.1 En la ventana de macros escribe textualmente el siguiente código: 
' Esta macro escribe el valor 1500 en la celda A1 
Sub MiPrimeraMacro() 
Range("A1").Value=1500 
End Sub 
2.2 Si la macro está bien copiada verás que la primera línea queda en color verde y la segunda y cuarta en azul. 
Estos colores los asigna automáticamente el editor y te lo explicaremos más adelante. 
De momento no te preocupes por el código escrito. Más adelante te enseñaremos a interpretarlo. Ahora que ya 
tienes la macro escrita pasemos a la siguiente sección para ver como ejecutarla. 
Ejecutar la macro 
Si ya tienes escrita la macro en el editor, ahora podrás que ejecutarla, o sea hacer que funcione. Tienes 2 formas 
de hacer esto: 
A. Ejecutar la macro desde el mismo Editor: si te posicionas en cualquiera de las líneas de código de la macro y 
luego presionas la tecla F5 la macro se ejecutará (para ver el resultado puedes 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. Puedes volver a la 
hoja Excel con ALT+F11 e ir al menú Herramientas > Macros > Macro. Se abrirá un cuadro que contiene una lista 
con los nombres de las macros creadas. Selecciona MiPrimeraMacro y haz clic en Ejecutar. 
Si has seguido cualquiera de los 2 pasos anteriores ya podrás ver el resultado de la macro. ¿Qué hizo la Macro? 
Si te fijas en el Libro 1, Hoja 1, Celda A1 verás que se escribió el valor 1.500. Eso es exactamente lo que 
queríamos hacer con nuestra macro, así que tarea cumplida. Hemos escrito un valor en una celda Excel desde 
una macro !
Comprender la macro 
Recuerda 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 de su código. 
Recordemos como se veía nuestra macro escrita en el editor: 
* los colores del código los asignó automáticamente el editor) 
* la primera línea que dice Option Explicit la vamos a ignorar de momento 
Esta macro tiene 4 líneas de código, por eso es tan sencilla (cuando termines este manual seguro podrás escribir 
macros de cientos o quizás miles de líneas de código!). Veamos que significa cada línea. Las explicaciones que 
vienen a continuación suelen aplicarse a todas las macros, así que es importante que las comprendas. 
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 que hacemos sobre la misma, donde podemos poner lo 
que queramos. 
§ Los comentarios se pueden poner en cualquier línea y cantidad. 
§ En la medida que nuestras macros crecen los comentarios se vuelven muy útiles para nuestra propia 
referencia. 
§ Un comentario siempre comienza por un signo '. Si tipeamos dicho signo seguido de un texto y luego damos al 
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 nuestra referencia. 
Recuerda: los comentarios son muy útiles para comentar nuestras macros y siempre deben comenzar con el 
signo '. Si has 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 darle a 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 (). Más adelante veremos algunas excepciones a esto. 
§ Este nombre luego lo utilizaremos para ejecutar la macro. 
§ Luego de escribir esta línea y darle a enter el Editor detectará que es el nombre de la macro y pondrá la 
palabra Sub en color azul de forma automática. 
Recuerda: el nombre de la macro siempre comienza con la palabra Sub, luego un espacio, luego el nombre que 
quieras ponerle a tu 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 (el corazón de la macro). Con este código logramos nuestro 
objetivo (que la macro escriba el valor 1500 en la celda C10). 
§ ¿Recuerdas el comienzo del manual donde hablábamos de Objetos (partes de Excel), Propiedades 
(características) y Métodos (acciones)?. Aquí tenemos un ejemplo al respecto. Programar macros siempre 
consiste en lo mismo: primero hacer referencia al objeto y luego asignarle una propiedad o método. En nuestro 
ejemplo: 
Range("A1").Value = 1500 
Range("A1"). es el objeto 
Value es la propiedad 
= 1500 es el valor que le damos a la propiedad 
§ Esta línea de código se interpreta así: a la celda C10 de Excel asignarle el valor 1500. 
Recuerda: siempre debes 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 darle a Enter, el Editor detectará que es el fin de la macro y lo pondrá en color azul de 
forma automática. 
Recuerda: siempre debes finalizar tu macro con la instrucción End Sub.
Resumen 
Nuestro objetivo fue crear una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Como era 
una macro sencilla decidimos escribir el código manualmente. Vamos a resumir todos los pasos que hicimos 
hasta aquí: 
1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 
2. Accedimos el Editor de Visual Basic con las teclas ALT+F11 
3. En la Ventana Proyecto, en VBAProject (Libro1), hicimos doble clic en Hoja1 (Hoja1). 
4. En la Ventana de Código escribimos textualmente el siguiente código: 
' Esta macro escribe el 1500 en la celda A1 
Sub MiPrimeraMacro() 
Range("A1").Value = 1500 
End Sub 
Finalmente, todo quedó como se aprecia en la foto... 
5. Finalmente ejecutamos la macro desde el menú de Excel Herramientas > Macros > Macro y seleccionando 
MiPrimeraMacro desde la lista de nombres y dando clic a Aceptar.
6. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que le indicamos a 
la macro que haga. 
Recuerda: en estos 5 pasos hemos visto rápidamente como escribir una macro sencilla y ejecutarla. En las 
secciones siguientes iremos profundizando más estos temas, sobre todo el referente el código de la macro. 
OPM de la macro 
Recordemos nuevamente el código de nuestra primera macro: 
' Esta macro escribe el valor 1500 en la celda A1 
Sub MiPrimeraMacro() 
Range("A1").Value = 1500 
End Sub 
Ahora recordemos brevemente el significado de cada línea de código: 
1ª línea: es el comentario de la macro (siempre comienza con el signo ') 
2ª línea: es el nombre de la macro (siempre se comienza con Sub) 
3ª línea: es la instrucción principal de la macro 
4ª línea: es el fin de la macro (siempre termina con End Sub) 
La mayoría de las macros llevan una estructura similar, aunque hay algunas excepciones. 
El comentario que aparece al comienzo lo ponemos a gusto y sirve para recordarnos lo que queremos hacer con 
esa macro. El comentario siempre comienza con el signo ' y no afecta para nada a la macro. Es un simple texto. 
El nombre lo pondremos a gusto, anteponiendo la palabra Sub los paréntesis de apertura y cierre al final. 
Conviene dar un nombre que nos indique que hace la macro. 
La instrucción principal la veremos un par de párrafos más abajo. Este código siempre varía según lo que se 
quiera hacer con la macro en cuestión. 
El fin siempre es igual, con la frase End Sub. 
Así que solo nos queda explicar con más detalle la instrucción principal de la macro. En general, las líneas de 
código más importantes y donde debemos usar nuestros conocimientos de objetos, propiedades y métodos son 
las que se encuentran entre las instrucciones Sub y End Sub. Es allí donde realmente "se cocina" todo. Ese es el 
verdadero corazón de la macro. 
Al comienzo del manual te mencionábamos que las macros consisten en operar sobre un Objeto, ya sea 
alterando una de sus Propiedades o ejecutando un Método sobre el mismo. 
Recuerda: para aprender a programar macros debes aprender cuales son los objetos, propiedades y métodos de 
Excel. No olvides la definición de los mismos: 
Objeto 
- Es una parte de Excel
- Por ej. una celda de Excel, una hoja, un gráfico. 
Propiedad 
- Es una característica del objeto 
- Por ej. el valor de la celda, el nombre de una hoja, el color de un gráfico. 
Método > es una acción sobre el objeto > por ej. copiar la celda, borrar la hoja, agrandar el gráfico. 
Como te comentábamos al comienzo, la línea de código más importante de nuestra macros es: 
Range("A1").Value = 1500 
Ahora ya estamos en condiciones de identificar mejor los objetos, propiedades y métodos de la misma. 
Range("A1") es el objeto, recuerda que siempre que hacemos macros primero debemos indicar el objeto Excel 
sobre el que vamos a operar. En este caso usamos el objeto Range (Rango). El objeto Range es el que se utiliza 
para hacer referencia a una celda o rango Excel. Luego se escribe la referencia de la celda Excel (letra de 
columna y número de fila) entre comillas y paréntesis. Ya le hemos indicado a la macro que deberá ocuparse de 
la celda A1 (objeto). Ahora debemos indicarle que hacer con ella (propiedad o método). 
Value = 1500 es la propiedad, que le asignaremos al objeto. Siempre empezamos por el objeto para luego 
asignarle una propiedad o método. En este caso usamos la propiedad Value (Valor) que nos permite asignar un 
valor al objeto range, anteponiendo un signo igual y luego el valor que deseamos. 
Esta macro es muy sencilla y no posee ningún método. 
Hasta aquí es suficiente. Hemos visto el ejemplo de un objeto y una de sus propiedades. En la medida que vayas 
avanzando con la lectura de este manual irás aprendiendo nuevos objetos, propiedades y métodos. 
Grabar una Macro 
A la hora de crear una nueva macro existen 3 métodos. 
A. Escribirla manualmente 
B. Utilizar la grabadora de macros 
C. Combinación de los 2 métodos anteriores 
(grabarla y luego retocarla manualmente) 
En cada situación utilizarás un método distinto. Por ejemplo, las macros muy sencillas las puedes escribir 
manualmente porque tienen pocas líneas y ya las conoces. En otros casos la podrás crear con la grabadora de 
macros y olvidarte del código VBA. Sin embargo, en la medida que progreses con las macros verás que el 
método más utilizado suele ser el número 3 mediante el cual primero grabarás y luego harás ajustes manuales 
en el código para hacerlo más eficiente y que se ejecute más rápido. 
En el capítulo anterior vimos como se escribía una macro de forma manual. Ahora veremos como utilizar la 
grabadora de macros. Como te mencionábamos antes, la ventaja de la grabadora es que prácticamente no 
requiere conocimientos de programación y código VBA. Simplemente encendemos la grabadora, ejecutamos las 
acciones y listo. La grabadora genera el código automáticamente ! 
Mi primera Macro 
Vamos a grabar nuestra primera macro ahora!. Es la misma macro que hicimos en el capítulo anterior, pero esta 
vez la haremos con la grabadora de macros.
Objetivo de nuestra macro 
Escribir el valor 1.500 en la celda A1 de tu hoja Excel. 
¿que significa esto? Que comenzaremos con una hoja Excel vacía y luego de ejecutar la macro verás que 
aparece el valor 1.500 en la celda A1. El valor lo pondrá automáticamente la macro cuando nosotros se lo 
indiquemos. 
Suena demasiado simple, cierto? Sin embargo es suficiente como para comprender la metodología de 
funcionamiento de la grabadora de macros. 
Grabando la macro 
Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fácil. Encendemos la 
grabadora, ejecutamos las acciones que nos interesan sobre la hoja Excel, paramos la grabadora y…listo!. Excel 
escribe de forma automática el código VBA de la macro. 
Ahora podemos hacer un experimento muy interesante. Repetir nuestra primera macro, pero esta vez haciéndola 
con la grabadora de macros. Sigue los pasos a continuación: 
1. Vamos a grabar la macro 
1.1 Ve al menú Herramientas > Macros 
1.2 Selecciona 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 Borra donde dice Macro1 y escribe MiPrimeraMacro. Ese será el nombre que le daremos a nuestra macro. 
1.5 Presiona Aceptar y la macro comenzará a grabar todo lo que hagas. 
1.6 Posiciónate en la celda A1 y escribe el valor 1500. 
2. Cuando comienza a grabar la macro activa una nueva barra de macros como la que se muestra en la foto. El 
botón cuadrado de la izquierda te permitirá 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. 
Hazlo ahora para detener la grabación. 
3. Veamos como quedó la macro grabada: 
3.1 Accede al editor de visual basic con ALT+F11. 
3.2 Debes hacer clic en Módulo1 para visualizar el código de la nueva macro grabada. Verás una pantalla como 
la siguiente: 
* Podrás observar que el código que se grabó es distinto que el código que habíamos escrito cuando hicimos la 
macro manualmente. Más adelante en este mismo capítulo analizaremos y explicaremos las diferencias. 
4. Vamos a probar la macro 
4.1 Vuelve a Excel con ALT+F11. 
4.2 Verás que la celda A1 tiene el valor 1500 porque lo escribimos mientras grabábamos la macro. 
4.3 Para ver como opera la macro borra dicho valor. 
4.4 Abre el menú de macros desde el menú Herramientas > Macro > Macros 
4.5 Selecciona MiPrimeraMacro (no te confundas con Hoja1.MiPrimeraMacro que es la que hicimos primero). 
4.6 Presiona Aceptar y verás como se escribe nuevamente el valor 1500 en la celda A1. 
Resumen 
Nuestro objetivo fue grabar una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Los 
pasos que seguimos para utilizar la grabadora de macros fueron: 
1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 
2. Desde el menú Herramientas > Macros seleccionamos la opción Grabar nueva macro y la macro comenzó a 
grabar. 
3. En la celda A1 del Libro 1 escribimos el valor 1500. 
4. Detuvimos la grabación desde el menú Herramientas > Macros > Detener grabación.
5. Borramos la celda A1 (quedó con el valor 1500 cuando grabamos la macro). 
6. Ejecutamos la macro desde el menú Herramientas > Macro > Macros. Seleccionamos de la lista 
MiPrimeraMacro y luego Aceptar. 
7. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que grabamos con 
la macro. 
Recuerda: al utilizar la grabadora no accedemos en ningún momento al editor de macros ni tenemos que escribir 
código. Todo lo hace automáticamente la grabadora. 
Escrita vs. Grabada 
Llegados a este punto, interesa ver las diferencias entre la macro escrita manualmente y la grabada 
automáticamente. 
¿Qué fue lo que hicimos hasta aquí? Hicimos una macro que escribió el valor 1500 en la celda A1 de la Hoja1 de 
Excel. Pero recuerda que hicimos esta macro 2 veces: 
A. la primera vez la escribimos manualmente 
B. la segunda vez la grabamos 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 debemos estudiar. 
A continuación veamos una tabla comparativa de ambos métodos utilizados para crear la macro que nos 
permitirá revisar el proceso y obtener unas valiosas conclusiones. Las diferencias son analizadas a continuación: 
Macro Escrita 
Macro Grabada 
1. Como la hicimos 1. Como la hicimos 
1.1 Creamos un Libro Excel llamado Libro1. 1.1 Utilizamos el mismo Libro1.xls 
1.2 Abrimos el editor de macros con 
ALT+F11. 
1.2 Encendimos la grabadora de macros 
desde el menú Herramientas > Macro > 
Grabar nueva macro 
1.3 En VBAProject (Libro1) hicimos doble clic 
en Hoja1 (Hoja1) 
1.3 Nos posicionamos en la celda A1 de la 
Hoja1 y escribimos el valor 1500. 
1.4 Escribimos el código de la macro. 
1.4 Detuvimos la grabación de la macro desde 
el menú Herramientas > Macro > Detener 
grabación. 
2. El código de la macro 2. El código de la macro 
2.1 Con ALT+F11 accedemos al editor de 
macros. 
2.1 Con ALT+F11 accedemos al editor de 
macros. 
2.2 El código que escribimos manualmente fue 
el siguiente: 
2.2 El código que se grabó automáticamente 
fue el siguiente: 
Esta macro escribe el valor 1500 en la celda 
A1 Sub MiPrimeraMacro()
Sub MiPrimeraMacro() 
Range("A1").Value=1500 MiPrimeraMacro Macro 
End Sub Esta macro escribe el valor 1500 en la celda A1 
Range("A1").Select 
ActiveCell.FormulaR1C1 = "1500" 
Range("A2").Select 
End Sub 
Recuerda que este código quedó en Recuerda que este código quedó en 
VBAProject (Libro1) > Hoja1 (Hoja1) VBAProject (Libro1) > Módulo1 
3. Ejecución de la macro 3. Ejecución de la macro 
Posicionados sobre cualquier línea del código 
anterior presionamos F5. Luego con ALT+F11 
volvimos a la hoja de Excel y comprobamos 
que en la celda A1 de la Hoja1 se escribió el 
valor 1500. 
Para no confundirnos primero borramos el valor 
1500 de la celda A1, Hoja1 (lo habíamos 
escrito para grabar la macro). Luego 
ejecutamos la macro desde el menú 
Herramientas > Macro > Macros. 
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. 
En la sección siguiente analizamos el porqué de estas diferencias. 
Diferencias 
En nuestro ejemplo, 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, si te has fijado bien en los 3 puntos de la tabla de la sección 
anterior verás 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. 
Volvamos a poner las tablas comparativas, pero esta vez comentando las diferencias: 
Macro Escrita Macro Grabada 
1. Como la hicimos 1. Como la hicimos 
Desventaja: escribir una macro manualmente 
implica conocer los objetos y propiedades de 
Excel. En 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. Para un 
principiante esto puede ser difícil de saber 
Ventaja: no es necesario conocer código 
de programación. La grabadora lo escribe 
automáticamente. 
2. El código de la macro 2. El código de la macro 
Ventaja: cuando sabemos escribir macros, 
podemos hacer el código más eficiente y 
escribir solo las líneas que necesitamos. 
Recordemos el código que escribimos 
manualmente: 
Desventaja: generalmente, cuando utilizamos 
la grabadora, el código que se escribe 
automáticamente suele ser redundante y 
excesivo. Recordemos el código que grabó la 
macro:
Esta macro escribe 1500 en A1 
Sub MiPrimeraMacro() 
Range("A1").Value=1500 
End Sub 
Sub MiPrimeraMacro() 
' Esta macro escribe 1500 en A1 
Range("A1").Select 
ActiveCell.FormulaR1C1 = "1500" 
Range("A2").Select 
End Sub 
La macro está escrita de forma sintética. Le 
indicamos que en la celda A1 escriba el valor 
1500. Solo nos llevó 1 línea de código (solo 
contamos las que están entre Sub y 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 nos evita tener 
que escribir un código que en esta etapa nos resulta desconocido. Sin embargo, en la sección siguiente veremos 
que el método a utilizar dependerá de cada situación particular... 
Conclusión 
En las 2 secciones anteriores vimos dos tablas comparativas de 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 fundamental está en el código generado. Aunque las 
macros grabadas son más sencillas porque no requieren conocer el código necesario (objetos, propiedades y 
métodos) sin embargo la cantidad de código que generan suele ser más largo (más líneas). 
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. Esto es así 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 ralentice la velocidad de ejecución de la macro. 
Recordemos los dos códigos generados (omitimos los comentarios del comienzo del código). Recuerda que lo 
que nos interesa son las líneas entre Sub y End Sub. Ambas macros logran su cometido de escribir el valor 1500 
en la celda A1. Sin embargo fíjate que en la macro escrita solo utilizamos una línea de código mientras que la 
macro grabada generó 3 líneas de código (solo consideramos las líneas entre Sub y End Sub). 
Macro escrita 
Sub MiPrimeraMacro() 
Range("A1").Value=1500 
End Sub
Como conocíamos el objeto y la propiedad fuimos directamente al grano. Al objeto Rango A1 le aplicamos la 
propiedad Valor 1500. Solo una línea de código. Rápido y certero. 
Macro grabada 
Sub MiPrimeraMacro() 
Range("A1").Select 
ActiveCell.FormulaR1C1 = "1500" 
Range("A2").Select 
End Sub 
La macro grabada grabó todas nuestras acciones en 3 líneas de código. Cuando seleccionamos el rango A1 se 
generó la 1º línea de código, cuando escribimos el valor 1500 se generó la 2º línea de código y cuando dimos al 
"enter" luego de escribir el valor 1500 se generó la 3º línea de código. 
En la macro grabada verás un nuevo objeto, ActiveCell (celda activa) y una nueva propiedad del mismo, 
FormulaR1C1 (fórmula de la celda). 
Nuestra recomendación respecto a las macros escritas y grabadas ya te la dimos al comienzo del capítulo. 
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. 
Lo usual es que si estás comenzando solo utilizarás la grabadora, y en la medida que vas conociendo el lenguaje 
VBA, con sus distintos objetos, propiedades y métodos ya te irás animando a escribir tus propias macros. Sin 
embargo, como los OPM son tantos, siempre se requiere de la grabadora para descubrirlos. 
A esta altura tu puedes pensar que todavía no tienes idea de ningún código. Sin embargo hemos preparado este 
manual para hacerte la vida lo más fácil posible. La buena noticia es que este manual tiene una 2º parte con una 
gran cantidad de macros ya escritas. 
Así que nuestra recomendación final es que primero leas la 1º parte de este manual (la teoría), por lo menos un 
par de veces, hasta que te encuentres cómodo con los conceptos. Luego ya podrás leer la 2º parte del manual, 
que tiene innumerable cantidad de macros ya escritas, comentadas y listas para que puedas copiar, pegar y 
utilizar en tus desarrollos Excel. 
Como instancia final, esperamos que con lo que has aprendido aquí junto con la ayuda de la grabadora de 
macros, ya puedas crear tus propios códigos, aparte de los que nosotros te facilitamos en la 2º parte del manual. 
Ejemplos de Macros 
¿Recuerdas el código que habíamos escrito para nuestra primera macro? El objetivo que perseguíamos era 
escribir el valor 1500 en la celda A1 de la hoja1. Repasemos rápidamente todo lo que habíamos hecho para 
escribir la macro: 
1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 
2. Accedimos el Editor de Visual Basic con las teclas ALT+F11. 
3. En la Ventana Proyecto, en VBAProject (Libro1), hicimos doble clic en Hoja1 (Hoja1). 
4. En la Ventana de Código escribimos textualmente el siguiente código: 
' Esta macro escribe el 1500 en la celda A1
Sub MiPrimeraMacro() 
Range("A1").Value = 1500 
End Sub 
5. Finalmente ejecutamos la macro desde el menú de Excel Herramientas > Macros > Macro y luego 
seleccionando MiPrimeraMacro desde la lista de nombres y dando clic a Aceptar. 
Recordemos nuevamente las reglas de escritura de la mayoría de las macros: 
1. La 1º línea de la macro es un comentario que no tiene efecto sobre la misma y que usamos para nuestra 
referencia. Siempre comienza con el signo '. En nuestra macro: 
' Esta macro escribe el 1500 en la celda A1 
2. La 2º línea de la macro es el nombre, que comienza con la palabra Sub, seguida del nombre que queramos 
ponerle sin espacios intermedios y finalizando con 2 paréntesis de apertura y cierre (). En nuestra macro: 
Sub MiPrimeraMacro() 
3. La 3º línea era la instrucción principal que es donde nos referimos a los objetos, propiedades y métodos. Todo 
esto va escrito entre Sub y End Sub y podríamos tener muchas líneas de código si la macro fuera más compleja. 
Siempre se hace referencia al objeto y luego se le asignan propiedades o métodos. 
En nuestro caso el objeto es el rango A1 > Range("A1") y la propiedad que le asignamos fue el valor 1500 > 
Value=1500 
La línea de la macro quedó así: 
Range("A1").Value = 1500 
4. La 4º línea representaba el final de la macro. Todas las macros se finalizan con la instrucción End Sub. 
También vimos que la macro se puede grabar automáticamente, con la grabadora de macros, pero que 
preferimos escribirla para utilizar menos líneas de código y de paso aprender mejor los fundamentos del código. 
En la 2º parte de este manual están las macros más importantes que podrás necesitar, escritas, comentadas y 
listas para que puedas copiar, pegar y adaptar en tus propios desarrollos. De todas formas, como adelanto, 
veremos algunas macros nuevas aquí como para ir calentado motores. 
Macro 1 
Escribamos manualmente una nueva macro ahora: 
1. Crea un nuevo libro Excel y guárdalo con el nombre Libro1. 
2. Accede al Editor de visual basic con las teclas ALT+F11 
3. Inserta un nuevo Módulo desde el menú Insertar > Módulo 
4. Dentro del módulo escribe textualmente el siguiente código: 
' Esta macro muestra un texto en una ventana emergente 
Sub MostrarTexto () 
Msgbox "Manual de Macros Exceluciones" 
End Sub
5. Puedes ejecutar esta macro rápidamente posicionándote en cualquiera de sus líneas de código y luego 
presionando la tecla F5 para ver lo que sucede. 
También puedes 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. Más adelante verás como puedes mostrar en esa ventana información de celdas Excel u otros 
resultados. De momento solo hacemos que muestre el texto que indicamos entre comillas. 
Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que 
podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios 
desarrollos. 
Macro 2 
Escribamos manualmente otra nueva macro ahora: 
1. Puedes utilizar el mismo Libro1 de la macro anterior. 
2. Accede al Editor de visual basic con las teclas ALT+F11 
3. Puedes utilizar el mismo Módulo de la macro anterior 
4. Dentro del módulo escribe 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. Puedes ejecutar esta macro rápidamente posicionándote en cualquiera de sus líneas de código y luego 
presionando la tecla F5 para ver lo que sucede. 
También puedes 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ás que la macro elimina las líneas de división de las celdas de la hoja activa (algo que también puedes 
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 quisieras volver a ver las líneas de división puedes cambiar la propiedad False por True, tal que: 
ActiveWindow.DisplayGridlines = True 
Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que 
podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios 
desarrollos. 
Macro 3 
Escribamos manualmente otra nueva macro ahora:
1. Puedes utilizar el mismo Libro1 de la macro anterior. 
2. Accede al Editor de visual basic con las teclas ALT+F11 
3. La escribiremos en un objeto hoja, así que has doble clic en Hoja1 (Hoja1) 
4. Escribe textualmente el siguiente código: 
' Esta macro copia un rango a la celda activa 
Sub CopiaRango() 
Range("A1:A5").Copy Destination:=ActiveCell 
End Sub 
5. Para probar esta macro vuelve a Excel con ALT+F11 y escribe algunos números o palabras a gusto en el 
rango A1:A5. Por ejemplo: 
5.1 Posiciónate en la celda C1 
5.2 Desde el menú Herramientas > Macros > Macro, elige 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 ya lo conocíamos... 
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. 
Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que 
podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios 
desarrollos. 
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 utilizaremos para escribir las macros. 
En esta sección veremos las distintas partes del editor y estudiaremos sus principales características.
Como acceder 
El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y guardan las macros. Tienes 3 
formas de acceder al editor: 
A. Desde el menú Herramientas > Macros > Editor de Visual Basic 
B. Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic (*) 
C. Desde el teclado (Teclas de Método Abreviado): ALT+F11 
(*) Recuerda que puedes habilitar esta barra desde el menú Ver > Barras de Herramientas > Visual Basic. 
Nuestra forma preferida de acceder es con ALT+F11. Si estás en Excel y presionas estas teclas se abrirá el 
editor. Y al revés, si estás en el editor y presionas las mismas teclas volverás al Excel. 
Cuando accedas al editor verás algo como similar a esto: 
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 ves todas las ventanas, dado que se pueden mostrar u ocultar. En las secciones siguientes te 
explicaremos la utilidad de cada una de ellas.
Ventana Proyecto 
Veamos una foto para ver como se ve la ventana de Proyecto. Si no la puedes visualizar puedes 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. Hemos presionado el botón 
Alternar Carpetas para que se ordenen mejor los elementos, como se ve a continuación: 
En un primer nivel tenemos los proyectos. Por regla general, cada libro Excel tiene asociado un proyecto. Por 
ejemplo, si creas un nuevo libro Excel desde el menú de Excel Archivo > Nuevo y vuelves al editor de macros 
(ALT+F11), verás que aparece el proyecto VBAProject (Libro1). Dentro del paréntesis aparece el nombre de tu 
libro Excel y lo de VBAProject podrás 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. 
En un segundo nivel tenemos las carpetas. Estas carpetas nos distinguen entre Objetos, Formularios y Módulos. 
Veamos cada una de ellas: 
1. Objetos 
En esta carpeta vemos que cuelgan dos elementos: 
1.1 ThisWorkbook siempre está presente. Si escribimos 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 escribimos 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 visualizas puedes agregarlos desde el menú 
Insertar > Userform. 
2.1 Dentro de la carpeta de Formularios vemos un elemento llamado Userform1. 
Todo el tema de formularios lo veremos con más en detalle en el capítulo "Formularios".
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 visualizas ninguno puedes agregarlos desde el menú Insertar > Módulo. 
3.1 Dentro de la carpeta de Módulos vemos que hay un elemento llamado Módulo1. Podemos insertar tantos 
módulos como necesitemos. En los módulos podemos escribir macros que operan de forma genérica, sin 
distinguir entre hojas o libros. 
Haciendo doble clic izquierdo en cualquiera de estos objetos verás 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. 
Recuerda: antes de escribir una macro debes evaluar donde hacerlo. 
1. Si es una macro que solo debe afectar una hoja en particular escríbela en los objetos de Hoja, en el nombre 
de Hoja correspondiente. 
2. Si la macro debe afectar a todo un libro en particular escríbela 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íbela en un Módulo. 
4. Si quieres hacer un formulario utiliza el objeto Userform. 
Ventana Propiedades 
Veamos como se ve la Ventana Propiedades. Esta ventana se ubica en la parte inferior izquierda de la pantalla. 
Si no la puedes visualizar puedes activarla desde el menú Ver > Ventana propiedades. 
Cada objeto tiene sus propiedades. Por ejemplo, si hacemos doble clic en el objeto Módulo1 que vimos en la 
sección anterior, podremos ver sus propiedades: 
Algunos objetos tienen muchas propiedades (por ej. los Userforms) así que tenemos la opción de ordenar esos 
mismos de forma alfabética o por categoría. El objeto Módulo1 solo tiene la propiedad (Name) Módulo1. Si 
quisiéramos podríamos reemplazar el nombre de Módulo1 y asignar otro nombre a gusto.
Consejo: en la medida que vamos insertando muchas macros en nuestro proyecto, conviene ir creando nuevos 
módulos con nombres apropiados para mantener ordenadas nuestras macros. 
El resto de las propiedades de los otros objetos escapa al alcance de esta sección, pero podrás ver algunas en la 
2º parte de este manual. 
Ventana Código 
Veamos una foto para ver como se ve la Ventana de Código. Cada vez que hagas doble clic izquierdo en algún 
Objeto de la Ventana Proyecto se activará a la derecha la Ventana de Código. Si no la puedes visualizar puedes 
activarla posicionándote en el Objeto en cuestión y luego desde el menú Ver > Código. 
Si todavía no has escrito ninguna macro verás 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 escribamos aquí. 
Puedes escribir todas las macros que quieras en esta ventana. Recuerda que el mismo editor asignará 
automáticamente los colores al código y además separará con una línea continua cada macro. 
Ventana Inmediato 
Veamos como se ve la Ventana de Inmediato. Si no la puedes visualizar puedes 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 con la estructura que comentamos en secciones anteriores. 
Por ejemplo, si quisiéramos averiguar la cantidad de hojas que tiene un Libro podríamos 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 hemos utilizado. Solo te queremos mostrar que 
es una macro de 5 líneas. Ahora 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: 
Veamos otro ejemplo. Si el libro fue guardado, podríamos querer averiguar el directorio donde se encuentra. 
Podríamos averiguarlo 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 veremos 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. 
Recuerda: desde la Ventana Inmediato puedes 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 las 
puedes utilizar en tus desarrollos (asignándolas a botones o formularios).
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 tengas tus macros escritas en el editor puedes ir al menú 
Herramientas > Propiedades de VBAProject... y luego hacer clic en la pestaña de Protección. Verás una ventana 
como la de la siguiente: 
Para proteger tus macros sigue estos pasos: 
1. Tilda la casilla Bloquear proyecto para su visualización 
2. Escribe una Contraseña 
3. Vuelve e escribir tu 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 Macros 
En varias secciones de este manual te indicamos como se ejecuta una macro. En realidad hay muchas formas 
de hacerlo, así que te las explicaremos a todas. 
Dependiendo del caso te 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. Este tipo de macros que se ejecutan automáticamente al ocurrir alguno de los eventos 
mencionados se explica en el capítulo "Macros de Eventos". 
Desde el código 
La forma más rápida de ejecutar una macro es desde el mismo código. Cuando terminas de escribir una macro 
puedes posicionarte en cualquiera de sus líneas de código y presionar la tecla F5. Recuerda que puedes acceder 
al código de las macros desde el editor de macros, con las teclas ALT+F11. 
Desde menu 
Otra forma de ejecutar una macro es desde el menú Herramientas > Macro > Macros. Verás que se abre un 
cuadro como el siguiente:
Para ejecutar la macro: 
1. Elige el Nombre de la macro de la lista 
2. Clic en Ejecutar 
En la parte inferior figura una lista desplegable donde puedes elegir si quieres 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 abres Excel. Este libro 
permanece oculto desde Excel, pero es posible verlo desde el editor de macros. Todas las macros que escribas 
en PERSONAL.XLS siempre estarán disponibles cada vez que habrás tus libros Excel. Es una opción muy útil 
por si tienes macros que quieres utilizar en todos tus libros Excel (solo estarán disponibles en tu PC). 
Desde 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 debes hacer los siguientes: 
1. Ir al menú Herramientas > Macro > Macros. 
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 presiona la tecla MAYUSC y luego una letra. En nuestro ejemplo la 
macro se ejecutará con Ctrl+Mayúsc+Q 
Recuerda: la macro siempre se ejecuta con la tecla Ctrl+ la letra que tu escribas 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 
guardar, etc) y no se aconsejamos que utilices 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. 
Desde objetos 
Muchas veces, y sobre todo cuando desarrolles aplicaciones en Excel, te interesará asignar macros a objetos 
gráficos insertados en la hoja. 
Excel posee una gran cantidad de figuras y dibujos que puedes insertar en la hoja desde el menú Ver > Barra de 
Herramientas > Dibujo. Esto te habilita una barra como la siguiente: 
Si ya has insertado una figura en tu hoja Excel, podrás asociarle una macro siguiendo estos pasos: 
1. Haz clic izquierdo en la figura para desplegar su menú de opciones. 
2. Elige la opción Asignar macro...
3. Al elegir la opción de Asignar macro abrirás el el menú de macros. Selecciona de la lista la macro de tu interés 
luego Aceptar. 
4. Finalmente la figura quedará con la macro asignada, de tal forma que cada vez que hagas un clic encima de la 
figura, se ejecutará la macro. 
Desde botones 
También es posible crear nuevos botones para la barra de herramientas de Excel y asignarle macros a los 
mismos. Para hacerlo sigue estos pasos:
1. Ir al menú Ver> Barra de herramientas > Personalizar. 
1.1 Desde la pestaña Comandos, en la lista de Categorías, elegimos la opción Macros. 
1.2 A la derecha aparecerá una opción de Personalizar botón sobre la cual debemos hacer clic izquierdo y luego 
arrastar y soltar ese botón a la barra de botones de Excel. 
2. Es importante que mantengas abierto el cuadro de Personalizar, porque si no no podrás editar el botón. Si 
hacemos clic izquierdo sobre el botón se desplegará se 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 (visto en la sección anterior).
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. 
Este tema se trata con más detalle en el capítulo "Macros de Eventos". 
Macros de Eventos 
Como decíamos en la sección anterior, las macros también se pueden ejecutar automáticamente. 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. 
En las secciones siguientes repasaremos los principales eventos que pueden disparar una macro 
automáticamente. Existen una gran cantidad de macros de evento así que solo estudiaremos las más utilizadas. 
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 elegimos la opción Workbook.
3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que podemos utilizar para 
disparar nuestra macro. 
4. Por ejemplo, si haces clic en la opción Activate, verás 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 evento el editor escribe automáticamente la primera y última línea de su código (no 
debes modificar esto). Luego podrás escribir tu código macro entre esas líneas. En este caso, la macro que 
escribas se ejecutará cada vez que actives el libro Excel en cuestión. Por ejemplo, puedes hacer una macro que 
muestre un mensaje de saludo cada vez que abres el libro: 
Private Sub Workbook_Activate () 
Msgbox "Hola, Excel te saluda" 
End Sub 
Entonces, cada vez que abras el libro, la macro se ejecutará automáticamente y verás el saludo: 
En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no la 
podrás ver en la lista de macros del menú Herramientas > Macro > 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. Puedes insertarlas siguiendo las instrucciones dadas al 
comienzo. Las más importantes son: 
Private Sub Workbook_BeforeClose (Cancel As Boolean) 
' El código que escribas aquí se ejecutará automáticamente al cerrar el libro 
End Sub 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
' El código que escribas 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 escribas aquí se ejecutará automáticamente al guardar el libro 
End Sub 
Private Sub Workbook_Open() 
'El código que escribas aquí se ejecutará automáticamente al abrir el libro 
End Sub 
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íjate 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 tu Excel la primera hoja se llama "Gastos", en el editor verías Hoja1(Gastos). En nuestro caso 
tenemos Hoja1(Hoja1). Al hacer doble clic en dicha carpeta, la macro que escribamos 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 veremos todos los eventos de hoja que podemos utilizar para 
disparar nuestra macro automáticamente.
4. Por ejemplo, si haces clic en la opción Activate, verás que en la ventana de macros se escribe el siguiente 
código: 
Private Sub Worksheet_Activate() 
End Sub 
Al seleccionar una macro de evento el editor escribe automáticamente la primera y última línea de su código (no 
debes modificar esto). Luego podrás escribir tu código macro entre esas líneas. En este caso, la macro que 
escribas se ejecutará cada vez que actives la hoja Excel en cuestión. Por ejemplo, puedes hacer una macro que 
muestre un mensaje de saludo cada vez que activas la hoja: 
Private Sub Worksheet_Activate() 
Msgbox "Hola, Excel te saluda" 
End Sub 
Entonces, cada vez que actives la hoja, la macro se ejecutará automáticamente y verás el saludo: 
En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no la 
podrás ver en la lista de macros del menú Herramientas > Macro > 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. Puedes insertarlas siguiendo las instrucciones dadas al comienzo. 
Las más importantes son: 
Private Sub Worksheet_Activate () 
' El código que escribas aquí se ejecutará automáticamente al activar la hoja 
End Sub 
Private Sub Worksheet_Calculate() 
' El código que escribas aquí se ejecutará automáticamente al calcular la hoja 
End Sub 
Private Sub Worksheet_Deactivate()
' El código que escribas aquí se ejecutará automáticamente al desactivar la hoja 
End Sub 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
' El código que escribas aquí se ejecutará automáticamente al moverte entre las celdas de la hoja (cada vez que 
seleccionas y te posicionas en una nueva celda) 
End Sub 
Private Sub Worksheet_Change(ByVal Target As Range) 
' El código que escribas 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 (Userforms) 
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, desde 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). 
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. 
En este capítulo aprenderemos como construir nuestros propios Userforms ! 
Crear un Userform 
Para crear un Userform debemos hacer lo siguiente: 
1. Abrir el editor de macros (por ejemplo, con CTRL+F11).
2. Insertar un objeto Userform. Esto podemos hacerlo fácilmente: 
2.1 Seleccionamos el Libro Excel donde trabajaremos, en nuestro caso VBAProject (Libro2). 
2.2 Hacemos clic derecho en el mismo y elegimos la opción Insertar > Userform 
2.3 Como se ve en la fotografía, veremos que aparece un objeto Userform1 que cuelga de la carpeta Formularios 
3. En la ventana de Código de la derecha, veremos que aparece un Userform en blanco, sin controles. Para abrir 
su Cuadro de Herramientas puedes hacerlo desde el menú Ver > Cuadro de Herramientas. Ahí figuran los 
controles que podremos agregar dentro del Userform. Simplemente hacemos clic izquierdo en el control deseado 
y luego clic izquierdo en el Userform, en el sitio donde querramos agregar el control. 
La idea es que mediante estos controles podremos tanto capturar como enviar información o datos desde o hacia 
las celdas de Excel respectivamente. También podemos asociar macros a los controles que agreguemos al 
Userform (todo esto lo veremos en secciones siguientes). 
Si te posicionas sobre los Controles del Cuadro de herramientas, verás que aparece su nombre. Simplemente 
hacemos clic izquierdo en el control deseado y luego clic izquierdo en el Userform, en el sitio donde querramos 
agregar el control. En nuestro caso hemos agregado algunos controles de forma desordenada dentro del 
Userform.
Controles de un Userform 
Como veíamos anteriormente, tenemos una serie de controles para agregar al Userform, que los podíamos 
visualizar desde el menú Ver > Cuadro de Herramientas. 
Ahora explicaremos brevemente la utilidad de cada control. Los controles se explican en el mismo orden que 
aparecen en el Cuadro de Herramientas y en la figura anterior (de izquierda a derecha y de arriba hacia abajo). 
Seleccionar objetos: sirve para seleccionar controles que hayamos insertado en el Userform. 
Label: 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 agreguemos en el 
Userform. 
Textbox: sirve para que un usuario introduzca datos. 
Ejemplo: queremos que el usuario introduzca una fecha o un nombre (que luego llevaremos a alguna celda de 
Excel). 
ComboBox: sirve para que un usuario elija una opción de una lista. 
Ejemplo: creamos una lista con los meses de Enero a Diciembre para que el usuario elija uno de ellos. 
ListBox: sirve para que un usuario rellene o elija varias opciones de una lista. 
Ejemplo: creamos una lista con Regiones o Ciudades y el usuario deberá elegir una o varias de ellas. 
CheckBox: sirve para que un usuario active una determinada función. 
Ejemplo: podemos hacer que al cerrar el Userform se imprima un reporte solo si la casilla de selección está 
tildada.
OptionButton: sirve para que un usuario seleccione una opción determinada entre varias posibilidades. 
Ejemplo: queremos que el usuario indique si es de sexo Masculino o Femenino. De todas las opciones solo se 
puede seleccionar una de ellas. 
ToggleButton: sirve para activar o desactivar alguna funcionalidad. Este botón adopta el modo "Encendido" / 
"Apagado". 
Ejemplo: queremos que el usuario defina su idioma, en modo encendido español y en modo apagado inglés. 
Frame: sirve para agrupar elementos de un Userform (los elementos se deben ubicar dentro del Frame). 
Ejemplo: tenemos varias grupos de OptionButton y para distinguirlos los agrupamos con un Frame. Si tenemos 
un grupo de opciones tipo masculino/femenino los agrupamos dentro de un frame. Si luego tenemos otro grupo 
de opciones del tipo Mayor de Edad / Menor de Edad los agrupamos dentro de otro Frame. 
CommandButton: es un simple botón que nos permite ejecutar acciones. 
Ejemplo: un botón de Ayuda que ejecuta otro Userform con ayuda para el usuario. 
TabStrip: 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 podemos ubicar 
distintos controles. 
MultiPage: 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 podemos ubicar 
distintos controles o distintas secciones. 
ScrollBar: si tenemos una lista con muchos elementos el scrollbar nos permite navegarlos. 
Ejemplo: tenemos una lista con 150 países. Con el ScrollBar podemos subir y bajar por la lista de los mismos 
utilizando las flechas de desplazamiento. 
SpinButton: permite aumentar o disminuir valores. 
Ejemplo: tenemos una lista con tipos de interés y queremos que sean incrementados o disminuidos en 
cantidades predeterminadas desde el SpinButton. 
Image: permite introducir imágenes en el Userform. 
Ejemplo: queremos introducir una fotografía como fondo del Userform para darle un aspecto más profesional. 
RefEdit: permite hacer referencia a una celda de Excel. 
Ejemplo: queremos que el usuario seleccione un dato que fue introducido previamente en una celda Excel. 
Haciendo doble clic en cada control se abrirá una venta donde podremos escribir y asociarle una macro. En la 
sección siguiente veremos un ejemplo simple sobre como crear un Userform paso a paso. 
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.
Ejemplo paso a paso 
Antes de crear un Userform debemos pensar bien cual será su objetivo y cuáles son los controles que 
utilizaremos. 
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 volcarán en una tabla de Excel. 
Los controles que utilizaremos son: 
Textbox: para que el usuario ingrese los datos 
Label: para darle el nombre e 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: 
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. Ahora, la barra de título del 
Userform es más apropiada para nuestro propósito y para darle mejor información al usuario. 
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. 
5.1 En el Cuadro de Herramientas hacemos clic en el botón Label (etiqueta de texto). 
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: 
* 1 TextBox cuyo (Name) sea UFEdad, con una etiqueta de texto (Label) Edad 
* 1 TextBox cuyo (Name) sea UFFecha, con una etiqueta de texto (Label) Fecha Nac. 
Es muy importante que no olvides asignar bien los nombres (Name) a los Textbox, si no la macro dará error. 
Puedes revisar los pasos 4 y 5 para recordar como hacerlo. 
Si los textbox no quedan alineados se pueden alinear de la siguiente forma: 
1. Clic en el primer TextBox 
2. Manteniendo pulsada la tecla MAYUS, selecciona 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 pueden agregar botones de comando o CommandButons. 
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 CommandButton. 
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 CommandButton llamado UFCerrar y nombre Cerrar. 
7.8 Si fuese necesario podemos reubicar los botones dentro del Userform. 
Es muy importante que no olvides asignar bien los nombres (Name) a los CommandButtons, si no la macro dará 
error. Esto se explica en el paso 7.3 y luego deberás repetirlo para el otro botón, tal cual se indica en el paso 7.6. 
8. Agregamos el código al botón Agregar 
8.1 Seleccionamos el botón 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: 
Private Sub UFAgregar_Click() 
'definimos las variables 
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 
' Copia los datos a la tabla Excel 
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. 
No te preocupes si no comprendes el código. Hay muchos objetos, propiedades y métodos nuevos. Todos ellos 
se explican mejor en la 2º parte de este manual. 
9. Agregamos el código al botón Cerrar 
9.1 Seleccionamos el botón 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 Cerrar 
10.2 En la Ventana Propiedades cambiamos la propiedad Cancel a True. 
Probar el Userform 
Ya podemos probar el funcionamiento del 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. 
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. 
Varios 
En este capítulo se comentan temas diversos pero que no dejan de ser importantes sobre macros. 
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 
Por ejemplo, tenemos una SuperMacro que realiza la función siguiente: 
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 ve 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 
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. Las estructuras reconocidas son aquellas que 
siempre se deben respetar y se explican mejor en la 2º parte del manual, capítulo "Estructuras". 
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, como se 
ve a continuación. 
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 
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 (existe una estructura If - End If que se explica mejor en la 2º 
parte del manual, capítulo "Estructuras"). 
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. Este lo puedes hacer posicionándote 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 llegues a la 
que produce el error. También puedes 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 "empaquetarlas" 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. 
Para acceder a los complementos puedes hacerlo desde el menú Herramientas > Complementos de la hoja 
Excel, y verás un cuadro similar al que se muestra a continuación: 
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 debes crear tus macros normalmente, desde el editor de macros 
2. Luego debes 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 debes elegir la opción Complemento de Microsoft Excel, que suele ser la última de las 
opciones.
4. Deberás elegir un nombre para tu complemento y guardarlo normalmente. Dicho archivo se guardará 
automáticamente con la extensión XLA. 
5. Para instalar el complemento debes hacerlo desde el menú Herramientas > Complementos y luego la opción 
Examinar, tal como te señalábamos al comienzo. Deberás buscar el directorio donde guardaste el archivo XLA y 
seleccionarlo. 
Seguridad de macros 
Excel posee 3 niveles de seguridad de macros. Los mismos se pueden definir desde el menú Excel 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.
Firma digital 
Cuando se abre un libro Excel que contiene macros, aparece un mensaje de aviso indicando si se desean 
habilitar o deshabilitar las mismas. 
Si quieres ejecutar las macros y que no vuelva a aparecer dicho mensaje, deberás crear una Firma Digital. 
Para crear una firma digital hay que ejecutar un archivo llamado Selfcert.exe (en mi caso particular se encuentra 
ubicado en C:Archivos de programaMicrosoft OfficeOffice). Si no lo tienes allí, puedes buscarlo en tu PC con la 
opción de buscar archivos. 
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. 
Macros privadas 
Recuerda que puedes visualizar las macros de tu libro desde el menú Excel Herramientas > Macro > Macros. 
Verás que se abre un cuadro como el siguiente:
En el mismo figuran los nombres de las macros creadas, así que solo tienes que seleccionar la macro y luego 
hacer clic en el botón de Ejecutar 
. 
Si por alguna razón no desearas que figuren las macros del libro en dicho cuadro puedes hacerlo utilizando la 
instrucción Private cuando escribas tu macro. Debes utilizar dicha instrucción delante de la palabra Sub. De este 
modo solo ocultarás la macro en cuestión. Ejemplo: 
Private Sub MiMacro() 
'Esta macro no aparecerá en la lista de macros 
'Código de tu macro aquí 
End Sub 
Si tienes muchas macros en el módulo y quieres ocultarlas todas, en lugar de escribir la palabra Private en cada 
una de ellas, puedes colocar la siguiente instrucción al comienzo de tu 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 
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í 
End Sub
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 
Esto se explica mejor en la 2º parte del manual, capítulo "Estructuras". 
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. 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 
Fin 
Aquí finaliza la 1º Parte del Manual.
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel
Manual de-macros-excel

Weitere ähnliche Inhalte

Was ist angesagt?

Adobe InDesign CS5
Adobe InDesign CS5Adobe InDesign CS5
Adobe InDesign CS5ireneB5
 
Pasos para crear una tabla en access
Pasos para crear una tabla en accessPasos para crear una tabla en access
Pasos para crear una tabla en accesslizettegallardo
 
pestaña inicio Word 2010
pestaña inicio Word 2010pestaña inicio Word 2010
pestaña inicio Word 2010Edw Silva
 
Presentación de Microsoft Word
Presentación de Microsoft WordPresentación de Microsoft Word
Presentación de Microsoft Wordelpoderpibe
 
TABLAS DINAMICAS
TABLAS DINAMICASTABLAS DINAMICAS
TABLAS DINAMICASAle De Mora
 
Formato de documentos, uso de plantillas
Formato de documentos, uso de plantillasFormato de documentos, uso de plantillas
Formato de documentos, uso de plantillasJorge Juárez
 

Was ist angesagt? (9)

Adobe Illustrator
Adobe IllustratorAdobe Illustrator
Adobe Illustrator
 
Adobe InDesign CS5
Adobe InDesign CS5Adobe InDesign CS5
Adobe InDesign CS5
 
Pasos para crear una tabla en access
Pasos para crear una tabla en accessPasos para crear una tabla en access
Pasos para crear una tabla en access
 
Uso de access
Uso de accessUso de access
Uso de access
 
pestaña inicio Word 2010
pestaña inicio Word 2010pestaña inicio Word 2010
pestaña inicio Word 2010
 
Publisher
PublisherPublisher
Publisher
 
Presentación de Microsoft Word
Presentación de Microsoft WordPresentación de Microsoft Word
Presentación de Microsoft Word
 
TABLAS DINAMICAS
TABLAS DINAMICASTABLAS DINAMICAS
TABLAS DINAMICAS
 
Formato de documentos, uso de plantillas
Formato de documentos, uso de plantillasFormato de documentos, uso de plantillas
Formato de documentos, uso de plantillas
 

Andere mochten auch

Combinacion de Correspondencia con Word
Combinacion de Correspondencia con WordCombinacion de Correspondencia con Word
Combinacion de Correspondencia con WordCARINA GROSSO
 
PowerPoint
PowerPointPowerPoint
PowerPointIrvinCC
 
Viñetas y numeración
Viñetas y numeraciónViñetas y numeración
Viñetas y numeraciónAdrian Zabala
 
Panel de control de windows.
Panel de control de windows.Panel de control de windows.
Panel de control de windows.Michelle Love
 
Sistemas contabilidad
Sistemas contabilidadSistemas contabilidad
Sistemas contabilidadUNEG
 
Libro contabilidad
Libro contabilidadLibro contabilidad
Libro contabilidadMarvinsslide
 
Sistemas de contabilidad
Sistemas de contabilidadSistemas de contabilidad
Sistemas de contabilidadreyna20121
 
Libro contabilidad de costos
Libro contabilidad de costosLibro contabilidad de costos
Libro contabilidad de costosViviana Escobar
 
Libro contabilidad general
Libro contabilidad generalLibro contabilidad general
Libro contabilidad generalUGEL CASTILLA
 
Libro sistemas y métodos contables
Libro sistemas y métodos contablesLibro sistemas y métodos contables
Libro sistemas y métodos contablesThalia Campaña
 
CONTABILIDAD DE COSTOS PRESENTACIONES
CONTABILIDAD DE COSTOS PRESENTACIONES CONTABILIDAD DE COSTOS PRESENTACIONES
CONTABILIDAD DE COSTOS PRESENTACIONES WILSON VELASTEGUI
 
Curso basico de contabilidad
Curso basico de contabilidadCurso basico de contabilidad
Curso basico de contabilidadadripio2011
 
Libro practico de contabilidad de costos_UDI
Libro practico de contabilidad de costos_UDILibro practico de contabilidad de costos_UDI
Libro practico de contabilidad de costos_UDIArturo Zuniga
 
Libro de contabilidad basica
Libro de contabilidad basicaLibro de contabilidad basica
Libro de contabilidad basicaDAVID_RUMICHE
 
Excel avanzado. Cuaderno de Ejercicios y Practicas
Excel avanzado. Cuaderno de Ejercicios y PracticasExcel avanzado. Cuaderno de Ejercicios y Practicas
Excel avanzado. Cuaderno de Ejercicios y PracticasConalep Puebla III
 

Andere mochten auch (19)

Combinacion de Correspondencia con Word
Combinacion de Correspondencia con WordCombinacion de Correspondencia con Word
Combinacion de Correspondencia con Word
 
PowerPoint
PowerPointPowerPoint
PowerPoint
 
Viñetas y numeración
Viñetas y numeraciónViñetas y numeración
Viñetas y numeración
 
Introduccion a word
Introduccion a wordIntroduccion a word
Introduccion a word
 
Panel de control de windows.
Panel de control de windows.Panel de control de windows.
Panel de control de windows.
 
Sistemas contabilidad
Sistemas contabilidadSistemas contabilidad
Sistemas contabilidad
 
Libro contabilidad
Libro contabilidadLibro contabilidad
Libro contabilidad
 
Sistemas de contabilidad
Sistemas de contabilidadSistemas de contabilidad
Sistemas de contabilidad
 
Libro contabilidad de costos
Libro contabilidad de costosLibro contabilidad de costos
Libro contabilidad de costos
 
Libro contabilidad general
Libro contabilidad generalLibro contabilidad general
Libro contabilidad general
 
Libro sistemas y métodos contables
Libro sistemas y métodos contablesLibro sistemas y métodos contables
Libro sistemas y métodos contables
 
Libro de contabilidad de costos
Libro de contabilidad de costosLibro de contabilidad de costos
Libro de contabilidad de costos
 
CONTABILIDAD DE COSTOS PRESENTACIONES
CONTABILIDAD DE COSTOS PRESENTACIONES CONTABILIDAD DE COSTOS PRESENTACIONES
CONTABILIDAD DE COSTOS PRESENTACIONES
 
Excel avanzado 2010
Excel avanzado 2010Excel avanzado 2010
Excel avanzado 2010
 
Curso basico de contabilidad
Curso basico de contabilidadCurso basico de contabilidad
Curso basico de contabilidad
 
Libro practico de contabilidad de costos_UDI
Libro practico de contabilidad de costos_UDILibro practico de contabilidad de costos_UDI
Libro practico de contabilidad de costos_UDI
 
COSTOS POR PROCESOS
COSTOS POR PROCESOSCOSTOS POR PROCESOS
COSTOS POR PROCESOS
 
Libro de contabilidad basica
Libro de contabilidad basicaLibro de contabilidad basica
Libro de contabilidad basica
 
Excel avanzado. Cuaderno de Ejercicios y Practicas
Excel avanzado. Cuaderno de Ejercicios y PracticasExcel avanzado. Cuaderno de Ejercicios y Practicas
Excel avanzado. Cuaderno de Ejercicios y Practicas
 

Ähnlich wie Manual de-macros-excel

Ähnlich wie Manual de-macros-excel (20)

Capitulo manual-macros
Capitulo manual-macrosCapitulo manual-macros
Capitulo manual-macros
 
Capitulo manual-macros
Capitulo manual-macrosCapitulo manual-macros
Capitulo manual-macros
 
Crear macros
Crear macrosCrear macros
Crear macros
 
Antología
AntologíaAntología
Antología
 
Base de datos de excel (antologia)
Base de datos de excel (antologia)Base de datos de excel (antologia)
Base de datos de excel (antologia)
 
Tema 5. Introducción a macros
Tema 5. Introducción a macrosTema 5. Introducción a macros
Tema 5. Introducción a macros
 
Por qué usar vba en excel 2010
Por qué usar vba en excel 2010Por qué usar vba en excel 2010
Por qué usar vba en excel 2010
 
Por qué usar vba en excel 2010
Por qué usar vba en excel 2010Por qué usar vba en excel 2010
Por qué usar vba en excel 2010
 
Macros-para-microsoft-excel
Macros-para-microsoft-excelMacros-para-microsoft-excel
Macros-para-microsoft-excel
 
Taller 8
Taller 8Taller 8
Taller 8
 
Macros exce vperez1
Macros exce vperez1Macros exce vperez1
Macros exce vperez1
 
Macros
MacrosMacros
Macros
 
Macros y solver
Macros y solver Macros y solver
Macros y solver
 
Megaguía macros y vba ayuda excel
Megaguía  macros y vba   ayuda excelMegaguía  macros y vba   ayuda excel
Megaguía macros y vba ayuda excel
 
Taller de macros
Taller de macrosTaller de macros
Taller de macros
 
Macros, jazmin, freddy
Macros, jazmin, freddyMacros, jazmin, freddy
Macros, jazmin, freddy
 
Cómo utilizar excel
Cómo utilizar excelCómo utilizar excel
Cómo utilizar excel
 
Excel VBA Guía Rápida para principiantes.pdf
Excel VBA Guía Rápida para principiantes.pdfExcel VBA Guía Rápida para principiantes.pdf
Excel VBA Guía Rápida para principiantes.pdf
 
Excel desde cero
Excel desde ceroExcel desde cero
Excel desde cero
 
Excel revelado
Excel reveladoExcel revelado
Excel revelado
 

Kürzlich hochgeladen

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 

Kürzlich hochgeladen (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 

Manual de-macros-excel

  • 1. 1º PARTE - Teoría y Programación de Macros (Nivel principiante - intermedio) Introducción Bienvenido al Manual de Macros de Exceluciones. Estás por comenzar una de las experiencias más fascinantes y atractivas de la Hoja de Cálculos Excel. Con las macros podrás sorprender y sorprenderte porque incrementarás las prestaciones y el potencial de Excel de forma ilimitada. El único límite que tendrás será tu imaginación. Excel y Macros La Hoja de Cálculos Excel es una de las herramientas más poderosas 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. Sin embargo, si realmente quieres "exprimir todo el jugo" a Excel, deberás conocer y utilizar una de sus mayores y más potentes herramientas: las macros. Si eres usuario principiante de la hoja Excel con este manual darás un salto cuántico y te convertirás rápidamente en todo un experto. Y si eres un usuario avanzado de Excel y ya tienes conocimientos previos de macros, este manual te servirá para refrescar algunos conceptos pero también te sorprenderás con nuevos códigos y secciones especiales que hemos preparado para ti. Una definición sencilla Una buena forma de introducirnos al mundo de las macros es con una definición sencilla y directa. 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. Mucha gente le tiene un poco de miedo a la palabra "programación". Bueno, si ese es tu caso no debes preocuparte. Hace unos años nosotros mismos no teníamos la más mínima idea de programación Excel. Pero la buena noticia es que con un buen manual (confiamos en que este lo es!) podrás aprender y "tomar vuelo" rápidamente en el mundo de las macros. Verás que es fácil, divertido y que puedes expandir al infinito los límites de Excel
  • 2. Utilidad de una macro Anteriormente definimos a las macros como algo que nos permite expandir e incrementar las prestaciones de la hoja Excel. ¿Cuáles serían algunos ejemplos de esto? Bueno, los ejemplos los iremos viendo en este manual, pero a grandes rasgos podemos comentar que las 4 grandes "áreas" donde se aplican las macros son: 1. Automatización de tareas y procesos que involucran muchos pasos 2. Creación de nuevas funciones a medida (aparte de las que ya posee Excel). 3. Creación de nuevos comandos, complementos y menús. 4. Creación de completas aplicaciones a medida. Como queda en claro, con las macros podemos automatizar y crear. Veamos un poco más en detalle estas 4 áreas donde aplicaremos las macros. 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 que 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... Creación de funciones a medida: las funciones y fórmulas Excel son quizás la esencia de la hoja de cálculos (si no se pudieran utilizar funciones y fórmulas no habría 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. Nuevamente, las macros vienen a nuestra salvación. Podemos programar funciones a medida 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.) 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. Si ves en el menú Herramientas > Complementos verás una lista de los que tienes instalado en tu Excel. Los mismos suelen ser distribuidos de forma gratuita o también se compran. Su utilidad reside en agregar alguna funcionalidad extra al Excel. Creación de aplicaciones a medida: Excel es utilizado en diversos campos y por una gran cantidad de usuarios. Las macros te permitirán construir complejas y elegantes aplicaciones para cualquier uso que quieras darles. El límite solo es tu imaginación. 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 "Exceliana" que hay por detrás. Objetos, Propiedades y Métodos (OPM) Cuando hablamos de macros hablamos de Objetos, Propiedades y Métodos (OPM). Estos son los 3 conceptos generales más importantes que debes conocer a la hora de programar las macros. De momentos solo te daremos una sencilla definición y luego iremos profundizando más en ellos. Hay un ejemplo muy práctico para comprender lo que son los Objetos, Propiedades y Métodos (OPM). Supongamos que tenemos una canasta con frutas. ¿Cuales serían los OPM de la misma? Objetos: los objetos de la canasta de frutas serían las mismas frutas (manzanas, naranjas, peras…). Propiedades: las propiedades serían las características de las frutas (color, olor, sabor, textura…).
  • 3. Métodos: finalmente los métodos son las acciones que podríamos ejercer sobre las frutas (comprarlas, venderlas, comerlas, almacenarlas, limpiarlas, quitarles la piel,…). Pasemos ahora a ver un sencillo ejemplo de algunos OPM de Excel. Objetos: prácticamente cada cosa que veas 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. En fin, cada partecita de Excel es un objeto. Un objeto es algo que puedes 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. De momento estas definiciones son suficientes para empezar a entender algunos conceptos. Recuérdalas bien porque las usaremos en todo el manual. En la medida que adquieras mayores conocimientos sobre como programar macros irás manejando y conociendo cada vez más objetos, con sus propiedades y sus métodos. En definitiva, de eso se trata programar una macro: conocer el nombre del objeto, conocer el nombre de alguna propiedad del mismo que quieras modificar y también conocer el nombre de algún método que desees aplicarle. Lenguaje VBA Recuerda 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. Esto se relaciona con lo que te comentábamos en la sección anterior sobre Objetos, Propiedades y Métodos. Hablar de macros, lenguaje VBA y OPM es lo mismo. 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. Sin embargo, y para que no te desalientes, conocemos muchísimos programadores de macros que prácticamente no saben inglés! Esto es así porque solo hay que conocer la palabra en inglés para cada objeto, propiedad y método. Veamos un sencillo ejemplo de algunos objetos de Excel y su denominación en inglés, el idioma utilizado por las macros: 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)
  • 4. En la medida que avances con la lectura de este manual te irás familiarizando con la denominación de los distintos objetos, propiedades y métodos. El lenguaje VBA tiene miles de OPM, y existe una forma muy práctica de conocerlos todos que es con la grabadora de macros, tema que trataremos más adelante. Aprender macros es mucho más fácil de lo que tu te imaginas. Es cierto que hay macros muy complicadas que requieren un conocimiento muy avanzado. Pero es un lenguaje fácil y muy intuitivo. Además Excel posee una grabadora de macros que las escribe de forma automática. Luego nosotros podemos retocarlas a gusto. Te aseguramos que en cuanto termines este manual estarás escribiendo tus propias macros y te sorprenderás lo fácil que es seguir aprendiendo y profundizando tus conocimientos. Nosotros te daremos las herramientas para que lo consigas! Como comenzar Antes de comenzar a programar macros es necesario que conozcas la barra de herramientas VBA y las distintas formas de acceder al editor de macros, que es la herramienta donde escribirás el código de las mismas. En las secciones siguientes te enseñaremos ambos conceptos. Barra de Herramientas VBA El primer paso para empezar a programar macros es familiarizarnos con las herramientas que nos ofrece Excel para programarlas. Excel posee una Barra de Herramientas de Macros o VBA. Puedes acceder a la misma desde el menú Herramientas > Macros. Dicho menú se ve como en la fotografía a continuación (fíjate que también se indican las combinaciones de teclas para acceder a dichas opciones). También tienes la opción de dejar siempre visible dicha barra de herramientas. Puedes hacer esto desde el menú Ver > Barras de Herramientas > Visual Basic. Verás como aparece una nueva barra de herramientas de macros. Puedes ubicar esta barra de herramientas donde te sea más cómodo. Editor VBA El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y guardan las macros. Tienes 3 formas de acceder al editor: A. Desde el menú Herramientas > Macros > Editor de Visual Basic B. Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic. C. Desde el teclado (Teclas de Método Abreviado): ALT+F11 (el acceso a la Barra de Herramientas de la opción 1 y 2 los explicamos en la sección anterior) Consejo: cualquiera de las 3 formas te abrirá el editor de visual basic (nuestra forma preferida es la número 3, dado que es más rápido presionar ALT + F11 que abrir los menús desde el ratón). Una vez que hayas accedido al editor de visual basic verás algo similar a la figura siguiente (no importa si no lo ves estrictamente similar, eso dependerá de las ventanas que tengas visibles y ocultas).
  • 5. El editor contiene 3 ventanas principales: la Ventana Proyecto (parte izquierda superior), la Ventana de Código (parte derecha) y la Ventana Propiedades (parte izquierda inferior). La Ventana Proyecto - VBA Project: esta ventana muestra los libros Excel (xls) o los complementos (xla) abiertos. Usualmente verás nombres del tipo "VBAProject" y entre paréntesis el nombre del archivo o complemento Excel. Veamos el caso de VBAProject (Libro1). Simplemente significa que tienes abierto un libro Excel llamado Libro 1. Luego cuelgan 3 carpetas más: Hoja1 (Hoja1), ThisWorkbook y Modulo (no importa si ves todos estos elementos ahora, luego te enseñaremos como activarlos). Estas carpetas es donde habitan las macros. Haciendo doble clic en ellas activarás la ventana donde se escriben las macros. Ventana de Código: esta es el lugar donde escribiremos el código propiamente dicho de las macros. Como no hemos escrito ninguna macro todavía veremos la hoja en blanco. Recuerda bien estas dos ventanas, ya que las usaremos a continuación para escribir nuestra primera macro.
  • 6. Como verás el Editor de VB tiene muchas ventanas. Pero de momento solo nos interesan las dos ventanas que te indicamos anteriormente: la Ventana Proyecto – VBA Project y la Ventana de Código donde se escribe el código de las macros. La Ventana de Propiedades la dejaremos para más adelante porque de momento no nos interesa. Recuerda: presionando las teclas ALT+F11 puedes ir desde Excel al Editor o desde el Editor al Excel de forma alterna (debes mantener presionada la tecla ALT y presionar F11 repetidas veces, verás como pasas de Excel al editor y viceversa). Si estás en el editor y quieres regresar a la hoja Excel también puedes utilizar el ícono de Excel que se encuentra en el menú superior del editor (primer ícono de la izquierda, con la X de Excel). Escribir una Macro A la hora de crear una nueva macro existen 3 métodos. A. Escribirla manualmente
  • 7. B. Utilizar la grabadora de macros C. Combinación de los 2 métodos anteriores (Grabarla y luego retocarla manualmente) En cada situación utilizarás un método distinto. Por ejemplo, las macros muy sencillas las puedes escribir manualmente porque tienen pocas líneas y ya las conoces. En otros casos la podrás crear con la grabadora de macros y olvidarte del código VBA. Sin embargo, en la medida que progreses con las macros verás que el método más utilizado suele ser el número 3 mediante el cual primero grabarás y luego harás ajustes manuales en el código para hacerlo más eficiente y que se ejecute más rápido. En este capítulo vamos a ver como se escribe una macro manualmente (método 1) Mi primera Macro Vamos a escribir manualmente nuestra primera macro ahora!. Es una macro muy sencilla, pero te servirá para orientarte en el Editor de Visual Basic y reconocer los pasos requeridos para hacer una macro. Objetivo de nuestra macro Escribir el valor 1.500 en la celda A1 de la hoja Excel. ¿que significa esto? Que comenzaremos con una hoja Excel vacía y luego de ejecutar la macro verás que aparece el valor 1.500 en la celda A1. El valor lo pondrá automáticamente la macro cuando nosotros se lo indiquemos. Suena demasiado simple, cierto? Sin embargo es suficiente como para comenzar y que aprendas generalidades que luego aplicarás en todas tus macros. Como es una macro sencilla vamos a escribirla manualmente para que comiences a empaparte del editor de macros y sus partes. Escribir la macro Bueno, es importante que recuerdes el objetivo: esta macro escribirá automáticamente el valor 1.500 en la celda A1 de tu hoja Excel. Los pasos que debes seguir son los siguientes: 1. Prepara el Editor de Visual Basic 1.1 Crea un nuevo libro Excel y guárdalo con el nombre Libro 1. 1.2 Abre 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.
  • 8. 2. Escribiros la macro 2.1 En la ventana de macros escribe textualmente el siguiente código: ' Esta macro escribe el valor 1500 en la celda A1 Sub MiPrimeraMacro() Range("A1").Value=1500 End Sub 2.2 Si la macro está bien copiada verás que la primera línea queda en color verde y la segunda y cuarta en azul. Estos colores los asigna automáticamente el editor y te lo explicaremos más adelante. De momento no te preocupes por el código escrito. Más adelante te enseñaremos a interpretarlo. Ahora que ya tienes la macro escrita pasemos a la siguiente sección para ver como ejecutarla. Ejecutar la macro Si ya tienes escrita la macro en el editor, ahora podrás que ejecutarla, o sea hacer que funcione. Tienes 2 formas de hacer esto: A. Ejecutar la macro desde el mismo Editor: si te posicionas en cualquiera de las líneas de código de la macro y luego presionas la tecla F5 la macro se ejecutará (para ver el resultado puedes 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. Puedes volver a la hoja Excel con ALT+F11 e ir al menú Herramientas > Macros > Macro. Se abrirá un cuadro que contiene una lista con los nombres de las macros creadas. Selecciona MiPrimeraMacro y haz clic en Ejecutar. Si has seguido cualquiera de los 2 pasos anteriores ya podrás ver el resultado de la macro. ¿Qué hizo la Macro? Si te fijas en el Libro 1, Hoja 1, Celda A1 verás que se escribió el valor 1.500. Eso es exactamente lo que queríamos hacer con nuestra macro, así que tarea cumplida. Hemos escrito un valor en una celda Excel desde una macro !
  • 9. Comprender la macro Recuerda 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 de su código. Recordemos como se veía nuestra macro escrita en el editor: * los colores del código los asignó automáticamente el editor) * la primera línea que dice Option Explicit la vamos a ignorar de momento Esta macro tiene 4 líneas de código, por eso es tan sencilla (cuando termines este manual seguro podrás escribir macros de cientos o quizás miles de líneas de código!). Veamos que significa cada línea. Las explicaciones que vienen a continuación suelen aplicarse a todas las macros, así que es importante que las comprendas. 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 que hacemos sobre la misma, donde podemos poner lo que queramos. § Los comentarios se pueden poner en cualquier línea y cantidad. § En la medida que nuestras macros crecen los comentarios se vuelven muy útiles para nuestra propia referencia. § Un comentario siempre comienza por un signo '. Si tipeamos dicho signo seguido de un texto y luego damos al 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 nuestra referencia. Recuerda: los comentarios son muy útiles para comentar nuestras macros y siempre deben comenzar con el signo '. Si has 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 darle a 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.
  • 10. § Toda macro siempre comienza con la palabra Sub, luego un espacio, luego un nombre (sin espacios intermedios) y finalmente los paréntesis (). Más adelante veremos algunas excepciones a esto. § Este nombre luego lo utilizaremos para ejecutar la macro. § Luego de escribir esta línea y darle a enter el Editor detectará que es el nombre de la macro y pondrá la palabra Sub en color azul de forma automática. Recuerda: el nombre de la macro siempre comienza con la palabra Sub, luego un espacio, luego el nombre que quieras ponerle a tu 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 (el corazón de la macro). Con este código logramos nuestro objetivo (que la macro escriba el valor 1500 en la celda C10). § ¿Recuerdas el comienzo del manual donde hablábamos de Objetos (partes de Excel), Propiedades (características) y Métodos (acciones)?. Aquí tenemos un ejemplo al respecto. Programar macros siempre consiste en lo mismo: primero hacer referencia al objeto y luego asignarle una propiedad o método. En nuestro ejemplo: Range("A1").Value = 1500 Range("A1"). es el objeto Value es la propiedad = 1500 es el valor que le damos a la propiedad § Esta línea de código se interpreta así: a la celda C10 de Excel asignarle el valor 1500. Recuerda: siempre debes 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 darle a Enter, el Editor detectará que es el fin de la macro y lo pondrá en color azul de forma automática. Recuerda: siempre debes finalizar tu macro con la instrucción End Sub.
  • 11. Resumen Nuestro objetivo fue crear una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Como era una macro sencilla decidimos escribir el código manualmente. Vamos a resumir todos los pasos que hicimos hasta aquí: 1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 2. Accedimos el Editor de Visual Basic con las teclas ALT+F11 3. En la Ventana Proyecto, en VBAProject (Libro1), hicimos doble clic en Hoja1 (Hoja1). 4. En la Ventana de Código escribimos textualmente el siguiente código: ' Esta macro escribe el 1500 en la celda A1 Sub MiPrimeraMacro() Range("A1").Value = 1500 End Sub Finalmente, todo quedó como se aprecia en la foto... 5. Finalmente ejecutamos la macro desde el menú de Excel Herramientas > Macros > Macro y seleccionando MiPrimeraMacro desde la lista de nombres y dando clic a Aceptar.
  • 12. 6. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que le indicamos a la macro que haga. Recuerda: en estos 5 pasos hemos visto rápidamente como escribir una macro sencilla y ejecutarla. En las secciones siguientes iremos profundizando más estos temas, sobre todo el referente el código de la macro. OPM de la macro Recordemos nuevamente el código de nuestra primera macro: ' Esta macro escribe el valor 1500 en la celda A1 Sub MiPrimeraMacro() Range("A1").Value = 1500 End Sub Ahora recordemos brevemente el significado de cada línea de código: 1ª línea: es el comentario de la macro (siempre comienza con el signo ') 2ª línea: es el nombre de la macro (siempre se comienza con Sub) 3ª línea: es la instrucción principal de la macro 4ª línea: es el fin de la macro (siempre termina con End Sub) La mayoría de las macros llevan una estructura similar, aunque hay algunas excepciones. El comentario que aparece al comienzo lo ponemos a gusto y sirve para recordarnos lo que queremos hacer con esa macro. El comentario siempre comienza con el signo ' y no afecta para nada a la macro. Es un simple texto. El nombre lo pondremos a gusto, anteponiendo la palabra Sub los paréntesis de apertura y cierre al final. Conviene dar un nombre que nos indique que hace la macro. La instrucción principal la veremos un par de párrafos más abajo. Este código siempre varía según lo que se quiera hacer con la macro en cuestión. El fin siempre es igual, con la frase End Sub. Así que solo nos queda explicar con más detalle la instrucción principal de la macro. En general, las líneas de código más importantes y donde debemos usar nuestros conocimientos de objetos, propiedades y métodos son las que se encuentran entre las instrucciones Sub y End Sub. Es allí donde realmente "se cocina" todo. Ese es el verdadero corazón de la macro. Al comienzo del manual te mencionábamos que las macros consisten en operar sobre un Objeto, ya sea alterando una de sus Propiedades o ejecutando un Método sobre el mismo. Recuerda: para aprender a programar macros debes aprender cuales son los objetos, propiedades y métodos de Excel. No olvides la definición de los mismos: Objeto - Es una parte de Excel
  • 13. - Por ej. una celda de Excel, una hoja, un gráfico. Propiedad - Es una característica del objeto - Por ej. el valor de la celda, el nombre de una hoja, el color de un gráfico. Método > es una acción sobre el objeto > por ej. copiar la celda, borrar la hoja, agrandar el gráfico. Como te comentábamos al comienzo, la línea de código más importante de nuestra macros es: Range("A1").Value = 1500 Ahora ya estamos en condiciones de identificar mejor los objetos, propiedades y métodos de la misma. Range("A1") es el objeto, recuerda que siempre que hacemos macros primero debemos indicar el objeto Excel sobre el que vamos a operar. En este caso usamos el objeto Range (Rango). El objeto Range es el que se utiliza para hacer referencia a una celda o rango Excel. Luego se escribe la referencia de la celda Excel (letra de columna y número de fila) entre comillas y paréntesis. Ya le hemos indicado a la macro que deberá ocuparse de la celda A1 (objeto). Ahora debemos indicarle que hacer con ella (propiedad o método). Value = 1500 es la propiedad, que le asignaremos al objeto. Siempre empezamos por el objeto para luego asignarle una propiedad o método. En este caso usamos la propiedad Value (Valor) que nos permite asignar un valor al objeto range, anteponiendo un signo igual y luego el valor que deseamos. Esta macro es muy sencilla y no posee ningún método. Hasta aquí es suficiente. Hemos visto el ejemplo de un objeto y una de sus propiedades. En la medida que vayas avanzando con la lectura de este manual irás aprendiendo nuevos objetos, propiedades y métodos. Grabar una Macro A la hora de crear una nueva macro existen 3 métodos. A. Escribirla manualmente B. Utilizar la grabadora de macros C. Combinación de los 2 métodos anteriores (grabarla y luego retocarla manualmente) En cada situación utilizarás un método distinto. Por ejemplo, las macros muy sencillas las puedes escribir manualmente porque tienen pocas líneas y ya las conoces. En otros casos la podrás crear con la grabadora de macros y olvidarte del código VBA. Sin embargo, en la medida que progreses con las macros verás que el método más utilizado suele ser el número 3 mediante el cual primero grabarás y luego harás ajustes manuales en el código para hacerlo más eficiente y que se ejecute más rápido. En el capítulo anterior vimos como se escribía una macro de forma manual. Ahora veremos como utilizar la grabadora de macros. Como te mencionábamos antes, la ventaja de la grabadora es que prácticamente no requiere conocimientos de programación y código VBA. Simplemente encendemos la grabadora, ejecutamos las acciones y listo. La grabadora genera el código automáticamente ! Mi primera Macro Vamos a grabar nuestra primera macro ahora!. Es la misma macro que hicimos en el capítulo anterior, pero esta vez la haremos con la grabadora de macros.
  • 14. Objetivo de nuestra macro Escribir el valor 1.500 en la celda A1 de tu hoja Excel. ¿que significa esto? Que comenzaremos con una hoja Excel vacía y luego de ejecutar la macro verás que aparece el valor 1.500 en la celda A1. El valor lo pondrá automáticamente la macro cuando nosotros se lo indiquemos. Suena demasiado simple, cierto? Sin embargo es suficiente como para comprender la metodología de funcionamiento de la grabadora de macros. Grabando la macro Excel trae incorporada una grabadora de macros. La misma funciona de forma muy fácil. Encendemos la grabadora, ejecutamos las acciones que nos interesan sobre la hoja Excel, paramos la grabadora y…listo!. Excel escribe de forma automática el código VBA de la macro. Ahora podemos hacer un experimento muy interesante. Repetir nuestra primera macro, pero esta vez haciéndola con la grabadora de macros. Sigue los pasos a continuación: 1. Vamos a grabar la macro 1.1 Ve al menú Herramientas > Macros 1.2 Selecciona 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 Borra donde dice Macro1 y escribe MiPrimeraMacro. Ese será el nombre que le daremos a nuestra macro. 1.5 Presiona Aceptar y la macro comenzará a grabar todo lo que hagas. 1.6 Posiciónate en la celda A1 y escribe el valor 1500. 2. Cuando comienza a grabar la macro activa una nueva barra de macros como la que se muestra en la foto. El botón cuadrado de la izquierda te permitirá parar la grabación y finalizar la macro.
  • 15. Otra forma de detener la grabación de la macro es desde el menú Herramientas > Macros > Detener grabación. Hazlo ahora para detener la grabación. 3. Veamos como quedó la macro grabada: 3.1 Accede al editor de visual basic con ALT+F11. 3.2 Debes hacer clic en Módulo1 para visualizar el código de la nueva macro grabada. Verás una pantalla como la siguiente: * Podrás observar que el código que se grabó es distinto que el código que habíamos escrito cuando hicimos la macro manualmente. Más adelante en este mismo capítulo analizaremos y explicaremos las diferencias. 4. Vamos a probar la macro 4.1 Vuelve a Excel con ALT+F11. 4.2 Verás que la celda A1 tiene el valor 1500 porque lo escribimos mientras grabábamos la macro. 4.3 Para ver como opera la macro borra dicho valor. 4.4 Abre el menú de macros desde el menú Herramientas > Macro > Macros 4.5 Selecciona MiPrimeraMacro (no te confundas con Hoja1.MiPrimeraMacro que es la que hicimos primero). 4.6 Presiona Aceptar y verás como se escribe nuevamente el valor 1500 en la celda A1. Resumen Nuestro objetivo fue grabar una macro que escribiera el valor 1500 en la celda A1 de la Hoja1 de Excel. Los pasos que seguimos para utilizar la grabadora de macros fueron: 1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 2. Desde el menú Herramientas > Macros seleccionamos la opción Grabar nueva macro y la macro comenzó a grabar. 3. En la celda A1 del Libro 1 escribimos el valor 1500. 4. Detuvimos la grabación desde el menú Herramientas > Macros > Detener grabación.
  • 16. 5. Borramos la celda A1 (quedó con el valor 1500 cuando grabamos la macro). 6. Ejecutamos la macro desde el menú Herramientas > Macro > Macros. Seleccionamos de la lista MiPrimeraMacro y luego Aceptar. 7. El resultado es que en la celda A1 se vuelve a escribir el valor 1500, que fue justamente lo que grabamos con la macro. Recuerda: al utilizar la grabadora no accedemos en ningún momento al editor de macros ni tenemos que escribir código. Todo lo hace automáticamente la grabadora. Escrita vs. Grabada Llegados a este punto, interesa ver las diferencias entre la macro escrita manualmente y la grabada automáticamente. ¿Qué fue lo que hicimos hasta aquí? Hicimos una macro que escribió el valor 1500 en la celda A1 de la Hoja1 de Excel. Pero recuerda que hicimos esta macro 2 veces: A. la primera vez la escribimos manualmente B. la segunda vez la grabamos 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 debemos estudiar. A continuación veamos una tabla comparativa de ambos métodos utilizados para crear la macro que nos permitirá revisar el proceso y obtener unas valiosas conclusiones. Las diferencias son analizadas a continuación: Macro Escrita Macro Grabada 1. Como la hicimos 1. Como la hicimos 1.1 Creamos un Libro Excel llamado Libro1. 1.1 Utilizamos el mismo Libro1.xls 1.2 Abrimos el editor de macros con ALT+F11. 1.2 Encendimos la grabadora de macros desde el menú Herramientas > Macro > Grabar nueva macro 1.3 En VBAProject (Libro1) hicimos doble clic en Hoja1 (Hoja1) 1.3 Nos posicionamos en la celda A1 de la Hoja1 y escribimos el valor 1500. 1.4 Escribimos el código de la macro. 1.4 Detuvimos la grabación de la macro desde el menú Herramientas > Macro > Detener grabación. 2. El código de la macro 2. El código de la macro 2.1 Con ALT+F11 accedemos al editor de macros. 2.1 Con ALT+F11 accedemos al editor de macros. 2.2 El código que escribimos manualmente fue el siguiente: 2.2 El código que se grabó automáticamente fue el siguiente: Esta macro escribe el valor 1500 en la celda A1 Sub MiPrimeraMacro()
  • 17. Sub MiPrimeraMacro() Range("A1").Value=1500 MiPrimeraMacro Macro End Sub Esta macro escribe el valor 1500 en la celda A1 Range("A1").Select ActiveCell.FormulaR1C1 = "1500" Range("A2").Select End Sub Recuerda que este código quedó en Recuerda que este código quedó en VBAProject (Libro1) > Hoja1 (Hoja1) VBAProject (Libro1) > Módulo1 3. Ejecución de la macro 3. Ejecución de la macro Posicionados sobre cualquier línea del código anterior presionamos F5. Luego con ALT+F11 volvimos a la hoja de Excel y comprobamos que en la celda A1 de la Hoja1 se escribió el valor 1500. Para no confundirnos primero borramos el valor 1500 de la celda A1, Hoja1 (lo habíamos escrito para grabar la macro). Luego ejecutamos la macro desde el menú Herramientas > Macro > Macros. 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. En la sección siguiente analizamos el porqué de estas diferencias. Diferencias En nuestro ejemplo, 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, si te has fijado bien en los 3 puntos de la tabla de la sección anterior verás 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. Volvamos a poner las tablas comparativas, pero esta vez comentando las diferencias: Macro Escrita Macro Grabada 1. Como la hicimos 1. Como la hicimos Desventaja: escribir una macro manualmente implica conocer los objetos y propiedades de Excel. En 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. Para un principiante esto puede ser difícil de saber Ventaja: no es necesario conocer código de programación. La grabadora lo escribe automáticamente. 2. El código de la macro 2. El código de la macro Ventaja: cuando sabemos escribir macros, podemos hacer el código más eficiente y escribir solo las líneas que necesitamos. Recordemos el código que escribimos manualmente: Desventaja: generalmente, cuando utilizamos la grabadora, el código que se escribe automáticamente suele ser redundante y excesivo. Recordemos el código que grabó la macro:
  • 18. Esta macro escribe 1500 en A1 Sub MiPrimeraMacro() Range("A1").Value=1500 End Sub Sub MiPrimeraMacro() ' Esta macro escribe 1500 en A1 Range("A1").Select ActiveCell.FormulaR1C1 = "1500" Range("A2").Select End Sub La macro está escrita de forma sintética. Le indicamos que en la celda A1 escriba el valor 1500. Solo nos llevó 1 línea de código (solo contamos las que están entre Sub y 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 nos evita tener que escribir un código que en esta etapa nos resulta desconocido. Sin embargo, en la sección siguiente veremos que el método a utilizar dependerá de cada situación particular... Conclusión En las 2 secciones anteriores vimos dos tablas comparativas de 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 fundamental está en el código generado. Aunque las macros grabadas son más sencillas porque no requieren conocer el código necesario (objetos, propiedades y métodos) sin embargo la cantidad de código que generan suele ser más largo (más líneas). 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. Esto es así 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 ralentice la velocidad de ejecución de la macro. Recordemos los dos códigos generados (omitimos los comentarios del comienzo del código). Recuerda que lo que nos interesa son las líneas entre Sub y End Sub. Ambas macros logran su cometido de escribir el valor 1500 en la celda A1. Sin embargo fíjate que en la macro escrita solo utilizamos una línea de código mientras que la macro grabada generó 3 líneas de código (solo consideramos las líneas entre Sub y End Sub). Macro escrita Sub MiPrimeraMacro() Range("A1").Value=1500 End Sub
  • 19. Como conocíamos el objeto y la propiedad fuimos directamente al grano. Al objeto Rango A1 le aplicamos la propiedad Valor 1500. Solo una línea de código. Rápido y certero. Macro grabada Sub MiPrimeraMacro() Range("A1").Select ActiveCell.FormulaR1C1 = "1500" Range("A2").Select End Sub La macro grabada grabó todas nuestras acciones en 3 líneas de código. Cuando seleccionamos el rango A1 se generó la 1º línea de código, cuando escribimos el valor 1500 se generó la 2º línea de código y cuando dimos al "enter" luego de escribir el valor 1500 se generó la 3º línea de código. En la macro grabada verás un nuevo objeto, ActiveCell (celda activa) y una nueva propiedad del mismo, FormulaR1C1 (fórmula de la celda). Nuestra recomendación respecto a las macros escritas y grabadas ya te la dimos al comienzo del capítulo. 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. Lo usual es que si estás comenzando solo utilizarás la grabadora, y en la medida que vas conociendo el lenguaje VBA, con sus distintos objetos, propiedades y métodos ya te irás animando a escribir tus propias macros. Sin embargo, como los OPM son tantos, siempre se requiere de la grabadora para descubrirlos. A esta altura tu puedes pensar que todavía no tienes idea de ningún código. Sin embargo hemos preparado este manual para hacerte la vida lo más fácil posible. La buena noticia es que este manual tiene una 2º parte con una gran cantidad de macros ya escritas. Así que nuestra recomendación final es que primero leas la 1º parte de este manual (la teoría), por lo menos un par de veces, hasta que te encuentres cómodo con los conceptos. Luego ya podrás leer la 2º parte del manual, que tiene innumerable cantidad de macros ya escritas, comentadas y listas para que puedas copiar, pegar y utilizar en tus desarrollos Excel. Como instancia final, esperamos que con lo que has aprendido aquí junto con la ayuda de la grabadora de macros, ya puedas crear tus propios códigos, aparte de los que nosotros te facilitamos en la 2º parte del manual. Ejemplos de Macros ¿Recuerdas el código que habíamos escrito para nuestra primera macro? El objetivo que perseguíamos era escribir el valor 1500 en la celda A1 de la hoja1. Repasemos rápidamente todo lo que habíamos hecho para escribir la macro: 1. Creamos un nuevo libro Excel y lo guardamos con el nombre Libro1. 2. Accedimos el Editor de Visual Basic con las teclas ALT+F11. 3. En la Ventana Proyecto, en VBAProject (Libro1), hicimos doble clic en Hoja1 (Hoja1). 4. En la Ventana de Código escribimos textualmente el siguiente código: ' Esta macro escribe el 1500 en la celda A1
  • 20. Sub MiPrimeraMacro() Range("A1").Value = 1500 End Sub 5. Finalmente ejecutamos la macro desde el menú de Excel Herramientas > Macros > Macro y luego seleccionando MiPrimeraMacro desde la lista de nombres y dando clic a Aceptar. Recordemos nuevamente las reglas de escritura de la mayoría de las macros: 1. La 1º línea de la macro es un comentario que no tiene efecto sobre la misma y que usamos para nuestra referencia. Siempre comienza con el signo '. En nuestra macro: ' Esta macro escribe el 1500 en la celda A1 2. La 2º línea de la macro es el nombre, que comienza con la palabra Sub, seguida del nombre que queramos ponerle sin espacios intermedios y finalizando con 2 paréntesis de apertura y cierre (). En nuestra macro: Sub MiPrimeraMacro() 3. La 3º línea era la instrucción principal que es donde nos referimos a los objetos, propiedades y métodos. Todo esto va escrito entre Sub y End Sub y podríamos tener muchas líneas de código si la macro fuera más compleja. Siempre se hace referencia al objeto y luego se le asignan propiedades o métodos. En nuestro caso el objeto es el rango A1 > Range("A1") y la propiedad que le asignamos fue el valor 1500 > Value=1500 La línea de la macro quedó así: Range("A1").Value = 1500 4. La 4º línea representaba el final de la macro. Todas las macros se finalizan con la instrucción End Sub. También vimos que la macro se puede grabar automáticamente, con la grabadora de macros, pero que preferimos escribirla para utilizar menos líneas de código y de paso aprender mejor los fundamentos del código. En la 2º parte de este manual están las macros más importantes que podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios desarrollos. De todas formas, como adelanto, veremos algunas macros nuevas aquí como para ir calentado motores. Macro 1 Escribamos manualmente una nueva macro ahora: 1. Crea un nuevo libro Excel y guárdalo con el nombre Libro1. 2. Accede al Editor de visual basic con las teclas ALT+F11 3. Inserta un nuevo Módulo desde el menú Insertar > Módulo 4. Dentro del módulo escribe textualmente el siguiente código: ' Esta macro muestra un texto en una ventana emergente Sub MostrarTexto () Msgbox "Manual de Macros Exceluciones" End Sub
  • 21. 5. Puedes ejecutar esta macro rápidamente posicionándote en cualquiera de sus líneas de código y luego presionando la tecla F5 para ver lo que sucede. También puedes 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. Más adelante verás como puedes mostrar en esa ventana información de celdas Excel u otros resultados. De momento solo hacemos que muestre el texto que indicamos entre comillas. Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios desarrollos. Macro 2 Escribamos manualmente otra nueva macro ahora: 1. Puedes utilizar el mismo Libro1 de la macro anterior. 2. Accede al Editor de visual basic con las teclas ALT+F11 3. Puedes utilizar el mismo Módulo de la macro anterior 4. Dentro del módulo escribe 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. Puedes ejecutar esta macro rápidamente posicionándote en cualquiera de sus líneas de código y luego presionando la tecla F5 para ver lo que sucede. También puedes 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ás que la macro elimina las líneas de división de las celdas de la hoja activa (algo que también puedes 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 quisieras volver a ver las líneas de división puedes cambiar la propiedad False por True, tal que: ActiveWindow.DisplayGridlines = True Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios desarrollos. Macro 3 Escribamos manualmente otra nueva macro ahora:
  • 22. 1. Puedes utilizar el mismo Libro1 de la macro anterior. 2. Accede al Editor de visual basic con las teclas ALT+F11 3. La escribiremos en un objeto hoja, así que has doble clic en Hoja1 (Hoja1) 4. Escribe textualmente el siguiente código: ' Esta macro copia un rango a la celda activa Sub CopiaRango() Range("A1:A5").Copy Destination:=ActiveCell End Sub 5. Para probar esta macro vuelve a Excel con ALT+F11 y escribe algunos números o palabras a gusto en el rango A1:A5. Por ejemplo: 5.1 Posiciónate en la celda C1 5.2 Desde el menú Herramientas > Macros > Macro, elige 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 ya lo conocíamos... 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. Recuerda que esto es tan solo un adelanto. En la 2º parte de este manual están las macros más importantes que podrás necesitar, escritas, comentadas y listas para que puedas copiar, pegar y adaptar en tus propios desarrollos. 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 utilizaremos para escribir las macros. En esta sección veremos las distintas partes del editor y estudiaremos sus principales características.
  • 23. Como acceder El Editor de Visual Basic es la aplicación que trae Excel desde donde se escriben y guardan las macros. Tienes 3 formas de acceder al editor: A. Desde el menú Herramientas > Macros > Editor de Visual Basic B. Desde el botón Editor de Visual Basic de la Barra de Herramientas Visual Basic (*) C. Desde el teclado (Teclas de Método Abreviado): ALT+F11 (*) Recuerda que puedes habilitar esta barra desde el menú Ver > Barras de Herramientas > Visual Basic. Nuestra forma preferida de acceder es con ALT+F11. Si estás en Excel y presionas estas teclas se abrirá el editor. Y al revés, si estás en el editor y presionas las mismas teclas volverás al Excel. Cuando accedas al editor verás algo como similar a esto: 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 ves todas las ventanas, dado que se pueden mostrar u ocultar. En las secciones siguientes te explicaremos la utilidad de cada una de ellas.
  • 24. Ventana Proyecto Veamos una foto para ver como se ve la ventana de Proyecto. Si no la puedes visualizar puedes 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. Hemos presionado el botón Alternar Carpetas para que se ordenen mejor los elementos, como se ve a continuación: En un primer nivel tenemos los proyectos. Por regla general, cada libro Excel tiene asociado un proyecto. Por ejemplo, si creas un nuevo libro Excel desde el menú de Excel Archivo > Nuevo y vuelves al editor de macros (ALT+F11), verás que aparece el proyecto VBAProject (Libro1). Dentro del paréntesis aparece el nombre de tu libro Excel y lo de VBAProject podrás 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. En un segundo nivel tenemos las carpetas. Estas carpetas nos distinguen entre Objetos, Formularios y Módulos. Veamos cada una de ellas: 1. Objetos En esta carpeta vemos que cuelgan dos elementos: 1.1 ThisWorkbook siempre está presente. Si escribimos una macro aquí la misma afectará a todo el libro.
  • 25. 1.2 Hoja1(Hoja1) hace referencia las hojas de Excel (habrá 1 por cada hoja de nuestro libro). Si escribimos 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 visualizas puedes agregarlos desde el menú Insertar > Userform. 2.1 Dentro de la carpeta de Formularios vemos un elemento llamado Userform1. Todo el tema de formularios lo veremos con más en detalle en el capítulo "Formularios".
  • 26. 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 visualizas ninguno puedes agregarlos desde el menú Insertar > Módulo. 3.1 Dentro de la carpeta de Módulos vemos que hay un elemento llamado Módulo1. Podemos insertar tantos módulos como necesitemos. En los módulos podemos escribir macros que operan de forma genérica, sin distinguir entre hojas o libros. Haciendo doble clic izquierdo en cualquiera de estos objetos verás 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. Recuerda: antes de escribir una macro debes evaluar donde hacerlo. 1. Si es una macro que solo debe afectar una hoja en particular escríbela en los objetos de Hoja, en el nombre de Hoja correspondiente. 2. Si la macro debe afectar a todo un libro en particular escríbela 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íbela en un Módulo. 4. Si quieres hacer un formulario utiliza el objeto Userform. Ventana Propiedades Veamos como se ve la Ventana Propiedades. Esta ventana se ubica en la parte inferior izquierda de la pantalla. Si no la puedes visualizar puedes activarla desde el menú Ver > Ventana propiedades. Cada objeto tiene sus propiedades. Por ejemplo, si hacemos doble clic en el objeto Módulo1 que vimos en la sección anterior, podremos ver sus propiedades: Algunos objetos tienen muchas propiedades (por ej. los Userforms) así que tenemos la opción de ordenar esos mismos de forma alfabética o por categoría. El objeto Módulo1 solo tiene la propiedad (Name) Módulo1. Si quisiéramos podríamos reemplazar el nombre de Módulo1 y asignar otro nombre a gusto.
  • 27. Consejo: en la medida que vamos insertando muchas macros en nuestro proyecto, conviene ir creando nuevos módulos con nombres apropiados para mantener ordenadas nuestras macros. El resto de las propiedades de los otros objetos escapa al alcance de esta sección, pero podrás ver algunas en la 2º parte de este manual. Ventana Código Veamos una foto para ver como se ve la Ventana de Código. Cada vez que hagas doble clic izquierdo en algún Objeto de la Ventana Proyecto se activará a la derecha la Ventana de Código. Si no la puedes visualizar puedes activarla posicionándote en el Objeto en cuestión y luego desde el menú Ver > Código. Si todavía no has escrito ninguna macro verás 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 escribamos aquí. Puedes escribir todas las macros que quieras en esta ventana. Recuerda que el mismo editor asignará automáticamente los colores al código y además separará con una línea continua cada macro. Ventana Inmediato Veamos como se ve la Ventana de Inmediato. Si no la puedes visualizar puedes 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 con la estructura que comentamos en secciones anteriores. Por ejemplo, si quisiéramos averiguar la cantidad de hojas que tiene un Libro podríamos escribir la siguiente macro en un módulo y ejecutarla: Sub ContarHojas() Dim N As Long N= thisworkbook.Sheets.Count Msgbox N End Sub
  • 28. De momento no importa los objetos, propiedades o métodos que hemos utilizado. Solo te queremos mostrar que es una macro de 5 líneas. Ahora 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: Veamos otro ejemplo. Si el libro fue guardado, podríamos querer averiguar el directorio donde se encuentra. Podríamos averiguarlo 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 veremos 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. Recuerda: desde la Ventana Inmediato puedes 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 las puedes utilizar en tus desarrollos (asignándolas a botones o formularios).
  • 29. 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 tengas tus macros escritas en el editor puedes ir al menú Herramientas > Propiedades de VBAProject... y luego hacer clic en la pestaña de Protección. Verás una ventana como la de la siguiente: Para proteger tus macros sigue estos pasos: 1. Tilda la casilla Bloquear proyecto para su visualización 2. Escribe una Contraseña 3. Vuelve e escribir tu 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 Macros En varias secciones de este manual te indicamos como se ejecuta una macro. En realidad hay muchas formas de hacerlo, así que te las explicaremos a todas. Dependiendo del caso te 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. Este tipo de macros que se ejecutan automáticamente al ocurrir alguno de los eventos mencionados se explica en el capítulo "Macros de Eventos". Desde el código La forma más rápida de ejecutar una macro es desde el mismo código. Cuando terminas de escribir una macro puedes posicionarte en cualquiera de sus líneas de código y presionar la tecla F5. Recuerda que puedes acceder al código de las macros desde el editor de macros, con las teclas ALT+F11. Desde menu Otra forma de ejecutar una macro es desde el menú Herramientas > Macro > Macros. Verás que se abre un cuadro como el siguiente:
  • 30. Para ejecutar la macro: 1. Elige el Nombre de la macro de la lista 2. Clic en Ejecutar En la parte inferior figura una lista desplegable donde puedes elegir si quieres 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 abres Excel. Este libro permanece oculto desde Excel, pero es posible verlo desde el editor de macros. Todas las macros que escribas en PERSONAL.XLS siempre estarán disponibles cada vez que habrás tus libros Excel. Es una opción muy útil por si tienes macros que quieres utilizar en todos tus libros Excel (solo estarán disponibles en tu PC). Desde 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 debes hacer los siguientes: 1. Ir al menú Herramientas > Macro > Macros. 2. Elegir el nombre de la macro de la lista y luego hacer clic en el botón Opciones.
  • 31. 3. Donde dice Tecla de método abreviado presiona la tecla MAYUSC y luego una letra. En nuestro ejemplo la macro se ejecutará con Ctrl+Mayúsc+Q Recuerda: la macro siempre se ejecuta con la tecla Ctrl+ la letra que tu escribas 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 guardar, etc) y no se aconsejamos que utilices 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. Desde objetos Muchas veces, y sobre todo cuando desarrolles aplicaciones en Excel, te interesará asignar macros a objetos gráficos insertados en la hoja. Excel posee una gran cantidad de figuras y dibujos que puedes insertar en la hoja desde el menú Ver > Barra de Herramientas > Dibujo. Esto te habilita una barra como la siguiente: Si ya has insertado una figura en tu hoja Excel, podrás asociarle una macro siguiendo estos pasos: 1. Haz clic izquierdo en la figura para desplegar su menú de opciones. 2. Elige la opción Asignar macro...
  • 32. 3. Al elegir la opción de Asignar macro abrirás el el menú de macros. Selecciona de la lista la macro de tu interés luego Aceptar. 4. Finalmente la figura quedará con la macro asignada, de tal forma que cada vez que hagas un clic encima de la figura, se ejecutará la macro. Desde botones También es posible crear nuevos botones para la barra de herramientas de Excel y asignarle macros a los mismos. Para hacerlo sigue estos pasos:
  • 33. 1. Ir al menú Ver> Barra de herramientas > Personalizar. 1.1 Desde la pestaña Comandos, en la lista de Categorías, elegimos la opción Macros. 1.2 A la derecha aparecerá una opción de Personalizar botón sobre la cual debemos hacer clic izquierdo y luego arrastar y soltar ese botón a la barra de botones de Excel. 2. Es importante que mantengas abierto el cuadro de Personalizar, porque si no no podrás editar el botón. Si hacemos clic izquierdo sobre el botón se desplegará se 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 (visto en la sección anterior).
  • 34. 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. Este tema se trata con más detalle en el capítulo "Macros de Eventos". Macros de Eventos Como decíamos en la sección anterior, las macros también se pueden ejecutar automáticamente. 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. En las secciones siguientes repasaremos los principales eventos que pueden disparar una macro automáticamente. Existen una gran cantidad de macros de evento así que solo estudiaremos las más utilizadas. 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 elegimos la opción Workbook.
  • 35. 3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que podemos utilizar para disparar nuestra macro. 4. Por ejemplo, si haces clic en la opción Activate, verás 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 evento el editor escribe automáticamente la primera y última línea de su código (no debes modificar esto). Luego podrás escribir tu código macro entre esas líneas. En este caso, la macro que escribas se ejecutará cada vez que actives el libro Excel en cuestión. Por ejemplo, puedes hacer una macro que muestre un mensaje de saludo cada vez que abres el libro: Private Sub Workbook_Activate () Msgbox "Hola, Excel te saluda" End Sub Entonces, cada vez que abras el libro, la macro se ejecutará automáticamente y verás el saludo: En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no la podrás ver en la lista de macros del menú Herramientas > Macro > 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. Puedes insertarlas siguiendo las instrucciones dadas al comienzo. Las más importantes son: Private Sub Workbook_BeforeClose (Cancel As Boolean) ' El código que escribas aquí se ejecutará automáticamente al cerrar el libro End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean) ' El código que escribas aquí se ejecutará automáticamente al imprimir el libro
  • 36. End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' El código que escribas aquí se ejecutará automáticamente al guardar el libro End Sub Private Sub Workbook_Open() 'El código que escribas aquí se ejecutará automáticamente al abrir el libro End Sub 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íjate 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 tu Excel la primera hoja se llama "Gastos", en el editor verías Hoja1(Gastos). En nuestro caso tenemos Hoja1(Hoja1). Al hacer doble clic en dicha carpeta, la macro que escribamos 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 veremos todos los eventos de hoja que podemos utilizar para disparar nuestra macro automáticamente.
  • 37. 4. Por ejemplo, si haces clic en la opción Activate, verás que en la ventana de macros se escribe el siguiente código: Private Sub Worksheet_Activate() End Sub Al seleccionar una macro de evento el editor escribe automáticamente la primera y última línea de su código (no debes modificar esto). Luego podrás escribir tu código macro entre esas líneas. En este caso, la macro que escribas se ejecutará cada vez que actives la hoja Excel en cuestión. Por ejemplo, puedes hacer una macro que muestre un mensaje de saludo cada vez que activas la hoja: Private Sub Worksheet_Activate() Msgbox "Hola, Excel te saluda" End Sub Entonces, cada vez que actives la hoja, la macro se ejecutará automáticamente y verás el saludo: En el caso de las macros de evento, siempre aparece la palabra Private. Eso significa que esa macro no la podrás ver en la lista de macros del menú Herramientas > Macro > 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. Puedes insertarlas siguiendo las instrucciones dadas al comienzo. Las más importantes son: Private Sub Worksheet_Activate () ' El código que escribas aquí se ejecutará automáticamente al activar la hoja End Sub Private Sub Worksheet_Calculate() ' El código que escribas aquí se ejecutará automáticamente al calcular la hoja End Sub Private Sub Worksheet_Deactivate()
  • 38. ' El código que escribas aquí se ejecutará automáticamente al desactivar la hoja End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' El código que escribas aquí se ejecutará automáticamente al moverte entre las celdas de la hoja (cada vez que seleccionas y te posicionas en una nueva celda) End Sub Private Sub Worksheet_Change(ByVal Target As Range) ' El código que escribas 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 (Userforms) 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, desde 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). 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. En este capítulo aprenderemos como construir nuestros propios Userforms ! Crear un Userform Para crear un Userform debemos hacer lo siguiente: 1. Abrir el editor de macros (por ejemplo, con CTRL+F11).
  • 39. 2. Insertar un objeto Userform. Esto podemos hacerlo fácilmente: 2.1 Seleccionamos el Libro Excel donde trabajaremos, en nuestro caso VBAProject (Libro2). 2.2 Hacemos clic derecho en el mismo y elegimos la opción Insertar > Userform 2.3 Como se ve en la fotografía, veremos que aparece un objeto Userform1 que cuelga de la carpeta Formularios 3. En la ventana de Código de la derecha, veremos que aparece un Userform en blanco, sin controles. Para abrir su Cuadro de Herramientas puedes hacerlo desde el menú Ver > Cuadro de Herramientas. Ahí figuran los controles que podremos agregar dentro del Userform. Simplemente hacemos clic izquierdo en el control deseado y luego clic izquierdo en el Userform, en el sitio donde querramos agregar el control. La idea es que mediante estos controles podremos tanto capturar como enviar información o datos desde o hacia las celdas de Excel respectivamente. También podemos asociar macros a los controles que agreguemos al Userform (todo esto lo veremos en secciones siguientes). Si te posicionas sobre los Controles del Cuadro de herramientas, verás que aparece su nombre. Simplemente hacemos clic izquierdo en el control deseado y luego clic izquierdo en el Userform, en el sitio donde querramos agregar el control. En nuestro caso hemos agregado algunos controles de forma desordenada dentro del Userform.
  • 40. Controles de un Userform Como veíamos anteriormente, tenemos una serie de controles para agregar al Userform, que los podíamos visualizar desde el menú Ver > Cuadro de Herramientas. Ahora explicaremos brevemente la utilidad de cada control. Los controles se explican en el mismo orden que aparecen en el Cuadro de Herramientas y en la figura anterior (de izquierda a derecha y de arriba hacia abajo). Seleccionar objetos: sirve para seleccionar controles que hayamos insertado en el Userform. Label: 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 agreguemos en el Userform. Textbox: sirve para que un usuario introduzca datos. Ejemplo: queremos que el usuario introduzca una fecha o un nombre (que luego llevaremos a alguna celda de Excel). ComboBox: sirve para que un usuario elija una opción de una lista. Ejemplo: creamos una lista con los meses de Enero a Diciembre para que el usuario elija uno de ellos. ListBox: sirve para que un usuario rellene o elija varias opciones de una lista. Ejemplo: creamos una lista con Regiones o Ciudades y el usuario deberá elegir una o varias de ellas. CheckBox: sirve para que un usuario active una determinada función. Ejemplo: podemos hacer que al cerrar el Userform se imprima un reporte solo si la casilla de selección está tildada.
  • 41. OptionButton: sirve para que un usuario seleccione una opción determinada entre varias posibilidades. Ejemplo: queremos que el usuario indique si es de sexo Masculino o Femenino. De todas las opciones solo se puede seleccionar una de ellas. ToggleButton: sirve para activar o desactivar alguna funcionalidad. Este botón adopta el modo "Encendido" / "Apagado". Ejemplo: queremos que el usuario defina su idioma, en modo encendido español y en modo apagado inglés. Frame: sirve para agrupar elementos de un Userform (los elementos se deben ubicar dentro del Frame). Ejemplo: tenemos varias grupos de OptionButton y para distinguirlos los agrupamos con un Frame. Si tenemos un grupo de opciones tipo masculino/femenino los agrupamos dentro de un frame. Si luego tenemos otro grupo de opciones del tipo Mayor de Edad / Menor de Edad los agrupamos dentro de otro Frame. CommandButton: es un simple botón que nos permite ejecutar acciones. Ejemplo: un botón de Ayuda que ejecuta otro Userform con ayuda para el usuario. TabStrip: 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 podemos ubicar distintos controles. MultiPage: 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 podemos ubicar distintos controles o distintas secciones. ScrollBar: si tenemos una lista con muchos elementos el scrollbar nos permite navegarlos. Ejemplo: tenemos una lista con 150 países. Con el ScrollBar podemos subir y bajar por la lista de los mismos utilizando las flechas de desplazamiento. SpinButton: permite aumentar o disminuir valores. Ejemplo: tenemos una lista con tipos de interés y queremos que sean incrementados o disminuidos en cantidades predeterminadas desde el SpinButton. Image: permite introducir imágenes en el Userform. Ejemplo: queremos introducir una fotografía como fondo del Userform para darle un aspecto más profesional. RefEdit: permite hacer referencia a una celda de Excel. Ejemplo: queremos que el usuario seleccione un dato que fue introducido previamente en una celda Excel. Haciendo doble clic en cada control se abrirá una venta donde podremos escribir y asociarle una macro. En la sección siguiente veremos un ejemplo simple sobre como crear un Userform paso a paso. 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.
  • 42. Ejemplo paso a paso Antes de crear un Userform debemos pensar bien cual será su objetivo y cuáles son los controles que utilizaremos. 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 volcarán en una tabla de Excel. Los controles que utilizaremos son: Textbox: para que el usuario ingrese los datos Label: para darle el nombre e 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: 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
  • 43. 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. Ahora, la barra de título del Userform es más apropiada para nuestro propósito y para darle mejor información al usuario. 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.
  • 44. 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. 5.1 En el Cuadro de Herramientas hacemos clic en el botón Label (etiqueta de texto). 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.
  • 45. 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: * 1 TextBox cuyo (Name) sea UFEdad, con una etiqueta de texto (Label) Edad * 1 TextBox cuyo (Name) sea UFFecha, con una etiqueta de texto (Label) Fecha Nac. Es muy importante que no olvides asignar bien los nombres (Name) a los Textbox, si no la macro dará error. Puedes revisar los pasos 4 y 5 para recordar como hacerlo. Si los textbox no quedan alineados se pueden alinear de la siguiente forma: 1. Clic en el primer TextBox 2. Manteniendo pulsada la tecla MAYUS, selecciona 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 pueden agregar botones de comando o CommandButons. 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 CommandButton. 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.
  • 46. 7.6 Repetimos los pasos anteriores para agregar otro CommandButton llamado UFCerrar y nombre Cerrar. 7.8 Si fuese necesario podemos reubicar los botones dentro del Userform. Es muy importante que no olvides asignar bien los nombres (Name) a los CommandButtons, si no la macro dará error. Esto se explica en el paso 7.3 y luego deberás repetirlo para el otro botón, tal cual se indica en el paso 7.6. 8. Agregamos el código al botón Agregar 8.1 Seleccionamos el botón 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: Private Sub UFAgregar_Click() 'definimos las variables 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 ' Copia los datos a la tabla Excel ws.Cells(iFila, 1).Value = Me.UFNombre.Value ws.Cells(iFila, 2).Value = Me.UFEdad.Value
  • 47. 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. No te preocupes si no comprendes el código. Hay muchos objetos, propiedades y métodos nuevos. Todos ellos se explican mejor en la 2º parte de este manual. 9. Agregamos el código al botón Cerrar 9.1 Seleccionamos el botón 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 Cerrar 10.2 En la Ventana Propiedades cambiamos la propiedad Cancel a True. Probar el Userform Ya podemos probar el funcionamiento del 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. 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.
  • 48. 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. Varios En este capítulo se comentan temas diversos pero que no dejan de ser importantes sobre macros. 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
  • 49. End Sub Por ejemplo, tenemos una SuperMacro que realiza la función siguiente: 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
  • 50. La palabra Call se puede omitir pero recomendamos utilizarla para identificar mejor que estamos llamando otras macros. Como se ve 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 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()
  • 51. 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. Las estructuras reconocidas son aquellas que siempre se deben respetar y se explican mejor en la 2º parte del manual, capítulo "Estructuras". 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, como se ve a continuación. 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 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 (existe una estructura If - End If que se explica mejor en la 2º parte del manual, capítulo "Estructuras"). 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. Este lo puedes hacer posicionándote en la primera fila de la macro y luego
  • 52. presionar la tecla F8. De esta forma se irá resaltando con amarillo y ejecutando cada fila, hasta que llegues a la que produce el error. También puedes 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 "empaquetarlas" 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. Para acceder a los complementos puedes hacerlo desde el menú Herramientas > Complementos de la hoja Excel, y verás un cuadro similar al que se muestra a continuación: 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 debes crear tus macros normalmente, desde el editor de macros 2. Luego debes 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 debes elegir la opción Complemento de Microsoft Excel, que suele ser la última de las opciones.
  • 53. 4. Deberás elegir un nombre para tu complemento y guardarlo normalmente. Dicho archivo se guardará automáticamente con la extensión XLA. 5. Para instalar el complemento debes hacerlo desde el menú Herramientas > Complementos y luego la opción Examinar, tal como te señalábamos al comienzo. Deberás buscar el directorio donde guardaste el archivo XLA y seleccionarlo. Seguridad de macros Excel posee 3 niveles de seguridad de macros. Los mismos se pueden definir desde el menú Excel 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.
  • 54. Firma digital Cuando se abre un libro Excel que contiene macros, aparece un mensaje de aviso indicando si se desean habilitar o deshabilitar las mismas. Si quieres ejecutar las macros y que no vuelva a aparecer dicho mensaje, deberás crear una Firma Digital. Para crear una firma digital hay que ejecutar un archivo llamado Selfcert.exe (en mi caso particular se encuentra ubicado en C:Archivos de programaMicrosoft OfficeOffice). Si no lo tienes allí, puedes buscarlo en tu PC con la opción de buscar archivos. 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. Macros privadas Recuerda que puedes visualizar las macros de tu libro desde el menú Excel Herramientas > Macro > Macros. Verás que se abre un cuadro como el siguiente:
  • 55. En el mismo figuran los nombres de las macros creadas, así que solo tienes que seleccionar la macro y luego hacer clic en el botón de Ejecutar . Si por alguna razón no desearas que figuren las macros del libro en dicho cuadro puedes hacerlo utilizando la instrucción Private cuando escribas tu macro. Debes utilizar dicha instrucción delante de la palabra Sub. De este modo solo ocultarás la macro en cuestión. Ejemplo: Private Sub MiMacro() 'Esta macro no aparecerá en la lista de macros 'Código de tu macro aquí End Sub Si tienes muchas macros en el módulo y quieres ocultarlas todas, en lugar de escribir la palabra Private en cada una de ellas, puedes colocar la siguiente instrucción al comienzo de tu 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 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í End Sub
  • 56. 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 Esto se explica mejor en la 2º parte del manual, capítulo "Estructuras". 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. 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
  • 57. 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 Fin Aquí finaliza la 1º Parte del Manual.