Está en la página 1de 69

CURSO: MACROS-BASICO By Antoni

__________________________________________________________________________________________________________

INTERMEDIO

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
1
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

MACROS EXCEL-CURSO INTERMEDIO

Objetivos del curso:

 Consolidar los conocimientos adquiridos en el curso anterior


 Diferenciar un objeto Excel de un objeto VBA
 Que son los parámetros en un procedimiento
 Como se pasan los parámetros entre procedimientos
 Como se hace una función
 Como se utiliza una función en una macro
 Como se utiliza una función en una fórmula
 Ampliar el inventario de instrucciones VBA
 Usar variables tipo Object
 Propiedades del objeto Application
 Propiedades del objeto Workbook
 Propiedades del objeto Worksheet
 Propiedades del objeto Range
 Ejecutar macros con un control
 Ejecutar macros desde el Editor de VBA
 Depurar macros

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
2
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

1.-MACROS-Definición

Hagamos un pequeño resumen de lo que ya sabemos sobre las macros.

UNA MACRO ES UN PROGRAMA ESCRITO EN LENGUAJE VBA

VBA ES UNA APLICACIÓN DISTINTA DE EXCEL

UNA MACRO SE ESCRIBE EN UN MODULO

UN MODULO ES UN TIPO DE OBJETO VBA

UNA MACRO ES UN PROCEDIMIENTO VBA

UNA MACRO ES UN PROCEDIMIENTO VBA PUBLICO

UNA MACRO ES UN PROCEDIMIENTO VBA SIN PARAMETROS

UNA MACRO ES UN PROCEDIMIENTO VBA QUE PUEDE SER EJECUTADO


DESDE LA LISTA DE MACROS DE EXCEL

A LA LISTA DE MACROS DE EXCEL SE ACCEDE A TRAVES DE LA FICHA DEL


PROGRAMADOR O PULSANDO ALT+F8

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
3
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.-VISUAL BASIC FOR APPLICATIONS (VBA)

En esta sección vamos a seguir profundizando en nuestro conocimiento del lenguaje VBA.

Ampliaremos nuestros horizontes sobre:

2.1-Procedimientos

2.2-Funciones

2.3-Variables

2.4-Instrucciones básicas de VBA

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
4
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.1-VISUAL BASIC FOR APPLICATIONS (VBA)-Procedimientos II

Vamos a seguir recordando lo que hemos aprendido sobre los procedimientos:

UNA PROCEDIMIENTO ES UN CONJUNTO DE INSTRUCCIONES VBA QUE


EMPIEZA CON UNA INSTRUCCIÓN SUB, Y TERMINA CON UNA
INSTRUCCIÓN END SUB
En el capítulo anterior hemos dicho:

UNA MACRO ES UN PROCEDIMIENTO VBA SIN PARAMETROS


Luego, y por simple deducción, se llega a la conclusión de que existen procedimientos con
parámetros.

A menudo, mas de lo que os pueda parecer en este momento, un procedimiento puede ser
utilizado en innumerables ocasiones, solo que no con los mismos valores.

Vamos a ver un ejemplo:

Supongamos que tenemos un procedimiento en el que multiplicamos por 3 todas las celdas del
rango A1:A5

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
5
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.1-VISUAL BASIC FOR APPLICATIONS (VBA)-Procedimientos II


Ahora resulta que nos piden que realicemos la misma operación pero en la columnas F,H y Z.

Una solución sería repetir el procedimiento MultiplicarPorTres para cada una de la columnas.
Pero evidentemente esto no es lo mas conveniente, ¿Porqué?, imaginad que en lugar de ser 5
columnas son 50, y en lugar de 5 celdas son 200. No sería viable.

Pues para evitar esto VBA inventó los parámetros.

Un parámetro es un valor que se le pasa a un procedimiento para que pueda operar con él.

Un procedimiento admite cualquier número de parámetros.

Los parámetros van separados por comas y van entre paréntesis después del nombre del
procedimiento.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
6
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Los valores pueden ser variables, y no tienen porqué tener el mismo


nombre en las instrucciones CALL y SUB

2.1-VISUAL BASIC FOR APPLICATIONS (VBA)-Procedimientos II

Insisten en complicarnos la vida, ahora resulta que la columas A y F debe multiplicarse por 3 y la
H y la Z por 5.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
7
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Los parámetros son posicionales, es decir, el primer parámetro de la


instrucción Call, será el primer parámetro en la instrucción Sub, el
segundo el segundo, y así sucesivamente con independencia del nombre
del parámetro

2.1-VISUAL BASIC FOR APPLICATIONS (VBA)-Procedimientos II

Los parámetros no dejan de ser variables, y por tanto es conveniente definir de que tipo son.

La forma de definir el tipo de parámetro, es añadir el tipo a continuación del nombre del
parámetro en la instrucción SUB:

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
8
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
9
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.2-VISUAL BASIC FOR APPLICATIONS (VBA)-Funciones II


Ahora que ya sabemos lo que son los parámetros vamos a avanzar un poco mas con las
funciones.

Recordemos:

UNA FUNCION ES UN PROCEDIMIENTO ESPECIAL QUE SOLO PUEDE


