Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 87

P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

OBJETIVO DEL MÓDULO

Al finalizar el Curso de Programacion de Macros en Excel, el participante podrá automatizar el


trabajo de planillas de calculo aplicando las macros automáticas y la programación en Visual Basic.

Contenido
 Introduccion a las Macros en Excel
 El editor de Visual Basic
 Creacion de Macros
 Aplicaciones con Macros

Actividades Generales.
 Exposiciones del Facilitador sobre los temas.
 Participacion individual sobre temas y ejercicios de apoyo.
 Desarrollo de ejercicios y ejemplos complementarios.
 Evaluaciones de las unidades y contenidos del modulo.
 Exposición complementaria y de reforzamiento por el Facilitador y los participantes.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 1 de 87 DON P EDRO R ICALDONE Duracion: 20 Horas
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Indice

UNIDAD 1 ....................................................................................................................................... 4
Introduccion a las Macros en Excel ........................................................................................................... 4
Qué es una Macro ......................................................................................................................................... 5
La pestaña de Desarrollador ......................................................................................................................... 8
Grabar y guardar macros............................................................................................................................. 10
Seguridad de macros ................................................................................................................................... 12
Grabando una macro en el libro de macros personal ................................................................................. 13
Asignar un botón a una Macro .................................................................................................................... 15
UNIDAD 2 ..................................................................................................................................... 19
El Editor de Visual Basic ........................................................................................................................... 19
Visual Basic o IDE......................................................................................................................................... 20
Estructura de una macro ............................................................................................................................. 21
Formas de ejecutar una macro ................................................................................................................... 22
En qué consiste programar en VBA ............................................................................................................. 30
Objetos, propiedades y métodos ................................................................................................................ 32
Primer macro manual .................................................................................................................................. 33
Comentarios en VBA ................................................................................................................................... 36
UNIDAD 3 ..................................................................................................................................... 38
Creacion de Macros ................................................................................................................................. 38
Rangos de celdas con VBA........................................................................................................................... 39
filas y columnas con VBA ............................................................................................................................. 41
Trabajo con hojas en VBA............................................................................................................................ 45
Trabajo con libros con VBA ......................................................................................................................... 47
Acciones en Excel en VBA -Objeto Application ........................................................................................... 48
formatos de celda con VBA ......................................................................................................................... 50

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 2 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

formatos de número con VBA ..................................................................................................................... 52


Gestion errores en VBA ............................................................................................................................... 56
UNIDAD 4 ..................................................................................................................................... 66
Aplicaciones con Macros ......................................................................................................................... 66
Formularios en Excel. .................................................................................................................................. 67
Empleo de Controles Active X. .................................................................................................................... 76
Estructuras de Programación en Controles. Los procedimientos de evento. ............................................. 78
Impresion .................................................................................................................................................... 84

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 3 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

UNIDAD 1
Introduccion a las Macros en Excel

 Qué es una Macro


 La Pestaña de Desarrollador
 Grabar y guardar macros
 Seguridad de macros
 Grabando una macro en el libro de macros personal
 Asignar un botón a una Macro

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 4 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Qué es una Macro

Las macros de Excel nos permiten automatizar tareas que realizamos cotidianamente de
manera que podamos ser más eficientes en nuestro trabajo. Una macro no es más que una serie
de comandos o instrucciones que permanecen almacenados dentro de Excel y que podemos
ejecutar cuando sea necesario y cuantas veces lo deseemos.

Una macro es un conjunto de comandos que se almacena en un lugar especial de Excel de


manera que están siempre disponibles cuando los necesites ejecutar.

Por ejemplo, si todas las mañanas creas un reporte de ventas y en ese reporte siempre das el
mismo formato a los textos, se podría crear una macro para que lo haga automáticamente por ti.
Las macros se utilizan principalmente para eliminar la necesidad de repetir los pasos de aquellas
tareas que realizas una y otra vez.

Un lenguaje de programación

Las macros se escriben en un lenguaje de computadora especial que es conocido como Visual
Basic for Applications (VBA). Este lenguaje permite acceder a prácticamente todas las
funcionalidades de Excel y con ello también ampliar la funcionalidad del programa.

Pero no te preocupes si no eres un programador de computadoras, Excel provee de una


herramienta especial que permite crear una macro sin necesidad de conocer los detalles del
lenguaje de programación.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 5 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Aunque si aceptas el desafío y te introduces en el mundo de la programación VBA pronto te


convertirás en un Ninja de Excel. Verás que crear una macro en Excel no es tan complicado y
será una manera fácil y rápida de eliminar esas tareas repetitivas que todos los días te quitan
minutos preciados de tu tiempo.

El lenguaje de las macros en Excel

Las instrucciones de las macros en Excel deben ser escritas en un lenguaje de programación
que sea comprendido por Excel mismo de manera que puedan ser ejecutadas de manera
adecuada. El lenguaje de programación utilizado para este fin lleva el nombre Visual Basic para
Aplicaciones que también es conocido por su abreviatura VBA.

VBA y las macros en Excel

VBA es todo un ambiente de programación que fue pensado para que los desarrolladores
pudieran crear soluciones personalizadas en Excel. A través del lenguaje de programación VBA
tendremos acceso a todas las propiedades y funcionalidades de Excel de manera que podamos
hacer prácticamente cualquier cosa desde nuestras macros en Excel.

En estricto sentido podríamos crear cualquier solución de Microsoft Office utilizando VBA ya sea
Excel, Word, PowerPoint o inclusive Outlook. Cada una de las aplicaciones de Microsoft Office
proporciona los medios adecuados para manipular y extender su funcionalidad a través de VBA.

Dominar las macros en Excel

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 6 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

El verdadero secreto para dominar las macros en Excel radica en aprender a utilizar
adecuadamente el lenguaje de programación VBA y su modelo de objetos. Dicho modelo de
objetos refleja cada una de las partes de Excel en donde la aplicación está representada por el
objeto Application.

El objeto Application representa a Excel mismo podemos entender que los libros de Excel
formarán parte del objeto Application. Los libros de Excel son representados por el objeto
Workbooks y las hojas de cada libro por el objeto Worksheets. Como sabemos, cada hoja está
compuesta por celdas y en VBA podemos acceder una celda o a un rango de celdas a través del
objeto Range.

De esta manera podemos resumir la relación entre estos objetos de la siguiente manera: El objeto
Application representa toda la aplicación, la cual puede contener varios libros de Excel
representados por el objeto Workbooks. Cada libro tiene hojas que están representadas por el
objeto Worksheets y sus celdas pueden ser accedidas a través del objeto Range.

Cada uno de los objetos en VBA tendrá una serie de propiedades y métodos que nos permitirán
crear las instrucciones necesarias dentro de nuestras macros en Excel.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 7 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Beneficios de las macros en Excel

Aprender a crear macros en Excel impulsará grandemente tu productividad con la herramienta


ya que te permitirá automatizar aquellas tareas que realizas de manera manual día tras día. En
lugar de realizar esas tareas repetitivas podrás ejecutarlas con un solo clic.

Las macros en Excel también te ayudarán a crear funciones personalizadas que harán tareas
que no son posibles realizar con las funciones predeterminadas de Excel y por lo tanto podrás
realizar cálculos y operaciones con tus datos que de otra manera serían casi imposibles. Además,
las macros en Excel te permitirán crear aplicaciones profesionales a la medida de tus
necesidades y que significarán un gran ahorro de cientos de horas de trabajo manual en Excel.

Una vez que te familiarices con las macros en Excel comenzarás a vislumbrar toda una nueva
gama de oportunidades para desarrollar y aplicar el potencial de Excel en tus actividades
cotidianas.

La pestaña de Desarrollador

Mostrar la ficha Programador

Si quieres escribir una nueva macro o ejecutar una macro previamente creada, entonces
debes habilitar la ficha Programador dentro de la cinta de opciones. Para mostrar esta ficha
sigue los siguientes pasos.

Haz clic en la ficha Archivo y elige la sección Opciones. Se mostrará el cuadro de


diálogo Opciones de Excel donde deberás seleccionar la opción Personalizar cinta de opciones.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 8 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

En el panel de la derecha deberás asegurarte de seleccionar la ficha Programador.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 9 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Grupos de la ficha Programador

El grupo Código tienes los comandos necesarios para iniciar el Editor de Visual Basic donde se
puede escribir directamente código VBA. También nos permitirá ver la lista de macros disponibles
para poder ejecutarlas o eliminarlas. Y no podríamos olvidar mencionar que en este grupo se
encuentra el comando Grabar macro el cual nos permite crear una macro sin necesidad de saber
sobre programación en VBA.

El grupo Complementos nos permite administrar y habilitar complementos como el Solver.

El grupo Controles incluye funcionalidad para agregar controles especiales a las hojas de Excel
como los controles de formulario que son botones, casillas de verificación, botones de opción
entre otros más que serán de gran utilidad para ampliar la funcionalidad de Excel.

El grupo XML permite importar datos de un archivo XML así como opciones útiles para codificar
archivos XML. Finalmente el grupo Modificar solamente contiene el comando Panel de
documentos.

Aunque pueden parecer intimidantes los comandos de la ficha Programador con el paso del
tiempo te irás familiarizando poco a poco con cada uno de ellos.

Grabar y guardar macros

Puedes crear una macro utilizando el lenguaje de programación VBA, pero el método más sencillo
es utilizar la grabadora de macros que guardará todos los pasos realizados para ejecutarlos
posteriormente.

La grabadora de macros almacena cada acción que se realiza en Excel, por eso es conveniente
planear con antelación los pasos a seguir de manera que no se realicen acciones innecesarias
mientras se realiza la grabación. Para utilizar la grabadora de macros debes ir a la ficha
Programador y seleccionar el comando Grabar macro.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 10 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Al pulsar el botón se mostrará el cuadro de diálogo Grabar macro.

En el cuadro de texto Nombre de la macro deberás colocar el nombre que identificará de manera
única a la macro que estamos por crear. De manera opcional puedes asignar un método
abreviado de teclado el cual permitirá ejecutar la macro con la combinación de teclas
especificadas.

La lista de opciones Guardar macro en permite seleccionar la ubicación donde se almacenará la


macro.

Este libro. Guarda la macro en el libro actual.

Libro nuevo. La macro se guarda en un libro nuevo y que pueden ser ejecutadas en cualquier
libro creado durante la sesión actual de Excel.

Libro de macros personal. Esta opción permite utilizar la macro en cualquier momento sin importar
el libro de Excel que se esté utilizando.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 11 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

También puedes colocar una Descripción para la macro que vas a crear. Finalmente debes pulsar
el botón Aceptar para iniciar con la grabación de la macro. Al terminar de ejecutar las acciones
planeadas deberás pulsar el botón Detener grabación para completar la macro.

Seguridad de macros

La seguridad es un tema importante al hablar de macros en Excel. Si abres algún archivo que
contenga una macro maliciosa puedes causar algún tipo de daño al equipo. De manera
predeterminada Excel no permite ejecutar macros automáticamente.

Sin embargo, si estás creando tus propias macros y deseas remover esta protección porque
sabes que no existe código malicioso, entonces puedes modificar la configuración para habilitar
todas las macros. Para hacerlo debes seguir los siguientes pasos.

Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del cuadro de diálogo mostrado
selecciona la opción Centro de confianza y posteriormente pulsa el botón Configuración del
centro de confianza. Se mostrará el cuadro de diálogo Centro de confianza.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 12 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Dentro de la sección Configuración de macros selecciona alguna de las opciones disponibles.

 Deshabilitar todas las macros sin notificación. Deshabilita las macros y permite
ejecutar solamente aquellas que estén almacenadas en un lugar confiable. Los lugares
confiables se configuran en la sección Ubicaciones de confianza del mismo cuadro de
diálogo.

 Deshabilitar todas las macros con notificación. Muestra una alerta de seguridad
advirtiendo sobre la intención de ejecutar una macro de manera que se pueda decidir si
se desea ejecutar. Esta es la opción predeterminada de Excel.

 Deshabilitar todas las macros excepto las firmadas digitalmente. Solamente se


podrán ejecutar las macros que están firmadas digitalmente.

 Habilitar todas las macros. Permite ejecutar todas las macros sin enviar alguna
notificación al usuario. Esta opción es útil si se ejecutan múltiples macros totalmente
confiables. Esta opción es la que corre los mayores riesgos al ejecutar una macro de una
fuente desconocida.

Una vez seleccionada la opción deseada se debe pulsar el botón Aceptar para hacer los cambios
permanentes.

Grabando una macro en el libro de macros personal

En esta ocasión mostraré cómo crear una macro en Excel utilizando la grabadora de macros. La
macro será un ejemplo muy sencillo, pero permitirá ilustrar el proceso básico de creación.

Voy a crear una macro que siempre introduzca el nombre de tres departamentos de una empresa
y posteriormente aplique un formato especial al texto. Para iniciar la grabación debes ir al
comando Grabar macro que se encuentra en la ficha Programador lo cual mostrará el siguiente
cuadro de diálogo.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 13 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Observa cómo he colocado un nombre a la macro y además he especificado el método abreviado


CTRL+d para ejecutarla posteriormente. Una vez que se pulsa el botón Aceptar se iniciará la
grabación. Observa con detenimiento los pasos.

Al terminar los pasos se pulsa el comando Detener grabación y la macro habrá quedado
guardada. Para ejecutar la macro recién guardada seleccionaré una nueva hoja de Excel y
seleccionaré el comando Macros.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 14 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Al pulsar el comando Macros se mostrará la lista de todas las macros existentes y de las cuales
podrás elegir la más conveniente. Al hacer clic sobre el comando Ejecutar se realizarán todas las
acciones almacenadas en la macro y obtendrás el resultado esperado. Por supuesto que si
utilizas el método abreviado de teclado de la macro entonces se omitirá este último cuadro de
diálogo.

Asignar un botón a una Macro

Después de crear una macro, puede asignar a un botón haga clic en para ejecutar la
macro. Puede asignar una macro a un botón de la barra de herramientas de acceso rápido o a
un botón en su propio grupo personal de la cinta de opciones.

Si desea que un botón de macro esté disponible en otros libros, puede asignar una macro que se
ha creado en un libro personal.

Agregar un botón de macro a la barra de herramientas de acceso rápido

1. Haga clic en archivo > Opciones > barra de herramientas de acceso rápido.

2. En la lista comandos disponibles en , haga clic en Macros.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 15 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

3. Seleccione la macro que desea asignar un botón.

Un nombre de macro que comienza con el nombre de la personal libro (PERSONAL. XLSB)
estará disponible en otros libros.

4. Haga clic en Agregar para mover la macro a la lista de botones en la barra de


herramientas de acceso rápido.

5. Para reemplazar el icono de macro enigmático con un botón diferente para la macro, haga
clic en Modificar.

6. En símbolo, seleccione el icono de botón de la macro.

7. Para usar un nombre más sencillo para el botón, en el cuadro nombre para mostrar ,
escriba el nombre que desee.

Puede introducir un espacio en el nombre del botón.

8. Haga clic en Aceptar dos veces.

El nuevo botón aparece en la barra de herramientas acceso rápido, donde puede hacer clic en él
para ejecutar la macro.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 16 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

SUGERENCIA: Cuando guarde el libro, los botones se asigna a las macros en el libro personal
estarán disponible en todos los libros que abra.

Agregar un botón de macro a su propio grupo de la cinta de opciones

1. Haga clic en archivo > Opciones > Personalizar cinta de opciones.

2. En Personalizar la cinta de opciones, en la lista Pestañas principales, active la


casilla Desarrollador si no lo está ya.

3. Seleccione la ficha donde desea agregar su propio grupo.

Por ejemplo, seleccione Inicio, para agregar el grupo a la pestaña Inicio .

4. Seleccione nuevo grupo.

Nuevo grupo (personalizado) que agrega a la pestaña elegida.

5. Para usar un nombre más adecuado para el nuevo grupo, haga clic en Cambiar nombre,
escriba el nombre que desee en el cuadro nombre para mostrar y, a continuación, haga
clic en Aceptar.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 17 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Puede introducir un espacio en el nombre. Por ejemplo, escriba Mi Macros.

6. Para agregar una macro al grupo, en la lista comandos disponibles en , haga clic
en Macros.

7. Seleccione la macro que desea agregar a su nuevo grupo y, a continuación, haga clic
en Agregar. La macro se agrega al grupo de Macros de mi .

Un nombre de macro que comienza con el nombre de la personal libro (PERSONAL. XLSB)
estará disponible en otros libros.

8. Para usar un nombre más sencillo, haga clic en Cambiar nombrey escriba el nombre
deseado en el cuadro Nombre para mostrar.

Puede introducir un espacio en el nombre.

9. En símbolo, seleccione el icono de botón de la macro.

10. Haga clic en Aceptar dos veces.

El nuevo grupo aparece en la pestaña elegida, donde puede hacer clic en el botón para ejecutar
la macro.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 18 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

UNIDAD 2
El Editor de Visual Basic

 Visual Basic o IDE


 Estructura de una macro
 Formas de ejecutar una macro
 En qué consiste programar en VBA
 Objetos, propiedades y métodos
 Primer macro manual
 Comentarios en VBA

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 19 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Visual Basic o IDE

El Editor de Visual Basic, VBE por sus siglas en inglés, es un programa independiente a Excel
pero fuertemente relacionado a él porque es el programa que nos permite escribir código VBA
que estará asociado a las macros.

Existen al menos dos alternativas para abrir este editor, la primera de ellas es a través del
botón Visual Basic de la ficha Programador.

El segundo método para abrir este programa es, en mi opinión, el más sencillo y rápido y que es
a través del atajo de teclado: ALT + F11. El Editor de Visual Basic contiene varias ventanas y
barras de herramientas.

En la parte izquierda se muestra el Explorador de proyectos el cual muestra el proyecto VBA


creado para el libro actual y además muestra las hojas pertenecientes a ese libro de Excel. Si por
alguna razón no puedes visualizar este módulo puedes habilitarlo en la opción de menú Ver y
seleccionando la opción Explorador de proyectos.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 20 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

El Explorador de proyectos también nos ayuda a crear o abrir módulos de código que se serán
de gran utilidad para reutilizar todas las funciones de código VBA que vayamos escribiendo.

Dentro del Editor de Visual Basic puedes observar una ventana llamada Inmediato que está en
la parte inferior. Esta ventana es de mucha ayuda al momento de escribir código VBA porque
permite introducir instrucciones y observar el resultado inmediato. Además, desde el código VBA
podemos imprimir mensajes hacia la ventana Inmediato con el comando Debug.Print de manera
que podamos depurar nuestro código. Si no puedes observar esta ventana puedes mostrarla
también desde el menú Ver.

El área más grande en blanco es donde escribiremos el código VBA. Es en esa ventana en donde
escribimos y editamos las instrucciones VBA que dan forma a nuestras macros.

Es importante familiarizarnos con el Editor de Visual Basic antes de iniciar con la creación de
macros.

Estructura de una macro

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 21 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Formas de ejecutar una macro

Excel ofrece varias maneras de ejecutar una macro. Una macro es una acción o un conjunto de
acciones que permiten automatizar tareas. Para ejecutar una macro, puede hacer lo siguiente:

 Vaya a la pestaña Programador y, en el grupo Código, haga clic en Macros

 Presione Ctrl más una tecla de método abreviado, según la configuración de ejecución de
la macro.

 Haga clic en un botón de la barra de herramientas de acceso rápido o en un grupo


personalizado de la cinta.

 Haga clic en un área de un objeto, gráfico o control.

 Ejecute automáticamente una macro cuando se abre un libro.

o Ejecutar una macro de Excel presionando Ctrl más una tecla de método
abreviado

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 22 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

o Ejecutar una macro de Excel mediante un botón de la barra de


herramientas de acceso rápido
o Ejecutar una macro de Excel mediante un botón de un grupo
personalizado de la cinta de opciones
o Ejecutar una macro de Excel, haga clic en un área de un objeto gráfico
o Configurar una macro para que se ejecute al abrir un libro de Excel

Ejecutar la macro

1. Abra el libro que contiene la macro.

2. En la pestaña Programador, en el grupo Código, haga clic en Macros.

3. En el cuadro Nombre de la macro, haga clic en la macro que desea ejecutar.

4. Siga uno de estos procedimientos:

o Para ejecutar una macro en un libro de Excel, haga clic en Ejecutar.


Sugerencia también puede presionar Ctrl + F8 para ejecutar la macro. Puede
interrumpir la ejecución de la macro presionando Esc.

o Para ejecutar una macro desde un módulo de Microsoft Visual Basic para
Aplicaciones (VBA), haga clic en Editar y, en el menú Ejecutar, haga clic
en Ejecutar Sub/UserFormo presione F5.

Ejecutar una macro de Excel presionando Ctrl más una tecla de método abreviado

1. Si la pestaña Programador no está disponible, haga lo siguiente para mostrarla:

a. Haga clic en la pestaña Archivo, elija Opciones y después haga clic en la


categoría Personalizar cinta de opciones.

b. En la lista Pestañas principales, seleccione la casilla Programador y después


haga clic en Aceptar.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 23 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

2. En la pestaña Programador, en el grupo Código, haga clic en Macros.

3. En el cuadro Nombre de la macro, haga clic en la macro a la que desea asignar una
combinación de teclas con Ctrl.

4. Haga clic en Opciones. Aparecerá el cuadro de diálogo Opciones de la macro.

5. En el cuadro Tecla de método abreviado, escriba cualquier letra minúscula o mayúscula


que desee usar con la tecla Ctrl.

Nota La tecla de método abreviado invalidará cualquier tecla de método abreviado


predeterminada equivalente en Excel mientras esté abierto el libro que contiene la macro.

6. Escriba una descripción de la macro en el cuadro Descripción.

7. Haga clic en Aceptar para guardar los cambios y, a continuación, en Cancelar para
cerrar el cuadro de diálogo Macro.

Ejecutar una macro de Excel mediante un botón de la barra de herramientas de acceso


rápido

Para ejecutar una macro desde un botón de la barra de herramientas de acceso rápido, primero
debe agregar el botón a la barra de herramientas. Para ello:

1. Haga clic en la pestaña Archivo, en Opciones y haga clic en Barra de herramientas de


acceso rápido.

2. En la lista Comandos disponibles en, seleccione Macros.

3. En la lista, haga clic en la macro que creó y, a continuación, en Agregar.

4. Para cambiar la imagen del botón de la macro, seleccione la macro en el cuadro al que la
agregó y haga clic en Modificar.

5. En Símbolo, haga clic en la imagen de botón que desea.

6. Para cambiar el nombre de la macro que aparece al posicionar el cursor sobre el botón,
escriba el nombre que desea en el cuadro Nombre para mostrar.

7. Haga clic en Aceptar para agregar el botón de la macro a la barra de herramientas de


acceso rápido.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 24 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

8. En la Barra de herramientas de acceso rápido, haga clic en el botón de la macro que


acaba de agregar.

Ejecutar una macro de Excel mediante un botón de un grupo personalizado de la cinta de


opciones

Si aprovecha la capacidad de personalización de la cinta de opciones, puede crear un grupo


personalizado que aparezca en una pestaña de la cinta de opciones y, a continuación, asignar
una macro a un botón de ese grupo. Por ejemplo, puede agregar un grupo personalizado
denominado "Mis macros" a la pestaña Programador, y agregar una macro al nuevo grupo que
aparece como un botón.

Ejecutar una macro de Excel, haga clic en un área de un objeto gráfico

Puede crear una zona activa en un gráfico donde los usuarios pueden hacer clic para ejecutar
una macro.

1. En la hoja de cálculo, inserte un objeto gráfico, como una imagen, una imagen
prediseñada, una forma o un gráfico SmartArt.

2. Para crear una zona activa en el objeto existente, en la pestaña Insertar, en el


grupo Ilustraciones, haga clic en Formas, seleccione la forma que desea usar y, a
continuación, dibuje dicha forma en el objeto existente.

3. Haga clic con el botón secundario en la zona activa que ha creado y, a continuación,
elija Asignar macro.

4. Seleccione la macro que desee usar y haga clic en Aceptar.

5. Vuelva a hacer clic con el botón secundario en la forma y haga clic en Formato de forma.

Aparece el panel de tareas Formato de forma.

6. En Relleno, haga clic en Sin relleno y en Línea, seleccione Sin línea.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 25 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Configurar una macro para que se ejecute al abrir un libro de Excel

Si graba una macro y la guarda con el nombre "Auto_abrir", la macro se ejecutará cada vez que
se abra el libro que contiene la macro. Otra forma de ejecutar automáticamente una macro al abrir
un libro es escribir un procedimiento de VBA en el evento Open del libro usando el Editor de
Visual Basic. El evento Open es un evento de libro integrado que ejecuta su código de macro
cada vez que se abre el libro.

Crear una macro Auto_abrir

1. Si la pestaña Programador no está disponible, haga lo siguiente para mostrarla:

a. Haga clic en la pestaña Archivo y, a continuación, elija Opciones.

b. En la categoría Personalizar cinta, en la lista Pestañas principales, active la


casilla Programador y, a continuación, haga clic en Aceptar.

2. Si recibe un mensaje de advertencia sobre macros, necesitará establecer el nivel de


seguridad temporalmente para habilitar todas las macros.

a. En la ficha Programador, en el grupo código, haga clic en seguridad de macros.

b. En la categoría Configuración de macros, bajo Configuración de macros, haga


clic en Habilitar todas las macros (puede ejecutarse código posiblemente
peligroso y no se recomienda) y, a continuación, haga clic en Aceptar.
Note Para ayudar a evitar que se ejecute código potencialmente peligroso,
recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan
todas las macros cuando termine de trabajar con macros.

3. Si desea guardar la macro con un libro determinado, abra primero ese libro.

4. En la pestaña Programador, en el grupo Código, haga clic en Grabar macro.

5. En el cuadro Nombre de macro, escriba Abrir_automáticamente.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 26 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

6. En la lista Guardar macro en, seleccione el libro donde desea almacenar la macro.
Sugerencia si desea que una macro esté disponible siempre que utilice Excel,
seleccione Libro de macros Personal. Al seleccionar esta opción, Excel crea un libro
oculto de macros personal (Personal.xlsb), si aún no existe y guarda la macro allí.

En Windows 7, Personal.xlsb se guarda en C:\Users\nombre de


usuario\AppData\Roaming\Microsoft\Excel\XLStart. En Windows Vista, este libro se guarda en la
carpeta de name\AppData\Local\Microsoft\Excel\XLStart C:\Users\user. Si no lo encuentra allí, se
puede que haya guardado en la subcarpeta móviles en lugar de Local. Libros en la carpeta
XLStart se abren automáticamente cada vez que inicie Excel.

Si desea que se inicie automáticamente una macro del libro de macros personal en otro libro,
también debe guardar ese libro en la carpeta XLStart, de forma que ambos libros se abran cuando
se inicie Excel.

1. Haga clic en Aceptar y realice las acciones que desea grabar.

2. Una vez que haya grabado todas las acciones, en la ficha Programador, en el

grupo código, haga clic en Detener grabación .


Sugerencia también puede hacer clic en Detener grabación en el lado izquierdo de la
barra de estado.

Notas

 Si en el paso 6 eligió guardar la macro en Este libro o en Libro nuevo, guarde o mueva
el libro a la carpeta XLStart del PC.

 La grabación de una macro Auto_abrir tiene las limitaciones siguientes:

o Si el libro en donde se guarda la macro Auto_abrir ya contiene un procedimiento


de VBA en su evento Open, el procedimiento de VBA del evento Open invalidará
todas las acciones contenidas en la macro Auto_abrir.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 27 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

o Las macros Auto_abrir se omiten cuando se abren libros mediante programación


utilizando el método Open.

o Una macro Auto_abrir se ejecuta antes de que se abra cualquier otro libro. Por lo
tanto, si graba acciones que desea que realice Excel en el libro predeterminado
Libro1 o en un libro cargado desde la carpeta XLStart, la macro Auto_abrir
producirá un error cuando reinicie Excel porque la macro se ejecuta antes de abrir
los libros de inicio y el predeterminado.

Si encuentra estas limitaciones, en lugar de grabar una macro Auto_abrir, debe


crear un procedimiento de VBA para el evento Open como se describe en la
siguiente sección de este artículo.

 Si desea iniciar Excel sin ejecutar una macro Auto_abrir, mantenga presionada la tecla
Mayús al abrir el programa.

Crear un procedimiento de VBA para el evento Open de un libro

El ejemplo siguiente utiliza el evento Open para ejecutar una macro al abrir el libro.

1. Si la pestaña Programador no está disponible, haga lo siguiente para mostrarla:

a. Haga clic en la pestaña Archivo y, a continuación, elija Opciones.

b. En la categoría Personalizar cinta, en la lista Pestañas principales, active la


casilla Programador y, a continuación, haga clic en Aceptar.

2. Si recibe un mensaje de advertencia sobre macros, necesitará establecer el nivel de


seguridad temporalmente para habilitar todas las macros.

a. En la ficha Programador, en el grupo código, haga clic en seguridad de macros.

b. En la categoría Configuración de macros, bajo Configuración de macros, haga


clic en Habilitar todas las macros (puede ejecutarse código posiblemente

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 28 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

peligroso y no se recomienda) y, a continuación, haga clic en Aceptar.


Note Para ayudar a evitar que se ejecute código potencialmente peligroso,
recomendamos que vuelva a cualquiera de las configuraciones que deshabilitan
todas las macros cuando termine de trabajar con macros.

3. Guarde y cierre todos los libros abiertos.

4. Abra el libro donde desea agregar la macro o cree un nuevo libro.

5. En la pestaña Programador, en el grupo Código, haga clic en Visual Basic.

6. En la ventana Explorador de proyectos, haga clic en el objeto ThisWorkbook y, a


continuación, haga clic en Ver código.

Sugerencia si la ventana Explorador de proyectos no está visible, en el menú Ver, haga


clic en Explorador de proyectos.

7. En la lista de objeto encima de la ventana de código (la palabra General ),


seleccione libro. Esto crea automáticamente un procedimiento vacío para el
evento Open , como esta:

Workbook_Open (Private Sub)

End Sub

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 29 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

8. Agregue las líneas de código siguientes al procedimiento:

Workbook_Open (Private Sub)

fecha CuadroMsj
Worksheets("Sheet1"). Range("a1"). Valor = fecha

End Sub

9. Cambie a Excel y guarde el libro como libro habilitado para macros (.xlsm).

10. Cierre y vuelva a abrir el libro. Al abrir de nuevo el libro, Excel ejecuta el procedimiento
Private Sub Workbook_Open, que muestra la fecha actual en un cuadro de mensaje.

11. En el cuadro de mensaje, haga clic en Aceptar.

Observe que la celda A1 de la Hoja1 también contiene la fecha, como resultado de


ejecutar el procedimiento Private Sub Workbook_Open.

En qué consiste programar en VBA

Ha aprendido cómo grabar una macro y ha echado un vistazo tras bastidores para ver cómo se
crean los procedimientos de VBA. El siguiente paso es aprender unos cuantos aspectos básicos
más de la programación para sentar una base sólida para la programación en VBA.

Conceptos básicos de VBA: objetos, métodos y propiedades

Lo primero que debe saber es que el código de VBA se ensambla de ta modo que simula como
usted describiría las cosas que le rodean. Está compuesto por los cuatro conceptos indicados a
continuación:

Concepto Descripción Ejemplo

Objeto Una "cosa" Hoja de cálculo

Método Acción, o algo que una "cosa" puede hacer Agregar una "cosa"

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 30 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Concepto Descripción Ejemplo

Propiedad Descripción, o característica de una "cosa" Nombre

Colección Un grupo de "cosas" Hojas de cálculo

Juntos, estos cuatro conceptos son lo que los programadores llaman un modelo de programación
orientada a objetos. Esta es una manera de realizar una tarea describiendo la "cosa" o el
"Objeto/Colección" sobre el que desea actuar, las características específicas o "Propiedad" que
describen la cosa sobre la que desea actuar y el cómo o el "Método" que desea utilizar para
realizar la acción.

Anteriormente grabó su primera macro de VBA. Veamos ahora en el código generado por la
grabadora de macros.

Para ver el código, haga clic en Herramientas > Macro > Editor de Visual Basic. Esto es lo que
verá:

Sub DeleteRow()
'
' DeleteRow Macro
'
'
Selection.Rows.Delete
End Sub
Vamos a revisar cada línea de esta macro:

1. Sub DeleteRow

Todas las macros comienzan con Sub y acaban con End Sub. En el ejemplo anterior,
DeleteRowes el nombre de la macro o del procedimiento que ha creado.

2. ' DeleteRow Macro

Esto se conoce como comentarios. Son útiles para describir los que sucede en el código. Esto es
especialmente útil cuando el código se vuelve más complejo y otras personas necesitan
mantenerlo, o incluso cuando revisa su código pasado un tiempo. Los comentarios siempre

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 31 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

comienzan con una sola cita, y el color frontal se marca en verde en el Editor de Visual Basic para
ayudar a diferenciar comentarios de otras partes de su código.