SER EJECUTADO DESDE OTRO PROCEDIMIENTO, Y EN ALGUNOS
CASOS PUEDE USARSE COMO UNA FORMULA EN LA HOJA
Una función es un procedimiento que con independencia de sus instrucciones, obtiene un
resultado en una variable que es la propia función. Parece un poco complicado pero no es así.

Con un ejemplo lo veremos mejor, imaginemos que necesitamos saber si todas las celdas de las
filas 1 a la 5 de una determinada columna están informadas o hay alguna de ellas que está a
cero.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
10
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.2-VISUAL BASIC FOR APPLICATIONS (VBA)-Funciones II


En las funciones, los parámetros se comportan de la misma manera que en el resto de los
procedimiento, incluidos los procedimientos de evento que todavía no hemos visto.

Resumiendo todos los procedimientos, incluidas la funciones, pueden recibir parámetros.

Vamos a ver el ejemplo anterior con otra forma de usar una función, la de usarla directamente
en una condición.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
11
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
12
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.2-VISUAL BASIC FOR APPLICATIONS (VBA)-Funciones II


La función del ejemplo anterior aparecería en la lista de funciones Excel para ser empleada
como fórmula.

La usamos en la celda D3 como fórmula para comprobar si el rango A1:A5 está totalmente
informado.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
13
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Las funciones pueden ser usadas en la fórmula de una celda

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
14
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.3-VISUAL BASIC FOR APPLICATIONS (VBA)-Variables II


Vamos a retomar el tema de las variables recordando que, para evitar errores, es conveniente
definir todas las variables.

Para ello disponemos de una instrucción, que colocada como la primera del código VBA, nos
obliga a ello:

Ya hemos dicho que existen muchos tipos de variable, pero las mas habituales son las que tratan
valores numéricos, cadenas de texto y fechas.

También hemos comentado que existen variables para definir objetos en su mas amplio sentido
de la palabra. Por ejemplo, si queremos definir un libro, hoja o rango, podemos utilizar la
variable Object, aunque también podemos utilizar tipos de variable específicas para tal fin:

 Workbook para un libro


 Worksheet para una hoja
 Range para un rango

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
15
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.3-VISUAL BASIC FOR APPLICATIONS (VBA)-Variables

Vamos a ver un ejemplo de utilización de estas variables:

No hay que confundir el tipo de dato de una variable VBA con el formato de celda de Excel, son
parecidos, pero no equivalentes.

Por ejemplo, el tipo de datos “General”, no existe en VBA.

Para VBA cada valor debe ir en una variable con su tipo de datos correspondiente.

Por ejemplo, si definimos una variable como String (Texto), aunque introduzcamos un número
en ella, no podremos utilizarla en una operación aritmética.

Cuando recuperamos el valor de una celda, VBA intenta acomodar su contenido al tipo de datos
de la variable, a diferencia de Excel, si el contenido de dicha celda no es compatible con el tipo
de datos de la variable, la ejecución se detendrá con un error de conversión de tipos.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
16
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II


Hasta ahora, sabemos:

Crear un procedimiento: Sub/End Sub

Definir variables: Dim variable As Tipo variable

Asignar Variables: Variable = Expresión

Crear bucles: For/Next

Preguntar por variables If/Else/End If

Definir rangos: Range(Rango)

Mostrar mensajes: MsgBox “Mensaje”

Ejecutar procedimientos: CALL Procedimiento

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
17
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Ha llegado la hora de agregar mas instrucciones VBA a nuestra lista de instrucciones.

Ya sabemos realizar un bucle un número de veces con la instrucción FOR / NEXT.

FOR variable = expression TO expression [STEP] expression

<Código>

NEXT variable

Ahora analizaremos una variante de dicha instrucción, la instrucción FOR EACH/ NEXT, pero
antes, añadiremos un nuevo tipo de variable, el tipo OBJECT.

DIM variable AS OBJECT

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
18
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

El tipo de variable OBJECT puede contener cualquier objeto que podamos manejar, por ejemplo,
un libro, una hoja, una celda,……

La variable OBJECT contiene todas las propiedades y métodos del objeto, no solo su valor.

Ahora, ya estamos en condiciones de mostrar el formato de la instrucción FOR EACH/ NEXT.

FOR EACH variable objeto IN Rango/Objeto/Colección

<Código>

NEXT variable objeto

La instrucción FOR EACH/ NEXT sirve para recorrer los objetos de un objeto en función del tipo
de objeto, por ejemplo:

Range es un objeto que representa un rango de celdas, donde cada celda también es un objeto,
por tanto, con la instrucción FOR EACH/ NEXT podemos recorrer cada celda dentro de un rango
de celdas.

Supongo que estareis algo confusos, y como dicen que un ejemplo vale mas que 1000 palabras,
vamos a ver un ejemplo para tratar de arrojar un poco mas de luz sobre esta instrucción.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
19
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Con la instrucción FOR EACH/ NEXT, podemos recorrer rangos sin necesidad de indicar su
dirección (Fila,Columna).

Recordad que el nombre de las variables es libre y que no tiene nada que ver con su contenido.
En el ejemplo hemos definido la variable Celda para definir un objeto que contedrá una celda,
pero podíamos haber puesto cualquier otro nombre.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
20
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