3. Selection.Rows.Delete

Esta línea de código indica a Word qué hacer. En este caso, selecciona la fila y la elimina.

Objetos, propiedades y métodos

Los objetos en Excel (VBA) son cosas. Una celda es un objeto, una hoja es un objeto, un libro es un objeto y de
esta manera existen muchos más objetos en Excel. A esto lo conocemos como el modelo de objetos de Excel.

Cada uno de los objetos de Excel tiene propiedades y métodos. Las propiedades son las características del
objeto y los métodos son las acciones que el objeto puede hacer.

Propiedades de un objeto

Si una persona fuera un objeto de Excel sus propiedades serían el color de sus ojos, el color de su cabello, su
estatura, su peso. De la misma manera, un objeto de Excel tiene propiedades por ejemplos, una celda (Range)
tiene las propiedades valor (Value) y dirección (Address) entre muchas otras. Estas propiedades describen
mejor al objeto.

Métodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos serían correr, caminar,
hablar, dormir. Los métodos son las actividades o acciones que el objeto puede realizar. Los objetos de Excel
se comportan de la misma manera que el ejemplo de una persona. Una celda (Range) tiene
los métodos activar (Activate), calcular (Calculate), borrar (Clear) entre muchos más.

Utilizando las propiedades y los métodos

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 32 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Para acceder a las propiedades y métodos de un objeto lo hacemos a través de una nomenclatura especial.
Justo después del nombre del objeto colocamos un punto seguido del nombre de la propiedad o del método.
Observa este ejemplo donde hacemos uso de la propiedad Value para la celda A1:

Range("A1").Value = "Hola"

De esta manera asignamos una cadena de texto al valor de la celda A1. Ahora bien, si queremos borrar ese
valor que acabamos de colocar en la celda podemos utilizar el método Clear de la siguiente manera:

Range("A1").Clear

Ver todas las propiedades y métodos

Los objetos tienen muchas propiedades y métodos y a veces es difícil pensar que los llegaremos a memorizar
todos por completo. Sin embargo, el Editor de Visual Basic es de gran ayuda porque justamente al momento
de escribir nuestro código nos proporciona la lista completa de propiedades y métodos para un objeto.

Esto sucede al momento de introducir el punto después del nombre del objeto. Puedes distinguir entre las
propiedades y métodos porque tienen iconos diferentes. En la imagen de arriba los métodos son los que
tienen el icono de color verde.

Recuerda, los objetos son cosas en Excel y sus características las llamamos propiedades las cuales nos
ayudan a definir al objeto. Los métodos son las acciones que cada objeto puede realizar.

Primer macro manual

Ahora que ya sabes lo que es el Editor de Visual Basic para Aplicaciones puedo mostrarte un
ejemplo muy sencillo para crear una macro. Lo primero que debes hacer es ir a la ficha
Programador y hacer clic en el botón Visual Basic.

Creación de un módulo

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 33 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Una vez dentro del Editor debes hacer clic derecho sobre el título del proyecto y dentro del menú
seleccionar la opción Insertar y posteriormente Módulo.

Se creará la sección Módulos y dentro de la misma se mostrará el módulo recién creado. Puedes
saber que el módulo está abierto porque su nombre se muestra en el título entre corchetes.

Si el módulo no está abierto solamente deberás hacer doble clic sobre él. Posiciónate en el área
de código e introduce las siguientes instrucciones:

Antes de avanzar explicaré con detalle las instrucciones mostradas.

Subrutinas en VBA

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 34 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

El primer concepto que explicare es la instrucción Sub que es la abreviación de la


palabra subrutina. Una subrutina no es más que un conjunto de instrucciones que se ejecutarán
una por una hasta llegar al final de la subrutina que está especificado por la instrucción End Sub.

Las subrutinas nos ayudan a agrupar varias instrucciones de manera que podamos organizar
adecuadamente nuestro código. Una subrutina siempre tiene un nombre el cual debe ser
especificado justo después de la instrucción Sub y seguido por paréntesis.

La función MsgBox en VBA

La subrutina que acabamos de crear para este ejemplo solamente tiene una instrucción dentro la
cual hace uso de la función MsgBox. Esta función nos ayuda a mostrar una ventana de mensaje
de manera que podamos estar comunicados con el usuario sobre cualquier error o advertencia
que necesitamos darle a conocer. Para este ejemplo he utilizado la forma más sencilla de la
función MsgBox la cual solamente tiene un solo argumento que es precisamente el mensaje que
necesitamos mostrar en pantalla al usuario.

Ejecutar macro

Para probar nuestro código bastará con pulsar el botón Ejecutar que se encuentra dentro de la
barra de herramientas.

En cuanto se pulsa el botón se ejecutará el código recién ingresado y obtendremos el resultado


en pantalla.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 35 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Listo, has creado tu primera macro la cual muestra una ventana de mensajes y despliega el texto
especificado en la función MsgBox. Para guardar la macro recuerda que debes guardar el archivo
como Libro de Excel habilitado para macros, de lo contrario perderás el código del módulo
creado.

Comentarios en VBA

Utilizar comentarios dentro del código VBA es una de las mejores prácticas que debes adoptar
desde que inicias en el mundo de la programación en Excel. Los comentarios harán que tu código
sea fácil de entender.

Un comentario en VBA es una línea dentro del código que no será tomada en cuenta al
momento de realizar la ejecución. Los comentarios serán solo visibles por ti al momento de editar
el código dentro del Editor de Visual Basic.

Para agregar un comentario será suficiente con colocar una comilla sencilla (‘) al inicio de la línea.
Después de colocar la comilla sencilla debes escribir el comentario y al terminar de insertar la
línea Excel colocará automáticamente el texto en color verde indicando que ha reconocido la línea
como un comentario en VBA.

He visto en más de una ocasión que muchas personas no tienen esta buena práctica al programar
en VBA y el problema se presentará cuando pase el tiempo y tengan que modificar el código
pero ya no recuerden la lógica implementada ni lo que significa cada una de las variables.

Aunque pareciera una actividad aburrida, créeme que te ahorrará mucho tiempo cuando te veas
en la necesidad de modificar tu código. Además, si por alguna razón necesitas que otra persona
haga modificaciones al código le serán de gran ayuda los comentarios que hayas agregado.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 36 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Comentar varías líneas de código

Como ya lo mencioné, un comentario en VBA será omitido al momento de la ejecución. En


ocasiones cuando está haciendo pruebas con tu código VBA deseas evitar que ciertas líneas de
código se ejecuten y una manera de hacer es comentando dichas líneas.

Para comentar varias líneas de código en una macro, sin la necesidad de estar colocando la
comilla sencilla al principio de cada una de las líneas, puedes seguir los siguientes pasos. En
primer lugar selecciona todas las líneas de código que deseas convertir en comentarios y
posteriormente oprime el botón Bloque con comentarios de manera que Excel coloque todas las
comillas sencillas (‘) a cada línea de código seleccionada.

De la misma manera puedes remover las comillas sencillas si pulsas el botón Bloque sin
comentarios que se encuentra justo al lado derecho del botón Bloque con comentarios.

Si no puedes ver los botones anteriores en el Editor de Visual Basic es porque seguramente
tienes oculta la barra de herramientas de Edición. Para mostrarla, haz clic derecho sobre un área
libre del menú superior y seleccionar la opción Edición.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 37 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

UNIDAD 3
Creacion de Macros

 Rangos de celdas con VBA


 filas y columnas con VBA
 Trabajo con hojas en VB
 Trabajo con libros con VBA
 Acciones en Excel en VBA -
Objeto Application
 formatos de celda con VBA
 formatos de número con VBA
 Gestion errores en VBA

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 38 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Rangos de celdas con VBA

Se puede especificar una celda o un rango en una instrucción que identifique el rango y que,
además, cambie una propiedad o aplique un método.

Un objeto Range en Visual Basic puede ser una celda individual o un rango de celdas. Los
siguientes temas muestran las maneras más usuales de identificar y trabajar con objetos Range.

Hacer referencia a todas las celdas de la hoja de cálculo

Al aplicar la propiedad Cells a una hoja de cálculo sin especificar un número de índice, el método
devuelve un objeto Range que representa todas las celdas de la hoja de cálculo. El siguiente
procedimiento Sub borra el contenido de todas las celdas de la hoja Sheet1 del libro activo.

Sub ClearSheet()

Worksheets("Sheet1").Cells.ClearContents

End Sub

Hacer referencia a celdas y rangos utilizando la notación A1

Puede hacer referencia a una celda o rango de celdas del estilo de referencia A1 utilizando el
método Range. La siguiente subrutina cambia el formato de las celdas A1:D5 a negrita.

Sub FormatRange()

Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _

.Font.Bold = True

End Sub

La siguiente tabla muestra algunas referencias de estilo A1 utilizando el método Range.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 39 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Referencia Significado

Range("A1") Celda A1

Range("A1:B5") Celdas de la A1 a la
B5

Range("C5:D9;G9:H16") Selección de varias


áreas

Range("A:A") Columna A

Range("1:1") Fila 1

Range("A:C") Columnas de la A a
la C

Range("1:5") Filas de la 1 a la 5

Range("1:1;3:3;8:8") Filas 1, 3 y 8

Range("A:A;C:C;F:F") Columnas A, C y F

Hacer referencia a celdas usando un objeto Range

Si establece una variable de objeto para un objeto Range, puede manipular fácilmente el rango
utilizando el nombre de la variable.

El siguiente procedimiento crea la variable de objeto myRange y, a continuación, asigna la


variable al rango A1:D5 de la hoja Sheet1 del libro activo. Las instrucciones posteriores modifican
las propiedades del rango, sustituyendo el nombre de la variable por el objeto Range.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 40 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

VBA

Sub Random()

Dim myRange As Range

Set myRange = Worksheets("Sheet1").Range("A1:D5")

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

End Sub

filas y columnas con VBA

Hacer referencia a filas y columnas

Utilice la propiedad Rows o Columns para trabajar con filas o columnas enteras. Estas
propiedades devuelven un objeto Range que representa un rango de celdas. En el siguiente
ejemplo, Rows(1) devuelve la fila uno de la hoja Sheet1. A continuación, la propiedad Bold del
objeto Font del rango se establece en True.

Sub RowBold()

Worksheets("Sheet1").Rows(1).Font.Bold = True

End Sub

La siguiente tabla muestra algunas referencias de fila y columna, utilizando las


propiedades Rows y Columns.

Referencia Significado

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 41 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Rows(1) Fila uno

Rows Todas las filas de la hoja de cálculo

Columns(1) Columna uno

Columns("A") Columna uno

Columns Todas las columnas de la hoja de cálculo

Para trabajar con varias filas o columnas al mismo tiempo, cree una variable de objeto y utilice el
método Union, combinando varias llamadas a la propiedad Rows o Columns. El siguiente
ejemplo cambia a negrita el formato de las filas uno, tres y cinco de la hoja de cálculo uno del
libro activo.

Sub SeveralRows()
Worksheets("Sheet1").Activate
Dim myUnion As Range
Set myUnion = Union(Rows(1), Rows(3), Rows(5))
myUnion.Font.Bold = True
End Sub

En este ejemplo, se eliminan las filas vacías de un rango seleccionado.