El orden de recorrido es: Columna de izquierda a derecha, dentro de cada fila de arriba abajo es
decir. El rango A1:B2, se recorrería así, A1, B1, A2, B2.

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

En aras de una mejor comprensión, no hemos dicho toda la verdad.

Hemos afirmado, que la forma de asignar un valor a una variable se realiza:

Asignar Variables: Variable = Expresión


Y es verdad, pero no toda, para asignar objetos a variables de tipo objeto, debemos anteponer
la palabra SET delante de la variable

Asignar Variables tipo objeto: SET Variable = Objeto

UTILIZAREMOS SET PARA ASIGNAR OBJETOS A VARIABLES OBJECT


Existen unos objetos predefinidos para que se vea mas clara la sintaxis del código, por ejemplo:

Dim Libro As Object es lo mismo que(*) Dim Libro As Workbook

Dim Hoja As Object es lo mismo que(*) Dim Hoja As Worksheet

Dim Rango As Object es lo mismo que(*) Dim Rango As Range


Y así con otros muchos objetos.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
21
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

(*) No es exactamente lo mismo, pero para nosotros si lo va a ser, de momento.

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Vamos a analizar la tercera y última forma de hacer bucles, la instrucción DO/LOOP.

Esta forma de ejecutar bucles, nos permite realizar un conjunto de instrucciones mientras o
hasta que dure o cambie una determinada condición.

El formato de la instrucción DO/LOOP, es el siguiente:

DO UNTIL/WHILE condicion

<Código>

LOOP

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
22
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
23
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Es bastante habitual que nos veamos en la necesidad de no seguir ejecutando un bucle, porqué
se ha cumplido una condición no prevista, o no sabemos si una condición se va a cumplir o no.

Existen dos instrucciones que fuerzan el fin de un bucle, EXIT FOR y EXIT DO.

Como veis, poco a poco, vamos sabiendo mas instrucciones VBA. No debe preocuparos el no
recordarlas todas o no saber su sintaxis, VBA dispone de una excelente Ayuda, donde hay la
explicación de todas las instrucciones y casi siempre con ejemplos de su utilización.

Vamos a ver un par de ejemplos de las instrucciones EXIT FOR y EXIT DO :

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
24
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

USAREMOS EXIT DO CON DO Y EXIT FOR CON FOR

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
25
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Al igual que Excel, VBA dispone de un conjunto de funciones para facilitarnos las cosas.

Una función VBA nos proporciona un resultado en una variable o puede ser utilizado como una
expresión en una comparación.

Vamos a ver el formato general de una función VBA:

Función(Parámetros)

Como podeis ver, su formato es muy parecido a una función de las que empleamos en una
fórmula de nuestra hoja Excel.

De la lista de funciones VBA empezaremos con DATE, TIME y NOW.

Estas dos funciones son las únicas funciones que no requieren parámetros.

DATE nos proporciona la fecha del día

TIME nos proporciona la hora actual

NOW nos proporciona la fecha del día + la hora actual

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
26
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II


Si ejecutamos la macro, los valores de las variables serían:

Sencillo ¿Verdad?. Las funciones de VBA, al igual que las de Excel, las podemos dividir en grupos
en función de lo que hacen.

Uno de los grupos de funciones mas usados es el que hace referencia a la manipulación de
textos. A menudo nos encontraremos que hemos de obtener una parte del contenido de una
celda o una variable. Las funciones mas usuales de este grupo de funciones son:

LEFT(Expresión, Longitud) Extrae texto por la izquierda

MID(Expresión, Posición inicial, Longitud) Extrae texto a partir de una posición

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
27
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

RIGHT(Expresión, Longitud) Extrae texto por la derecha

2.4-VISUAL BASIC FOR APPLICATIONS (VBA)-Instrucciones básicas II

Es importante que entendamos claramente la diferencia entre el nombre de la variable y el


contenido de la variable.

En el ejemplo de funcionamiento de la función MID, la variable de nombre Medio, contiene la


palabra “Medio”, pero podría contener cualquier otro valor.

Si utilizamos una caja para representar una variable, la caja sería la variable y lo que hay dentro
de ella sería el contenido de la variable.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
28
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Las funciones TIME, DATE y NOW, nos informan de la fecha y la hora.

Las funciones LEFT, MID y RIGHT, nos permiten extraer parte del
contenido de celdas y variables.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
29
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

3-La ficha del programador


En esta sección vamos a ver la utilización de controles para ejecutar macros.

Ya hemos comentado que una macro se ejecuta a partir de la lista de macros de Excel, pero
también puede ejecutarse asociando la macro a un objeto incrustado en la hoja, por ejemplo
una imagen, un dibujo, una forma prediseñada o un control.

Es de suponer que ya sabemos insertar objetos con la ficha Insertar, en cualquier caso no es
objetivo de este curso. Nosotros nos centraremos en un tipo de objeto, el control.

Los controles son objetos que se incrustan en la hoja a partir de la cinta del programador.

De nuevo nos encontramos en conflicto entre Excel y VBA en la forma de llamar a los objetos.

Vamos a aclarar el tema de controles y formularios.

Para Excel existen dos clases de controles:

 Los controles de formulario


 Los controles ActiveX

Para VBA, solo existe un tipo de control, el que puede soportar código y eventos y puede ser
incorporado a un formulario VBA, el control ActiveX.

A partir de este momento, los controles a los que se accede a través de la cinta del
programador, los denominaremos controles de formulario de hoja, ya que solo pueden
dibujarse en la hoja.

Pues bien, los controles de formulario de hoja, pueden llevar asociados o no, propiedades,
código VBA y eventos .

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
30
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

3-La ficha del programador

En este curso, solo vamos a ver los controles de formulario de hoja que no pueden llevar
asociados propiedades, código VBA y eventos.

Estos controles solo le podemos asociar una macro para que al pulsar sobre ellos nos ejecute
una determinada macro de nuestra lista de macros.

Vamos a dibujar uno y asociarle una macro:

Escoger el control, dibujarlo en la hoja, y asignarle la macro

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
31
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
32
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

4-El proyecto VBA

Es de suponer, que ya ha quedado claro que Excel y VBA son dos aplicaciones distintas.

También sabemos entrar en el Editor de VBA, o a través de la “La ficha del Programador” o
pulsando Alt+F11

Una vez dentro del Editor de VBA podemos visualizar distintas ventanas para poder controlar
nuestro Proyecto VBA.

A continuación, se muestra un imagen con una composición estandar de la visión del Editor
VBA:

También podemos realizar estas acciones a través del menú Ver

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
33
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

4-El proyecto VBA


Ahora introduciremos un concepto nuevo:

EL OBJETO EXCEL -vs- EL OBJETO VBA


El mismo objeto “físico”, un libro, una hoja…, son objetos “lógicos” distintos para Excel y VBA, y
pueden tener distintos nombres, también se citarán de formas distintas dentro del código VBA.

Por ejemplo, para Excel el nombre de la hoja es el que ponemos en el tab de hojas, y por
defecto aparecen como Hoja1, Hoja2,….

Para VBA, de la hoja es el que ponemos en la ventana propiedades, y por defecto también
aparecen como Hoja1, Hoja2,…..

En resumen, si no especificamos lo contrario, una hoja que aparece como Hoja1 en el tab de
hojas, también aparecerá como Hoja1 en la ventana de propiedades.

Esto, si no se tiene claro, a veces puede llevarnos a confusión.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
34
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

4-El proyecto VBA


Veamos la apariencia de las ventanas del Editor VBA una vez modificados los nombres de Hoja1
por HojaExcel en el tab de hojas y por HojaVBA en la ventana propiedades del Editor VBA:

EL LIBRO Y LAS HOJAS TIENE DOS NOMBRES, EL DE EXCEL Y EL DE VBA,


AUNQUE PUEDEN SER EL MISMO

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
35
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5-El modelo de Objetos VBA

Empecemos esta sección recordando el modelo de objetos Excel de VBA.

EL MODELO DE OBJETOS VBA TIENE UNA ESTRUCTURA JERARQUICA

La imagen representa el modelo de objetos de libro, hoja y rango de celdas, no representa, ni


mucho menos todo el modelo de objetos, pero sin duda si, el que mas vamos a usar.

Ahora vamos a seguir ampliando nuestros conocimientos acerca de estos objetos:

 APPLICATION
 WORKBOOKS
 WORKSHEETS
 RANGE

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
36
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.1-El modelo de Objetos VBA-Application


El objeto Application representa a la aplicación Excel.

El objeto Application contiene todas las propiedades y métodos a nivel general.

Vamos a anailizar en profundidad las propiedades y métodos mas usuales.

Propiedades:

APPLICATION.SCREENUPDATING = True/False

APPLICATION.DISPLAYALERTS = True/False

APPLICATION.DISPLAYSTATUSBAR = True/False

Métodos:

APPLICATION.STATUSBAR = Expresión

APPLICATION.QUIT

APPLICATION.SCREENUPDATING

Utilizaremos la propiedad APPLICATION.SCREENUPDATING, cuando queramos Visualizar/No


visualizar la actualización de la pantalla durante la ejecución de una macro.

Esta propiedad es muy importante porque influye de forma decisiva en el rendimiento de


nuestras macros.

Con APPLICATION.SCREENUPDATING = True, todas las variaciones que se realicen serán


visualizadas en la pantalla una por una.

Esto quiere decir, que si actualizamos el valor de 50.000 celdas, se producirán 50.000 refrescos
de pantalla para mostrarnos el valor de la celda modificada en tiempo real.

Con APPLICATION.SCREENUPDATING = False, todas las variaciones que se realicen serán


visualizadas al final de la ejecución del procedimiento o hasta encontrar la instrucción
APPLICATION.SCREENUPDATING = True.

En nuestro ejemplo de actualización de 50.000 celdas, la pantalla solo se refrescará una vez, con
el consiguiente ahorro de tiempo.

Lamentablemente APPLICATION.SCREENUPDATING = True es la opción por defecto.


__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
37
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.1-El modelo de Objetos VBA-Application