VBA

Sub Delete_Empty_Rows()

'The range from which to delete the rows.

Dim rnSelection As Range

'Row and count variables used in the deletion process.

Dim lnLastRow As Long

Dim lnRowCount As Long

Dim lnDeletedRows As Long

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 42 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

'Initialize the number of deleted rows.

lnDeletedRows = 0

'Confirm that a range is selected, and that the range is contiguous.

If TypeName(Selection) = "Range" Then

If Selection.Areas.Count = 1 Then

'Initialize the range to what the user has selected, and initialize the count for the upcoming FOR loop.

Set rnSelection = Application.Selection

lnLastRow = rnSelection.Rows.Count

'Start at the bottom row and work up: if the row is empty then

'delete the row and increment the deleted row count.

For lnRowCount = lnLastRow To 1 Step -1

If Application.CountA(rnSelection.Rows(lnRowCount)) = 0 Then

rnSelection.Rows(lnRowCount).Delete

lnDeletedRows = lnDeletedRows + 1

End If

Next lnRowCount

rnSelection.Resize(lnLastRow - lnDeletedRows).Select

Else

MsgBox "Please select only one area.", vbInformation

End If

Else

MsgBox "Please select a range.", vbInformation

End If

'Turn screen updating back on.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 43 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Application.ScreenUpdating = True

End Sub

En este ejemplo, se eliminan las columnas vacías de un rango seleccionado.

VBA

Sub Delete_Empty_Columns()

'The range from which to delete the columns.

Dim rnSelection As Range

'Column and count variables used in the deletion process.

Dim lnLastColumn As Long

Dim lnColumnCount As Long

Dim lnDeletedColumns As Long

lnDeletedColumns = 0

'Confirm that a range is selected, and that the range is contiguous.

If TypeName(Selection) = "Range" Then

If Selection.Areas.Count = 1 Then

'Initialize the range to what the user has selected, and initialize the count for the upcoming FOR loop.

Set rnSelection = Application.Selection

lnLastColumn = rnSelection.Columns.Count

'Start at the far-right column and work left: if the column is empty then

'delete the column and increment the deleted column count.

For lnColumnCount = lnLastColumn To 1 Step -1

If Application.CountA(rnSelection.Columns(lnColumnCount)) = 0 Then

rnSelection.Columns(lnColumnCount).Delete

lnDeletedColumns = lnDeletedColumns + 1

End If

Next lnColumnCount

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 44 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

rnSelection.Resize(lnLastColumn - lnDeletedColumns).Select

Else

MsgBox "Please select only one area.", vbInformation

End If

Else

MsgBox "Please select a range.", vbInformation

End If

'Turn screen updating back on.

Application.ScreenUpdating = True

End Sub

Trabajo con hojas en VBA

Crear o reemplazar una hoja de cálculo

Los siguientes ejemplos muestran cómo determinar si existe una hoja de cálculo y cómo crearla
o reemplazarla.

Determinar si existe una hoja de cálculo

Este ejemplo muestra cómo determinar si existe una hoja de cálculo denominada "Sheet4"
mediante la propiedad Name del objeto Worksheet. El nombre de la hoja de cálculo se especifica
en la variable mySheetName.

VBA

Sub TestSheetYesNo()

Dim mySheetName As String, mySheetNameTest As String

mySheetName = "Sheet4"

On Error Resume Next

mySheetNameTest = Worksheets(mySheetName).Name

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 45 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

If Err.Number = 0 Then

MsgBox "The sheet named ''" & mySheetName & "'' DOES exist in this workbook."

Else

Err.Clear

MsgBox "The sheet named ''" & mySheetName & "'' does NOT exist in this workbook."

End If

End Sub

Crear la hoja de cálculo

En este ejemplo se muestra cómo determinar si existe una hoja de cálculo denominada "Sheet4".
El nombre de la hoja de cálculo se especifica en la variable mySheetName. Si la hoja de cálculo
no existe, este ejemplo muestra cómo crear una hoja de cálculo denominada "Sheet4" usando el
método Add del objeto Worksheets.

VBA

Sub TestSheetCreate()

Dim mySheetName As String, mySheetNameTest As String

mySheetName = "Sheet4"

On Error Resume Next

mySheetNameTest = Worksheets(mySheetName).Name

If Err.Number = 0 Then

MsgBox "The sheet named ''" & mySheetName & "'' DOES exist in this workbook."

Else

Err.Clear

Worksheets.Add.Name = mySheetName

MsgBox "The sheet named ''" & mySheetName & "'' did not exist in this workbook but it has been created
now."

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 46 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

End If

End Sub

Reemplazar la hoja de cálculo

En este ejemplo se muestra cómo determinar si existe una hoja de cálculo denominada "Sheet4".
El nombre de la hoja de cálculo se especifica en la variable mySheetName. Si la hoja de cálculo
existe, este ejemplo muestra cómo eliminarla usando el método Delete del objeto Worksheet y
luego crea una hoja de cálculo nueva denominada "Sheet4".

Importante

Todos los datos que haya en la hoja de cálculo original denominada "Sheet4" se borrarán cuando se
elimine la hoja de cálculo.

VBA

Sub TestSheetReplace()

Dim mySheetName As String

mySheetName = "Sheet4"

Application.DisplayAlerts = False

On Error Resume Next

Worksheets(mySheetName).Delete

Err.Clear

Application.DisplayAlerts = True

Worksheets.Add.Name = mySheetName

MsgBox "The sheet named ''" & mySheetName & "'' has been replaced."

End Sub

Trabajo con libros con VBA

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 47 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Crear un libro

Para crear un libro en Visual Basic, utilice el método Add. El siguiente procedimiento crea un libro.
Microsoft Excel asigna automáticamente el nombre BookN al libro, donde N es el siguiente
número disponible. El nuevo libro se convertirá en el libro activo.

Sub AddOne()

Workbooks.Add

End Sub

Una forma mejor de crear un libro es asignarlo a una variable de objeto. En el siguiente ejemplo,
el objeto Workbook devuelto por el método Add se asigna a la variable de bjeto, newBook. A
continuación, se establecen varias de las propiedades de newBook. Puede controlar fácilmente
el nuevo libro utilizando la variable de objeto.

Sub AddNew()

Set NewBook = Workbooks.Add

With NewBook

.Title = "All Sales"

.Subject = "Sales"

.SaveAs Filename:="Allsales.xls"

End With

End Sub

Acciones en Excel en VBA -Objeto Application

El objeto Application en VBA

Cuando escribimos macros con VBA trabajamos con múltiples objetos que pueden ejecutar
nuestras instrucciones adecuadamente, pero el objeto Application está en el nivel más alto de la
jerarquía del modelo de objetos de Excel.

El objeto Application simboliza a Excel mismo y nos da acceso a opciones y configuraciones a


nivel de la aplicación. Muchas de las opciones que podemos modificar con el objeto Application
son las mismas que encontramos en la ficha Archivo dentro del cuadro de diálogo Opciones de
Excel.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 48 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Ya que el objeto Application es el objeto principal dentro de VBA todos los demás objetos derivan
de él. Es por ello que encontrarás frecuentemente instrucciones que comienzan especificando el
objeto Application:

Application.ActiveSheet.Name = "Reporte de Ventas"

Sin embargo, VBA nos permite, en la mayoría de los casos, omitir la escritura del objeto
Application ya que supone que todos los demás objetos provienen de él. De esta manera la
siguiente instrucción también es válida.

ActiveSheet.Name = "Reporte de Ventas"

Colecciones del objeto Application

El objeto Application tiene algunas colecciones que son de mucha utilidad


como Sheets, Columns y Rows. La colección Sheets nos permite acceder a todas las hojas de
un libro:

Application.Sheets.Count

Es muy importante mencionar que la colección Sheets se referirá al libro de Excel que se
encuentre activo en el momento de ejecutar esta instrucción. Las colecciones Columns y Rows
nos permitirán acceder a las columnas y filas de la hoja activa.

Application.Columns(5).Select
Application.Rows(5).Select

Propiedades del objeto Application

El objeto Application tiene muchas propiedades como para mencionarles todas en esta ocasión,
pero algunas de las más importantes son las siguientes:

 ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel activo.

 ActiveSheet. Regresa un objeto Worksheet que representa a la hoja que esté


actualmente seleccionada (activa).

 ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja
activa en el libro de Excel activo.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 49 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

 ThisWorkbook. Esta propiedad devolverá un objeto Workbook que representará el libro


que contiene la macro que está siendo ejecutada.

Métodos del objeto Application

Uno de los métodos más utilizados del objeto Application es el método InputBox que nos ayuda
a mostrar un cuadro de diálogo que solicita al usuario el ingreso de algún valor. Observa la
siguiente línea de código:

Impresiones = Application.InputBox(Prompt:="Número de impresiones:", _


Title:="Imprimir", Default:=1, Type:=1)

Esta instrucción hará que Excel muestre un cuadro de diálogo pidiendo al usuario que ingrese el
número de impresiones que desea realizar. El número ingresado por el usuario se guardará en
la variable Impresiones.

formatos de celda con VBA

Seleccionar una celda o rango de celdas es una operación usual que se realiza antes de hacer
otras acciones, como establecer un área de impresión, dar formatos, ordenar un conjunto de
datos, etc. Para ello, usaremos las propiedades Range o Cells, que nos sirven además para
referenciar celdas mientras se programa Excel con VBA, y así indicar sobre qué celdas se debe
buscar o realizar algún evento.

Por ejemplo, para definir explícitamente un rango a seleccionar, se puede usar la siguiente macro:

Sub Macro1()

Range (“B2:B10”).Select

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 50 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

End Sub

Después de que el rango de celdas es seleccionado, se puede hacer diferentes acciones como
cambiar su formato (color de fuente, tamaño de letra, negrita, subrayado, cursiva, darle formato
de número o fecha, etc). A continuación, se mostrará un ejemplo para demostrar cómo definir
cada uno de ellos:

Nota: No es necesario memorizar todas las propiedades de las celdas (los códigos), ya que se
puede primero usar el grabador de macros, y cuando comience la grabación, proceder a dar
formato a las celdas. Luego, se puede mirar el código generado automáticamente por Excel en
VBA.

De la macro anterior, notamos que la palabra “Selection” se repite en todas las sentencias, por lo
que se puede hacer más eficiente esta macro si se usa la estructura With…End With, de la
siguiente manera:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 51 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

(Para mayor visualización de la imagen, hacer click en la misma)

Otra manera de seleccionar un rango es usando Cells del objeto Rango, como se hizo en esta
última macro. Esta requiere las posiciones fila, columna según: Cells(fila, columna); por ejemplo,
a la celda D5, le correspondería Cells(5,4).

Además, notamos que con la macro, se puede dar formato sin necesariamente seleccionar el
rango antes, es por ello que se digitó “With Range(Cells(2, 2), Cells(10, 2))”, en lugar de “With
Range(Cells(2, 2), Cells(10, 2)).Select”, y esta es una ventaja de automatizar las acciones con
las macros, pues además de ahorro de tiempo, es eficien

formatos de número con VBA

A través del formato personalizado de celdas en Excel podemos dar la apariencia que
necesitamos a cualquier valor numérico de una celda sin necesidad de editarla. Con solo indicar
un código de formato personalizado podremos manipular la manera en que Excel despliega dicho
valor.

El formato de celdas en Excel

De manera predeterminada, Excel tiene una serie de formatos de celda que podemos aplicar a
nuestros datos. Una manera de acceder a dichos formatos es a través de los comandos que se
encuentran en el grupo Número dentro de la ficha Inicio.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 52 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

En la lista desplegable encontrarás los formatos de celda comúnmente utilizados en Excel como
el formato General, Número, Moneda, Contabilidad, Fecha corta, Fecha larga, Hora, Porcentaje,
Fracción, Científica y Texto.

Además, por debajo de la lista desplegable, se encuentran los comandos para elegir el símbolo
de moneda, el símbolo de porcentaje, el estilo de millares y los botones para aumentar o disminuir
los decimales.

Si ninguno de estos comandos puede ayudarte a mostrar el valor de la celda como lo deseas,
entonces podrás recurrir al formato de celdas personalizado. Por ejemplo, si en tu hoja de Excel
tienes una columna que contendrá un número de folio y necesitas que dicho número se muestre
siempre de 5 dígitos, entonces necesitas que Excel muestre el valor “1” como “00001”, y el valor
“2” como “00002” y así sucesivamente.

En realidad tú no quieres introducir todos los caracteres para cada uno de los folios sino
solamente introducir el valor “1” y que Excel presente el formato adecuado. Eso es posible a
través del formato de celdas personalizado y trabajaremos en ese ejemplo en el resto del artículo.

Formato personalizado de celdas en Excel

Para iniciar nuestro ejemplo, ingresaré el valor “1” en la celda A1, y posteriormente haré clic
derecho sobre la celda y seleccionaré la opción Formato de celdas lo cual abrirá un cuadro de
diálogo.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 53 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Otra manera de abrir este cuadro de diálogo es haciendo clic en el indicador de cuadro de
diálogo del grupo Número en la ficha Inicio.

Una vez que se ha abierto la ventana Formato de celdas, deberás asegurarte de seleccionar la
pestaña Número y dentro de la lista de Categoría deberás seleccionar la
opción Personalizada tal como se muestra en la siguiente imagen.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 54 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

El siguiente paso es seleccionar la cada de texto Tipo, que es donde actualmente se muestra la
palabra Estándar. Borra dicho texto y en su lugar introduce el valor 00000 el cual está formado
por cinco números cero.

Finalmente deberás hacer clic en el botón Aceptar y la celda A1, la cual tenía el valor 1, se
mostrará en pantalla como 00001.

Si copias este formato de celda a toda tu columna, tendrás el comportamiento deseado en todos
tus datos. Recuerda que puedes copiar un formato de celda con el botón Copiar formato que se
encuentra en la ficha Inicio dentro del grupo Portapapeles.

De esta manera hemos creado un formato personalizado en Excel y lo hemos aplicado a un rango
de celdas. Si quieres dejar de utilizar dicho formato, deberás seleccionar todas las celdas que

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 55 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

tienen aplicado el formato y posteriormente elegir el formato General de la lista de formatos


ubicada en la ficha Inicio > Números.

Códigos de formato personalizado de celdas

El formato personalizado de celdas nos permite dar una apariencia única a nuestros datos. En la
siguiente tabla puedes ver otras opciones de formato personalizado que puedes utilizar.

La columna Valor muestra el valor original de la celda es decir, con un formato General. La
columna Formato personalizado es el valor ingresado en la caja de texto Tipo del cuadro de
diálogo Formato de celdas y finalmente la columna Presentación es el valor mostrado en la celda
después de aplicar el formato personalizado.

Valor Formato personalizado Presentación

1 000 001

1 “N”000 N001

11.1 000.00 011.10

55385040 00-00-00-00 55-38-50-40

28/01/2011 dddd-dd-mmmm-aaaa viernes-28-enero-2011

Debes considerar que aunque Excel cambia el formato en pantalla de los datos, el valor de la
celda no es afectado. Por ejemplo, si tienes el valor 1.2345 y aplicas un formato personalizado a
la celda para que se vea como 1.23, al momento de hacer un cálculo con el valor de dicha celda,
Excel considerará el valor 1.2345 aunque no esté desplegado en pantalla.

Es muy importante mencionar que el Formato personalizado de celdas en Excel fue pensado
primordialmente para cambiar la apariencia de valores numéricos y no es posible crear formatos
personalizados para manipular la apariencia de celdas con texto. Lo único que podemos hacer
es agregar caracteres individuales como lo muestra el segundo ejemplo de la tabla anterior.

Gestion errores en VBA

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 56 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Tipos de errores en VBA

No todas las cosas funcionan bien a la primera y seguramente te encontrarás con errores al
programar en Excel. Existen dos tipos de errores en VBA: errores de sintaxis y errores en tiempo
de ejecución.

Errores de sintaxis en VBA

Un error de sintaxis ocurre cuando tenemos un error con el lenguaje VBA, es decir, cuando
intentamos hacer algo que no está permitido. Este tipo de errores son los más fáciles de localizar
porque el Editor de Visual Basic está configurado para avisarnos en el momento en que encuentra
un error de este tipo en nuestro código.

Los errores de sintaxis en VBA surgen cuando intentamos insertar algún operador o alguna
instrucción de VBA en un lugar que no le corresponde. Observa la siguiente imagen:

En este ejemplo he intentado utilizar la palabra Next en lugar del tipo de dato de la variable. Es
por eso que el Editor de Visual Basic muestra un mensaje de error de compilación. La
palabra Next es parte del lenguaje VBA pero la he utilizado en el lugar inapropiado y por eso
obtengo el error.

De igual manera el Editor de Visual Basic notará si hemos utilizado una palabra que no pertenece
al lenguaje VBA. En el siguiente ejemplo he confundido la instrucción Mod (módulo) y he colocado
la palabra Mud.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 57 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Estos son solo unos ejemplos de errores de sintaxis que podemos cometer pero como lo he
mencionado antes, el Editor de Visual Basic nos alertará sobre dichos errores y podremos
detectarlos y corregirlos.

Errores en tiempo de ejecución

Un error en tiempo de ejecución ocurre cuando nuestra aplicación ya está siendo ejecutada e
intenta hacer alguna acción que no está permitida por Excel o por Windows. Esto ocasionará que
nuestra aplicación colapse o que Excel deje de responder.

Este tipo de errores son mas difíciles de encontrar pero aun así se podrán encontrar algunos de
ellos al hacer pruebas y depuración de nuestra aplicación. Algunos ejemplos de este tipo de
errores son los siguientes:

 Intentar realizar una operación no permitida por el ordenador. Por ejemplo una división
entre cero o intentar sumar una cadena de texto y un valor Double.

 Intentar utilizar una librería de código que no está accesible en ese momento.

 Utilizar un bucle con una condición que nunca se cumple.

 Tratar de asignar un valor que está fuera de los límites de una variable.

Existen muchas otras razones por las que podemos tener un error en tiempo de ejecución. La
mejor manera de prevenir estos errores será haciendo una depuración de nuestro código pero
eso será tema de otro artículo.

Lo importante por ahora es estar consiente de estos dos tipos de errores en VBA y saber que
debemos estar atentos para corregir todos los errores de sintaxis de nuestro código y minimizar
al máximo los posibles errores de ejecución.

Depurar macros en Excel

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 58 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Cuando nos encontramos con errores en nuestras macros podemos depurar el código utilizando
el Editor de Visual Basic para encontrar fácilmente los errores que pueda contener nuestro código
VBA. Considera la siguiente macro:

Depurar código VBA

Para iniciar con la depuración del código podemos seleccionar la opción de


menú Depuración > Paso a paso por instrucciones o simplemente pulsar la tecla F8.

Esto hará que se inicie la ejecución en la primera línea, la cual se mostrará con un fondo amarillo
indicando que esa instrucción es la que esta por ejecutarse.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 59 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Para continuar con la depuración debemos pulsar de nuevo la tecla F8 hasta llegar al final del
código. Cada vez que pulsamos la techa F8 suceden las siguientes cosas:

1. Excel ejecuta la instrucción que está sombreada en color amarillo

2. Si Excel encuentra un error en la instrucción, entonces enviará un mensaje de error.

3. Por el contrario, si no hubo error en dicha instrucción, entonces Excel marcará en amarillo
la siguiente instrucción a ejecutar.

De esta manera podemos ejecutar cada una de las líneas de nuestro código VBA y validar que
no exista error alguno. Regresando a nuestro ejemplo, al momento de llegar a la tercera
instrucción y pulsar la tecla F8, Excel enviará el siguiente mensaje de error:

El mensaje nos advierte que el objeto no admite esa propiedad o método y se está refiriendo al
objeto Range en donde el método Value no está escrito de manera correcta y por lo tanto el
depurador de VBA no reconoce dicha propiedad. Pulsa el botón Aceptar para cerrar el cuadro de
diálogo y poder corregir el error en el código.

Ya hemos hablado sobre los diferentes tipos de errores en VBA y la depuración nos ayudará a
probar nuestro código y a encontrar la gran mayoría de los errores que podamos tener. Es

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 60 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

probable que al principio veas a la depuración como un trabajo muy exhaustivo pero cuando tus
programas y macros comiencen a crecer entonces verás todos los beneficios que nos da
la depuración de macros en Excel.

Implementar controlador de errores en Excel vba

La instrucción On Error nos va a permitir implementar un manejador de errores en nuestras


macros de Excel. Existen 3 maneras de utilizar la instrucción On Error.

Descripción

Instrucción

Lo usamos para que al momento de que se


On Error GoTo línea detecte algún error, pase el control a una línea
o a una etiqueta.

Si se detecta un error, se pasará el control a la


On Error Resume Next
siguiente línea, omitiendo el anterior.

La usamos para desactivar cualquier


On Error GoTo 0 manejador de error. Regularmente se una
cuando utilizamos On Error Resume Next.

En casos de que no utilicemos un manejador de error, lo que veremos es un mensaje propio


de vba y se detendrá nuestra macro. Aquí el inconveniente es que los mensajes de error por
default no siempre son tan descriptivos.

Figura 1. Un mensaje de error de vba detiene nuestra macros y debe volver a correrse.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 61 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Lo bueno del mensaje de error de vba es que podemos presionar el botón Depurar y nos dirige
a la línea donde la ejecución de la macro se detuvo.

Caso práctico

Como ejemplo, tenemos una macro que le asigna un color rojo a 5 etiquetas de un archivo.
Usamos un constructor For Next que va completando el nombre de las hojas, comenzando con
Hoja1, Hoja2, y así sucesivamente.

La macro funciona perfectamente cuando tenemos las 5 hojas con los nombre del 1 al 5, pero
cualquier cambio de nombre de alguna hoja o si protegemos el archivo, indudablemente nos
marcará un error y macro se detendrá.

Figura 2. Las macro se ejemplo cambian el color de 5 hojas de un archivo.

Entendiendo On Error

Antes de compartirles el código completo de la macro debemos tener en cuenta que la