APPLICATION.DISPLAYALERTS

Utilizaremos la propiedad APPLICATION.DISPLAYALERTS, cuando queramos Visualizar/No

visualizar los mensajes de Excel. La opción por defecto es True.

APPLICATION.DISPLAYSTATUSBAR

Utilizaremos la propiedad APPLICATION.DISPLAYSTATUSBAR, cuando queramos Visualizar/No

visualizar la barra de estado de Excel.

APPLICATION. STATUSBAR

Utilizaremos la propiedad APPLICATION. STATUSBAR, cuando queramos enviar un mensaje a la


barra de estado de Excel.

APPLICATION. QUIT

Utilizaremos la propiedad APPLICATION. STATUSBAR, cuando queramos abandonar Excel.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
38
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.2-El modelo de Objetos VBA-Workbooks


El objeto Workbooks representa a todos los libros abiertos.

El objeto Workbooks es parte de los objetos que forman colecciones.

Podemos referirnos a un libro por su nombre o por su posición dentro de la colección.

Si tenemos un solo libro abierto con el nombre Libro1.xlsm:

Workbooks("Libro1.xlsm") y Workbooks(1) son equivalentes


En todo momento existe solamente un libro activo y un solo libro desde donde se está
ejecutando una macro.

Al libro activo podemos referirnos como:

ActiveWorkbook
Al libro que está ejecutando la macro podemos referirnos como:

ThisWorkbook ó con el nombre que le hayamos puesto en la ventana propiedades


También podemos asignar un libro a una variable tipo Object o Workbook

Dim Libro As Workbook

Set Libro = Workbooks("Libro1.xlsm")


A partir de este momento podemos referirnos al libro Workbooks("Libro1.xlsm") como:

Libro

Propiedades:

WORKBOOKS(Libro).NAME

WORKBOOKS(Libro).SAVED = True/False

Metodos

WORKBOOKS.OPEN Archivo Excel

WORKBOOKS(Libro).SAVE

WORKBOOKS(Libro).CLOSE

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
39
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.2-El modelo de Objetos VBA-Workbooks

PROPIEDAD NAME

Nos permite saber el nombre del libro, es una propiedad solamente de lectura, es decir, no
podemos modificar el nombre del libro a través de esta propiedad..

PROPIEDAD SAVED

Nos permite averiguar si tenemos cambios pendientes de guardar.

Al guardar el libro, la propiedad se pone a False.

Al efectuar cualquier cambio, se pone a True.

Esta propiedad, controla el mensaje:

Si la propiedad está en True, se mostrará el mensaje antes de cerrar el libro.

Si la propiedad está en False, el mensaje no se mostrará.

Esta propiedad puede ser modificada en cualquier momento.

Por ejemplo, si queremos cerrar el libro sin guardar los cambios:

ActiveWorkbook.Saved = False

De esta manera, al cerra el libro, el usuario no tendría opción de guardar el libro, por el
contrario, si pusiéramos:

ActiveWorkbook.Saved = True

El usuario tendría opción de guardar el libro

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
40
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.2-El modelo de Objetos VBA-Workbooks

METODO OPEN

Nos permite abrir un libro.

Por ejemplo, para abrir el libro Libro2.xlsx en C:

Workbooks.Open “C:\Libro2.xlsx”
Una vez abierto, el libro se añade al final de la colección Workbooks .

METODO SAVE

Nos permite guardar un libro.

Por ejemplo, para guardar el libro del ejemplo:

Workbooks(“C:\Libro2.xlsx”).Save
METODO CLOSE

Nos permite cerrar un libro.

Por ejemplo, para cerrar el libro del ejemplo:

Workbooks(“C:\Libro2.xlsx”).Close

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
41
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.3-El modelo de Objetos VBA-Worksheets

El objeto Worksheets representa a todos los hojas abiertos.

El objeto Worksheets es parte de los objetos que forman colecciones.

Podemos referirnos a una hoja por su nombre o por su posición dentro de la colección.

Si tenemos un solo libro abierto con una hoja:

Worksheets ("Hoja1") y Worksheets (1) son equivalentes


En todo momento existe solamente una hoja activa.

A la hoja activa podemos referirnos como:

ActiveSheet
También podemos asignar una libro a una variable tipo Object o Worksheet

Dim Libro As Worksheet

Set Hoja = Workbooks("Libro1.xlsm"). Worksheets ("Hoja1")


A partir de este momento podemos referirnos al libro a esa hoja como:

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
42
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Hoja

Propiedades:

WORKSHEETS(Hoja).NAME

WORKSHEETS(Hoja).VISIBLE

Metodos:

WORKSHEETS(Hoja).ADD

WORKSHEETS(Hoja).DELETE

5.3-El modelo de Objetos VBA-Worksheets


PROPIEDAD NAME

Representa el nombre de la hoja, a diferencia de la misma propiedad del libro, es una propiedad
de entrada y salida, es decir, con esta propiedad podemos modificar el nombre de la hoja

Workbooks("Libro1.xlsm"). Worksheets ("Hoja1") = ”Nueva Hoja1”


PROPIEDAD VISIBLE

Nos permite visualizar/ocultar la hoja.

Tiene tres opciones:

xlSheetVisible Visualiza la hoja.

xlSheetHidden Oculta la hoja, pero el usuario puede visualizarla .

xlSheetVeryHidden Oculta la hoja, pero el usuario no puede visualizarla.

Solo puede ser visualizada por VBA

Siempre debe existir una hoja visible, por tanto no se pueden ocultar todas las hojas.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
43
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.3-El modelo de Objetos VBA-Worksheets


METODO ADD

Nos permite crear una nueva hoja en blanco.

La hoja creada pasará a ser la hoja activa.

La hoja se crea con el nombre “Hoja” seguido de un número que indica su posición dentro de la
colección WorkSheets.

METODO DELETE

Nos permite eliminar una hoja. Al eliminarla nos aparecerá el mensaje:

Recordad que para eliminar los mensajes de Excel, tenemos la propiedad DisplayAlerts del
objeto Application:
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
44
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

APPLICATION.DISPLAYALERTS = FALSE
A continuación se muestra un ejemplo de cómo crear, cambiar el nombre y eliminar una hoja
dentro del libro activo.

Al eliminar una hoja, desaparece de la colección Worksheets.

5.4-El modelo de Objetos VBA-El objeto Range


Repasemos:

El objeto Range representa un rango de celdas .

Las celdas contenidas en un objeto Range, pertenecen a la misma hoja.

El objeto Range puede contener desde 1 hasta la totalidad de las celdas de una hoja .

Un objeto Range, puede contener varios rangos de celdas.

Los rangos de celdas contenidos en un objeto Range, pueden no ser contiguos.

Un objeto Range, puede contener filas, y/o columnas enteras de celdas

Un rango de celdas puede asignarse a una variable tipo Object o Range.

Para referirnos a un objeto Range, debemos indicarle la hoja a la que pertenece.

Para referirnos a una celda, Excel debe tener claro el camino a recorrer. Para referirnos a
la celda “A1” de l hoja Pedidos del Libro Ventas.xlsx, deberíamos escribir:

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
45
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Workbooks("Ventas.xlsx").Worksheets("Pedidos").Range("A1")
Afortunadamente, disponemos de herramientas para ayudarnos a no escribir tanto.

Ya dijimos que por el solo hecho de abrir un libro, disponemos de un libro activo y de
una hoja activa.

Si no indicamos ni a que libro, ni a que hoja pertenece un rango, se asumirá que el rango
pertenece a la hoja activa del libro activo.

Tras abrir el libro Ventas.xlsx y seleccionar la hoja Pedidos en el tab de hojas, para
referirnos a la celda “A1” bastaría con: Range("A1")

Repasemos las principales propiedades:

Propiedades

 VALUE
 FORMULA
 FONT
 INTERIOR
 CELLS
 OFFSET

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
46
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.4-El modelo de Objetos VBA-El objeto Range


PROPIEDAD VALUE

Representa el valor contenido en un rango, normalmente, estará referido a una sola celda.

Ejemplo 1, para asignar el valor Valencia a la celda A1:

Range(“A1”).Value = “Valencia”
Ejemplo 2, para asignar el valor 3.200,25 a la celda A1:

Range(“A1”).Value = 3200.25
Para VBA, el separador decimal, es siempre el punto(.)

PROPIEDAD FORMULA

Representa la fórmula contenida en un rango, normalmente, estará referido a una sola celda.

La escribiremos la fórmula exactamente igual que lo haríamos en la hoja, co la única diferencia


que lo haremos entre comillas(“”).

Los componentes de una fórmula pueden estar contenidos en variables.

Por ejemplo, para sumar el rango B1:B5:

Range(“A1”).Formula = “=Sum(“B1:B5”)”
Observad que hemos escrito Sum y no Suma, ello es debido a que las funciones deben ser las
del idioma inglés.

No obstatnte, existe una variedad de la propiedad Formula, FormulaLocal.

La propiedad FormulaLocal, nos permite especificar las funciones en el idioma que se haya
especificado como idiom DE Excel en el momento de su instalación, en nuestro caso, el
castellano.

Por ejemplo, para sumar el rango B1:B5:

Range(“A1”).FormulaLocal = “=Suma(“B1:B5”)”
Los componentes de una fórmula pueden estar contenidos en variables.

La propiedad Formula funcionará en cualquier ordenador, con independecia del idioma de


instalación de Excel.

La propiedad FormulaLocal solo funcionará en los ordenadores cuyo idioma de instalación de


Excel sea el mismo

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
47
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.4-El modelo de Objetos VBA-El objeto Range


PROPIEDAD FONT

Nos permite definir la fuente, formato y color del texto contenido en el rango.

Esta propiedad, tiene varias “SUBPROPIEDADES”

.NAME

Para escoger la fuente:

Range(“A1”).Font.Name = “Arial”
.BOLD

Para poner el texto en negrita

Range(“A1”).Font.Bold = True
.UNDERLINE

Por ejemplo, para subrayar el texto

Range(“A1”).Font.Underline = True
.ITALIC

Por ejemplo, para Inclinar el texto

Range(“A1”).Font.Italic = True
.Color

Nos permite escoger el color del texto.