instrucción On Error debe de ir antes de la líneas o las líneas que comiencen a ejecutar alguna
acción de la macro.Yo siempre la pongo después de la declaración de variables.

Al terminar las líneas de nuestra macro, será necesario usar Exit Sub, Exit Function o Exit
Property, ya que se supone que después de estas líneas seguirá la etiqueta que hemos definido
para el manejo de error.

A continuación vemos la estructura de una macro con una manejador de error:

Sub MacroPrueba()

On Error GoTo Errores

'Aquí va el código

'de nuestra macro

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 62 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

'Damos por terminada nuestra macro

Exit Sub

'Esta etiqueta es la que nos permitirá

'asignar otro código para manera el error.

Errores:

'Podemos usar un MsgBox para mostrar un mensaje

End Sub

Los errores se almacenan en el objeto Err, por lo que podemos obtener el número de error
con Err.Number o la descripción con Err.Description.

Ejemplos de código

Sin manejo de errores. Al encontrar un error detendrá la macro.

Sub SinManejo()

'

Dim i As Integer

Dim Nombre As String

'

For i = 1 To 5

Nombre = "Hoja" & i

Sheets(Nombre).Tab.Color = vbRed

Next i

'

End Sub

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 63 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Con la instrucción On Error Goto. Al detectar un error mandará el control de la macro a la


etiqueta Handler y podemos asignar un mensaje personalizado de error.

Sub OnErrorGoto()

'

Dim i As Integer

Dim Nombre As String

'

On Error GoTo Handler

'

For i = 1 To 5

Nombre = "Hoja" & i

Sheets(Nombre).Tab.Color = vbRed

Next i

'

Exit Sub

'

'Etiqueta

Handler:

'

'Usamos un Select Case para identificar los números de error

Select Case Err.Number

'

Case Is = 9

MsgBox Err.Number & " " & Err.Description

MsgBox Nombre & " no existe"

Case Is = 1004

MsgBox Err.Number & " " & Err.Description

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 64 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Case Else

MsgBox Err.Number & " " & Err.Description

End Select

'

End Sub

Con la instrucción On Error Resume Next, al detectar un error, o que el nombre de una hoja no
existe, se pasará a la siguiente y la macro no se detendrá.

Sub OnErrorResume()

'

Dim i As Integer

Dim Nombre As String

'

On Error Resume Next

'

For i = 1 To 5

Nombre = "Hoja" & i

Sheets(Nombre).Tab.Color = vbRed

Next i

End Sub

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 65 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

UNIDAD 4
Aplicaciones con Macros

Formularios en Excel.
Empleo de Controles Active X.
Estructuras de Programación en
Controles. Los procedimientos de
evento.
Impresion

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 66 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Formularios en Excel.

Los formularios en VBA no son más que un cuadro de diálogo de Excel donde podremos colocar
controles que nos ayudarán a solicitar información del usuario. Podremos colocar cajas de texto,
etiquetas, cuadros combinados, botones de comando, etc.

Crear un formulario en Excel

Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos
seleccionar la opción de menú Insertar y posteriormente la opción UserForm.

Inmediatamente se mostrar un formulario en blanco y de igual manera podrás observar


el Cuadro de herramientas:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 67 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver y la opción Cuadro de


herramientas.

Agregar controles al formulario

Para agregar un control al formulario debes seleccionarlo del Cuadro de herramientas y dibujarlo
sobre el formulario. En mi formulario he agregado etiquetas y cuadros de texto así como un par
de botones de comando:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 68 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

El texto de las etiquetas se modifica en la propiedad llamada Caption. Para realizar este cambio
solamente selecciona el control y se mostrará la ventana de Propiedades donde podrás hacer la
modificación. De igual manera el texto desplegado en los botones de comando se modifica en
su propiedad Caption.

Código para el botón Cancelar

El botón cancelar cerrará el formulario sin guardar la información capturada en ningún lugar. El
código que debemos utilizar es el siguiente:

Private Sub CommandButton2_Click()


Unload Me
End Sub

Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload Me”
cerrará el formulario.

Código para el botón Aceptar

A diferencia del botón Cancelar, el botón Aceptar colocará los datos de las cajas de texto en las
celdas A1, B1 y C1. El código utilizado es el siguiente:

Private Sub CommandButton1_Click()


Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value
Worksheets("Hoja1").Range("B1").Value = Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value = Me.TextBox3.Value
End Sub

Al pulsar el botón Aceptar se transferirán los valores de los controles TextBox hacia las celdas de
la Hoja1.

Botón para abrir formulario

Para facilitar la apertura del formulario puedes colocar un botón ActiveX en la hoja con el siguiente
código:

Private Sub CommandButton1_Click()


UserForm1.Show
End Sub

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 69 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Probar el formulario

Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:

Ejemplo de Formulario VBA en Excel

En esta ocasión haremos un ejemplo básico de cómo utilizar un formulario VBA para desarrollar
una mini-aplicación en Excel que realice la conversión de temperaturas entre grados Celsius y
grados Fahrenheit. Este ejemplo será de gran ayuda para aquellos que comienzan en la
programación VBA.

Creación del formulario

Es probable que hayas iniciado a programar en VBA pero aún no hayas utilizado los formularios,
así que será conveniente dar una breve definición antes de comenzar. Un formulario VBA es un
cuadro de diálogo donde agregamos diversos tipos de controles como botones de comando, cajas
de texto, casillas de verificación, y otros controles más que serán de utilidad para obtener
información de un usuario ya sea para procesarla y devolver algún resultado o simplemente
almacenarla.

Los formularios nos permiten crear aplicaciones en Excel para extender el uso y funcionalidad de
la herramienta y aunque su uso está fuertemente relacionado con los usuarios avanzados de
Excel, pronto verás que no es tan complicado utilizarlos. Para iniciar nuestro ejemplo
agregaremos un nuevo formulario de la siguiente manera. En la ficha Programador pulsa el botón
Visual Basic y se mostrará el Editor de VBA. Haz clic derecho sobre VBA Project y selecciona la
opción Insertar > UserForm:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 70 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

De inmediato el panel principal mostrará el formulario recién creado así como un pequeño cuadro
de diálogo con el título Cuadro de herramientas el cual contiene los controles que podemos
agregar al formulario.

El Cuadro de herramientas tiene un botón para cada tipo de control como etiqueta, cuadro de
texto, cuadro combinado, cuadro de lista, casilla de verificación, botón de opción, etc. Para
agregar un control al formulario es necesario hacer clic en el botón correspondiente dentro
del Cuadro de herramientas y posteriormente hacer clic dentro del formulario. Otra manera de
agregar un control al formulario es pulsar el botón del control y arrastrarlo sobre el formulario.

Agregar controles de formulario

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 71 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Para nuestro ejemplo necesitamos agregar una etiqueta, un cuadro de texto, un cuadro de lista y
un botón de comando de manera que nuestro formulario quede de la siguiente manera:

Para cambiar el texto de la etiqueta y del botón de comando debemos modificar la propiedad
llamada Caption y eso lo haremos desde la ventana Propiedades. Si esta ventana no se muestra
actualmente en el Editor de Visual Basic puedes seleccionarla desde el menú Ver o también
puedes hacer clic derecho sobre alguno de los controles y seleccionar la opción Propiedades lo
cual mostrará la ventana:

Encuentra la propiedad Caption y al lado derecho ingresa el valor de dicha propiedad para el
control seleccionado. En la imagen anterior estamos viendo las propiedades de la etiqueta
llamada Label1 y por lo tanto he colocado el texto Temperatura. Para hacer el cambio de esta
propiedad para el botón de comando solo debes seleccionarlo de la lista desplegable que se
encuentra en la parte superior de la misma ventana Propiedades. Al terminar el cambio de la
propiedad Caption tendremos el formulario de la siguiente manera:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 72 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

En la imagen anterior puedes notar que también he cambiado en el título del formulario y lo
puedes hacer modificando también la propiedad Caption del formulario mismo.

Agregar opciones al cuadro de lista

Un último cambio que haremos a los controles es agregar los valores al cuadro de lista. Para
nuestro ejemplo solo necesitamos los valores Celsius y Fahrenheit pero no existe una propiedad
del control que nos permita hacerlo sino que debemos utilizar código VBA. Para especificar estas
opciones debemos hacer doble clic sobre el formulario y seleccionar el código para el
procedimiento Initialize donde colocaremos las instrucciones necesarias para agregar las
opciones:

La instrucción AddItem es la que nos permite agregar un nuevo elemento al cuadro de lista y la
instrucción ListIndex nos permite indicar el valor que estará seleccionado al cargarse el formulario
y que será la opción Celsius ya que es la primera opción de la lista y por lo tanto tiene asociado
el índice cero.

Código del botón de comando

Finalmente agregaremos código VBA al botón de comando que será el encargado de hacer la
conversión, solo haz doble clic sobre el botón para mostrar la ventana de código asociada. El
código que colocaremos en el procedimiento Click será el siguiente:

1 Private Sub CommandButton1_Click()

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 73 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

3 'Validar que se ha especificado una temperatura

4 If TextBox1.Value = "" Then

5 MsgBox "Debes especificar una temperatura"

6 Exit Sub

7 End If

9 'Si es Celsius convertir a Fahrenheit

10 If ComboBox1.ListIndex = 0 Then

11 temperatura = TextBox1.Value * 1.8 + 32

12 MsgBox temperatura & " Fahrenheit"

13 'Si es Fahrenheit convertir a Celsius

14 Else

15 temperatura = (TextBox1.Value - 32) * 5 / 9

16 MsgBox temperatura & " Celsius"

17 End If

18

19 End Sub

La primera validación dentro del código verifica que el cuadro de texto no esté vacío en cuyo caso
desplegará un mensaje solicitando ingresar una temperatura y posteriormente sale de la
subrutina. La segunda validación es para saber si el cuadro de lista tiene seleccionada la opción
Celsius y por lo tanto hacer la conversión a Fahrenheit para mostrar el resultado. Por el contrario,
si el cuadro de lista tiene seleccionada la opción Fahrenheit se hará la conversión a Celsius. Para

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 74 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

probar el funcionamiento de nuestro formulario es suficiente con pulsar el botón Ejecutar que se
encuentra en la barra de herramientas Estándar:

Observa el comportamiento final del formulario:

Ya que hemos terminado con la construcción del formulario y el código necesario para su
funcionamiento, podemos dar un paso adicional para llamar el formulario desde una hoja de
Excel.

Cargar formulario desde una hoja de Excel

Para cargar un formulario desde una hoja de Excel será suficiente con agregar un botón de
comando ActiveX desde la ficha Programador:

Al hacer doble clic sobre el botón se mostrará el código asociado al evento Click del botón y
debemos colocar una sola instrucción:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 75 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Con esto será suficiente para que al momento de pulsar el botón de la hoja de Excel se muestre
el formulario VBA recién creado y podamos realizar la conversión de temperaturas. Aunque este
es un ejemplo muy sencillo espero que sea útil para darte cuenta del gran potencial que existe
en el uso de formularios en Excel.

Empleo de Controles Active X.

Controles de formulario en Excel

Los controles de formulario en Excel son objetos que podemos colocar dentro de una hoja de
nuestro libro, o dentro de un formulario de usuario en VBA, y nos darán funcionalidad adicional
para interactuar mejor con los usuarios y tener un mejor control sobre la información.

Podemos utilizar estos controles para ayudar a los usuarios a seleccionar elementos de una lista
predefinida o permitir que el usuario inicie una macro con tan solo pulsar un botón. Los controles
de formulario en Excel se encuentran dentro de la ficha Programador dentro del grupo
Controles. Solamente pulsa el botón Insertar y observarás cada uno de ellos:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 76 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Justo por debajo de los controles de formulario podrás observar el grupo de controles
ActiveX pero sus diferencias y similitudes las discutiremos en otro artículo. Por ahora nos
enfocaremos solamente en los controles de formulario.

¿Cómo insertar un control de formulario en Excel?

Para insertar cualquiera de los controles de formulario debes seleccionarlo del menú desplegable
y hacer clic sobre la hoja de Excel arrastrando el borde para “dibujar” el contorno del control.
Observa este procedimiento.

Los diferentes controles de formulario

Existen diferentes tipos de controles de formulario en Excel que ofrecen diversos tipos de
funcionalidad e interacción con el usuario. Desde una simple etiqueta hasta controles que
permiten una selección múltiple de sus opciones. A continuación una breve descripción de cada
uno de ellos.

 Barra de desplazamiento. Al hacer clic en las flechas se va desplazando la barra dentro


de un intervalo predefinido.

 Botón. El botón nos permite ejecutar una macro al momento de hacer clic sobre él.

 Botón de opción. Nos permite una única selección dentro de un conjunto de opciones.

 Casilla de verificación. Permite la selección o no selección de una opción.

 Control de número. Nos ayuda a aumentar o disminuir un valor numérico.

 Cuadro combinado. Es una combinación de un cuadro de texto con un cuadro de lista.

 Cuadro de grupo. Agrupa varios controles dentro de un rectángulo.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 77 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

 Cuadro de lista. Muestra una lista de valores de los cuales podemos elegir una sola
opción o múltiples opciones de acuerdo a la configuración del control.

 Etiqueta. Permite especificar un texto o breves instrucciones en el formulario.

Controles de formulario no disponibles en Excel 2010

Los controles de formulario han estado presentes por varias versiones de Excel, sin embargo a
partir de Excel 2010 existen algunos controles que ya no pueden ser utilizados dentro de las hojas
como lo son el Campo de texto, el Cuadro combinado de lista y el Cuadro combinado
desplegable, sin embargo podremos alcanzar funcionalidad similar utilizando controles ActiveX.

Estructuras de Programación en Controles. Los procedimientos de evento.

Programación de eventos en Excel

La programación de eventos fue introducida en Excel 97 y ha sido de gran utilidad desde


entonces ya que nos permite ejecutar código VBA en el momento exacto en que el usuario realiza
alguna acción determinada o cuando hay un cambio de estado en la aplicación.

Eventos en Excel

Los eventos en Excel son acciones iniciadas por el usuario, como el seleccionar una hoja
diferente dentro del libro o modificar el valor de una celda. Al suceder dicho evento se ejecutará
un procedimiento asociado el cual contendrá nuestro código VBA.

Es importante mencionar que el catálogo de eventos en Excel ya está definido y no podemos


definir nuevos eventos. Además, cada evento tiene asociado un procedimiento con un nombre y
argumentos específicos que debemos respetar para poder utilizarlos. Por ejemplo, si queremos
mostrar un mensaje al momento de seleccionar una hoja diferente debemos utilizar el
evento Workbook_SheetActivate de la siguiente manera:

1 Private Sub Workbook_SheetActivate(ByVal Sh As Object)

2 MsgBox "Evento Workbook_SheetActivate"

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 78 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

3 End Sub

Si cambiamos el nombre del procedimiento por Workbook_SheetActivate2, el código jamás se


ejecutará porque Excel buscará el procedimiento con el nombre correcto pero no lo encontrará.
Por el contrario, si escribimos correctamente el nombre del procedimiento pero modificamos los
argumentos, entonces Excel se dará cuenta de la diferencia y mostrará el siguiente mensaje de
error:

Es así como podemos hacer nuestra primera conclusión: Los eventos en Excel ya están definidos
en la herramienta y debemos utilizar el nombre del procedimiento asociado a cada uno de ellos
respetando también sus argumentos.

Jerarquía de eventos en Excel

Existen tres objetos en Excel que contienen la mayoría de los eventos generalmente utilizados:
Application, Workbook y Worksheet. El objeto de mayor jerarquía es Application y se refiere a
Excel mismo. El siguiente objeto en la jerarquía es el objeto Workbook que hace referencia a un
libro de Excel y el último objeto de la jerarquía es Worksheet y que hace referencia a una hoja
de Excel.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 79 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Cada uno de estos objetos contiene eventos por sí mismo pero también contiene eventos que
hacen referencia a los eventos de los objetos por debajo de la jerarquía. Por ejemplo, el
objeto Workbook tiene el evento SheetActivate que se activará cada vez que seleccionamos una
hoja diferente de nuestro libro. El objeto Worksheet tiene el evento Activate que se ejecuta
también al seleccionar una hoja específica del libro.

La diferencia entre ambos eventos es la siguiente. Si queremos ejecutar un código solamente


para la Hoja1, debemos utilizar el evento Activate del objeto Worksheet, pero si queremos que
nuestro código se ejecute al activar cualquier hoja del libro, entonces debemos utilizar el
evento SheetActivate del objeto Workbook que al estar un nivel superior en la jerarquía tendrá
la capacidad de activar dicho evento sobre todas las hojas del libro.

Para dejar claro el funcionamiento de ambos eventos he creado un libro de Excel que
puedes descargar el cual muestra un mensaje al momento de seleccionar una hoja diferente
dentro del libro. Se mostrará un cuadro de diálogo con el mensaje “Evento
Workbook_SheetActivate” que corresponde al objeto Workbook y al seleccionar la Hoja1 se
mostrará el mensaje “Evento Worksheet_Activate”.

Este ejemplo también será útil para dejar en claro el orden de ejecución de los eventos. La
ejecución comienza siempre con los eventos del objeto de menor jerarquía y continúa con los
objetos de mayor jerarquía. En nuestro ejemplo, al seleccionar la Hoja1 se mostrará primero el
mensaje del procedimiento Worksheet_Activate y posteriormente el mensaje del
procedimiento Workbook_SheetActivate.

Eventos disponibles para un objeto

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 80 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Hasta ahora hemos hablado sobre los eventos de Excel y los procedimientos vinculados a cada
uno de ellos. También conocemos los objetos que contienen los eventos, su jerarquía y el orden
de ejecución, así que solo nos resta saber cuáles son todos los eventos disponibles para cada
objeto.

Una manera de conocer los eventos de un objeto es utilizar el Examinador de objetos que
podemos acceder desde el Editor de Visual Basic dentro del menú Ver. Al mostrarse el
Examinador de objetos tendremos dos paneles, en la izquierda estarán las clases (objetos) y al
seleccionar alguno de ellos el panel derecho mostrará sus eventos, sus métodos y propiedades.
En la siguiente imagen podemos ver algunos de los eventos del objeto Worksheet que son
fácilmente identificados por un pequeño icono color amarillo en forma de rayo:

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 81 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

En la imagen superior se muestran los eventos Activate, BeforeDoibleClick, BeforeRightClick,


Calculate, Change, pero no son todos los objetos del objeto Worksheet, así que deberás utilizar
la barra de desplazamiento vertical para ver el resto de los eventos del objeto. Al seleccionar
alguno de los eventos se mostrará mayor detalle en el panel inferior.

Ubicación del código para un evento

Ahora que ya sabemos cómo identificar todos los eventos de un objeto es necesario conocer la
ubicación donde debemos colocar el procedimiento asociado a cada uno de ellos. Para los
eventos del objeto Worksheet es necesario colocar el código dentro del módulo asociado a cada
hoja. Para el ejemplo mencionado anteriormente, coloqué el código del evento Activate dentro
del módulo de la Hoja1 de la siguiente manera:

Los eventos del objeto Workbook deben colocarse dentro del módulo ThisWorkbook que se
encuentra por debajo de los módulos de código de las hojas:

Un beneficio que nos ofrece el Editor de Visual Basic es que provee dos listas desplegables en
la parte superior del panel derecho donde podremos elegir el objeto y de inmediato sus
procedimientos serán desplegados en la segunda lista.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 82 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

Al seleccionar alguno de los eventos de la segunda lista se insertará el código del procedimiento
utilizando el nombre y argumentos adecuados en espera de que introduzcamos el código VBA
que será ejecutado al suceder el evento.

Es importante respetar la ubicación adecuada para cada uno de los procedimientos de los
eventos o de lo contrario Excel no los encontrará y por lo tanto no serán ejecutados. A diferencia
de los eventos para los objetos Worksheet y Workbook, no existe un repositorio específico para
los eventos del objeto Application sino que deben ser incluidos ya sea dentro del módulo
ThisWorkbook o dentro de un módulo de clase independiente.

Eventos del objeto Application

Para utilizar un evento del objeto Application dentro del módulo ThisWorkbook comenzamos por
declarar el objeto y posteriormente inicializarlo dentro del evento Workbook_Open de la siguiente
manera:

1 Public WithEvents App As Application

3 Private Sub Workbook_Open()

4 Set App = Application

5 End Sub

La palabra clave WithEvents nos ayuda a indicar que la variable App del tipo Application puede
provocar eventos. Posteriormente dentro del procedimiento Workbook_Open inicializamos dicha
variable. Una vez hecho esto podemos elegir la opción App dentro de la primera lista desplegable

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 83 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

del panel y posteriormente elegir cualquiera de los eventos disponibles para el objeto Application
dentro de la segunda lista.

De esta manera podemos utilizar los eventos del objeto Application dentro del módulo de código
ThisWorkbook y al igual que con los ejemplos anteriores, al seleccionar el evento de la segunda
lista, Excel colocará el código base para el procedimiento del evento.

La programación de eventos en Excel es de suma importancia cuando necesitamos controlar


el comportamiento de Excel en base a las acciones tomadas por el usuario

Impresion

Imprimir con Visual Basic en Excel

Para imprimir con Visual Basic en Excel insertaremos un botón de control de los controles de formulario de
Excel. Para ello, llevaremos a cabo los siguientes pasos:

o Hacer clic en el menú insertar del menú programador y seleccionar el botón de comando
de controles ActiveX.

o Cambiar el nombre del botón a Imprimir haciendo clic sobre el botón+propiedades y rellenando el
campo de Caption.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 84 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

o Hacer clic con el botón derecho sobre el botón imprimir y seleccionar ver código.

o Automáticamente, se añadirá la subrutina del botón al hacer clic.

o Borraremos el código y añadiremos el siguiente:

o En el momento en que ejecutemos el código podremos imprimir en Excel apareciéndonos el siguiente


cuadro de diálogo.

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 85 de 87 DON P EDRO R ICALDONE
P R O GR AM A CI ON D E M A CR OS E N M I CR O SO F T E XC EL

C ENTRO DE FORMACIÓN P ROFESIONAL


Página 86 de 87 DON P EDRO R ICALDONE

También podría gustarte