Para definir el color del texto se nos ofrecen dos posibilidades.

Por el número de color de Windows:

Un número absoluto entre 0 y 16777216

Las variables de color predefinidas de VBA

Color RGB

Por el índice de color de Excel:

Un número de 0 a 55 que representan los colores primarios de la paleta


de colores de Excel.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
48
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.4-El modelo de Objetos VBA-El objeto Range


PROPIEDAD FONT

.Color (Continuación)

Ejemplo, supongamos que queremos poner el texto en color VERDE:

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
49
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

VALORES Y COLORES DEL INDICE DE COLOR DE EXCEL

5.4-El modelo de Objetos VBA-El objeto Range


PROPIEDAD INTERIOR

Nos permite definir la fuente, formato y color del texto contenido en el rango.

Esta propiedad, tiene varias “SUBPROPIEDADES”

.Color

Nos permite escoger el color de relleno

Ver propiedad Font.Color

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
50
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

PROPIEDAD CELLS

Nos permite referenciar un rango por el número de fila y columna.

Por ejemplo:

Cells(3, 5) donde 3 es la fila y 5 la columna

5.4-El modelo de Objetos VBA-El objeto Range


PROPIEDAD OFFSET

Nos permite referenciar un rango por desplazamiento relativo a fila/columna.

Por ejemplo:

Activecell.Offset(2,4) donde 2 es el desplazamiento en filas y 4 el de columnas con


repecto a la celda activa. Los valores de desplazamiento , pueden ser cero o negativo. Si
los valores de desplazamiento son positivos, nos desplazaremos hacia abajo y hacia la
derecha, y si son negativo, hacia arriba y hacia la izquierda. Si los valores de
desplazamiento son cero, no se efectuará desplazamiento alguno.

Supongamos que tenemos la celda B2 como celda activa

Activecell.Offset(1,1) indicaría 1 fila hacia abajo y 1 columnas hacia a la derecha,


lo que equivaldría a Range(“C3”).

Activecell.Offset(0,1) indicaría 1 columnas hacia a la derecha, lo que equivaldría


a Range(“C2”).

Activecell.Offset(1,0) indicaría 1 fila hacia abajo, lo que equivaldría a


Range(“B3”).

El mismo ejemplo pero con valores de desplazamiento negativo:

Activecell.Offset(-1,-1) indicaría 1 fila hacia arriba y 1 columnas hacia a la


izquierda, lo que equivaldría a Range(“A1”).

Activecell.Offset(0,-1) indicaría 1 columnas hacia a la izquierda, lo que


equivaldría a Range(“A2”).
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
51
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Activecell.Offset(-1,0) indicaría 1 fila hacia arriba, lo que equivaldría a


Range(“B1”).

5.4-El modelo de Objetos VBA-El objeto Range


Hasta aquí las propiedades mas usuales del objeto Range.

Vamos a ver que hemos conseguido con este objeto:

 Asignar un contenido
 Asignar el formato al contenido (Faltan bordes, alineación y comentarios)
 Asignar color al contenido
 Asignar color de relleno

Nos permite definir la fuente, formato y color del texto contenido en el rango.

Ahora vamos a ver algún método de este objeto

Metodos

 CLEAR
 COPY
 PASTESPECIAL
 MERGE/UNMERGE

METODO CLEAR

Utilizaremos el método CLEAR para borra un objeto Range

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
52
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Por ejemplo, para borrar completamente el rango A1:B4:

Range(“A1:B4”).Clear

Para borrar solo el contenido:

Range(“A1:B4”).ClearContents

Para borrar solo los comentarios:

Range(“A1:B4”).ClearComents

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
53
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.4-El modelo de Objetos VBA-El objeto Range


METODO COPY

Este método copia el rango al portapapeles.

Por ejemplo, vamos a copiar el rango A1:B4:

Range(“A1:B4”).Copy
METODO PASTESPECIAL

Este método pega el contenido del portapapeles.

Por ejemplo, vamos a pegar el rango del ejemplo anterior en la celda D7:

Range(“D7”).PasteSpecial
Si solo queremos pegar los valores:

Range(“D7”).PasteSpecial xlValues
Si solo queremos pegar los formatos:

Range(“D7”).PasteSpecial xlFormats
Si solo queremos pegar las fórmulas :

Range(“D7”).PasteSpecial xlFormulas
Si solo queremos pegar los comentarios :

Range(“D7”).PasteSpecial xlComents
Si queremos pegar todo excepto bordes :

Range(“D7”).PasteSpecial xlAllExceptBorders
METODOS MERGE/UNMERGE

Para combinar y deshacer combinación de celdas

Por ejemplo, para combinar las celdas del rango A1:B4:

Range(“A1:B4”).Merge
Si queremos deshacer la combinación:

Range(“A1”).Unmerge (o cualquier celda del rango combinado)


__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
54
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

5.4-El modelo de Objetos VBA-El objeto Range


METODO COPY

Veamos una imagen de varias instrucciones copiar/pegar.

RECORDAD SIEMPRE QUE:

SI NO ESPECIFICAMOS NI EL LIBRO, NI LA HOJA, CUANDO NOS REFERIMOS


A UN RANGO, SE ASUME QUE EL LIBRO ES EL LIBRO ACTIVO, Y QUE LA
HOJA ES LA HOJA ACTIVA

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
55
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

6.-La segunda macro


Con todo lo que hemos aprendido vamos a realizar nuestra segunda macro.

Primer requerimiento:

 Colocar en el rango A1:A10 los 10 primeros múltiplos de 3


 Colocar en el rango B1:B10 los 10 primeros múltiplos de 5
 Colocar en el rango C1:C10 los 10 primeros múltiplos de 7

A poco que nos fijemos, nos daremos cuenta que podemos realizar todas las operaciones en un
solo bucle, con ello, mejoramos la eficiencia de nuestra macro.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
56
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

6.-La segunda macro

La misma solución igualmente válida pero utilizando Cells en lugar de Range.

Recordad que Cells es un objeto Range de una sola celda

Observad que en Cells la notación es Fila, Columna en lugar de Columna Fila como en Range

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
57
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

6.-La segunda macro

Todavía, con lo que sabemos, podríamos realizar otra variación utilizando un bucle For Each

En la instrucción IF, si se escribe en la misma línea de código, no es


necesario utilizar la instrucción End If

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
58
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

6.-La segunda macro


Vamos a seguir añadiendo mas requerimientos a nuestra macro.

Segundo requerimiento:

 En el rango A1:C10

Marcar el texto de color rojo si el valor de la celda es menor de 35

Marcar el texto de color azul si el valor de la celda es mayor de 50

Para añadir estos nuevos requerimientos podemos partir de cualquiera de soluciones


anteriores.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
59
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

vbRed, vbBlue y vbYellow forman parte de las constantes de color


de VBA. Ver la lista completa en la Ayuda de VBA.

6.-La segunda macro


Vamos a seguir añadiendo mas requerimientos a nuestra macro.

Tercer requerimiento:

 En el rango D1:D10

Colocar fórmula suma A1:C10, respectivamente

Para añadir estos nuevos requerimientos partiremos de la solución anterior.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
60
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

La fórmula asignada es idéntica a la entrada de forma manual


directamente en la hoja

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
61
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

6.-La segunda macro


Y por ultimo:

Cuarto requerimiento:

 Copiar los valores del rango A1:D10 en E1

Para añadir estos nuevos requerimientos partiremos de la solución anterior.

xlValues forma parte de las constantes de pegado de VBA.

Ver la lista completa en la Ayuda de VBA.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
62
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

7.-Herramientas de depuración
Ya sabemos hacer alguna macro, ya sabemos ejecutarlas desde la lista de macros en Excel, pero,
siempre hay un pero ¿ Que pasa si la macro no funciona como esperamos ? ¿ Que pasa si la
macro da error ?.

El editor de Vba dispone de un conjunto de herramientas de depuración y seguimiento.

Vamos a ver algunas. Antes de empezar vamos a aprender como se ejecuta una macro desde el
Editor de Vba, muy sencillo, tenemos 3 opciones:

 Pulsar F5, ó
 Pulsar el icono “play” de la barra de herramientas, ó
 Pulsar Ejecutar Sub/Userform en el menú Ejecutar

Para ejecutar cualquier procedimiento, debemos estar dentro de él.

En la ventana de código, hacer click ente Sub-EndSub y luego ejecutar.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
63
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

7.-Herramientas de depuración
Ahora vamos a ver como se ejecuta una macro instrucción por instrucción.

También es muy sencillo. También tenemos varias opciones:

 Pulsar F8 ó
 Pulsar Paso a paso por instrucciones en el menú Depuración

Pues empecemos, pulsemos F8 en una de las macros que hemos visto hasta ahora.

El código VBA aparecerá remarcado en amarillo en la línea de la primera instrucción de la macro

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
64
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

7.-Herramientas de depuración
Cada vez que pulsemos F8, la ejecución avanzará a la siguiente instrucción

Y así sucesivamente hasta su finalización o hasta que detengamos la ejecución.

Además de ver el flujo de las instrucciones, también podemos ver el contenido de objetos y
variables, simplemente colocándonos encima de ellos.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
65
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
66
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

7.-Herramientas de depuración
Sin embargo ir depurando instrucción por instrucción se nos hará largo y tedioso en la mayoría
de ocasiones, sobretodo, cuando manejamos un mínimo volumen de información.

Para evitar este problema VBA nos proporciona los llamado puntos de interrupción

Un punto de interrupción es una marca en una instrucción en que se detendrá la ejecución


cuando el flujo de proceso llegue a ella.

Para realizar un punto de interrupción, solamente hay que pulsar en la parte extremo izquierda
de la ventana a la altura de la instrucción:

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
67
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

7.-Herramientas de depuración
Al ejecutar la macro, el proceso se detendrá al llegar al primer punto de interrupción.

El proceso, irá saltando de punto de interrupción al siguiente al reanudar la ejecución de la


macro (F5).

Se pueden poner tantos puntos de interrupción como se quiera, ya sea antes o durante la
ejecución de la macro.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
68
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________

Para quitar un punto de interrupción pulsar sobre el punto rojo.

__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
69

También podría gustarte