Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MACROS Intermedio For MacroAntoni
MACROS Intermedio For MacroAntoni
__________________________________________________________________________________________________________
INTERMEDIO
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
1
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
2
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
1.-MACROS-Definición
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
3
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
En esta sección vamos a seguir profundizando en nuestro conocimiento del lenguaje VBA.
2.1-Procedimientos
2.2-Funciones
2.3-Variables
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
4
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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.
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
__________________________________________________________________________________________________________
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.
Un parámetro es un valor que se le pasa a un procedimiento para que pueda operar con él.
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
__________________________________________________________________________________________________________
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 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
__________________________________________________________________________________________________________
Recordemos:
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
__________________________________________________________________________________________________________
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
__________________________________________________________________________________________________________
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
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
14
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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:
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
15
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
No hay que confundir el tipo de dato de una variable VBA con el formato de celda de Excel, son
parecidos, pero no equivalentes.
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
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
17
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
<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.
__________________________________________________________________________________________________________
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.
<Código>
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
__________________________________________________________________________________________________________
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.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
21
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Esta forma de ejecutar bucles, nos permite realizar un conjunto de instrucciones mientras o
hasta que dure o cambie una determinada condición.
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
__________________________________________________________________________________________________________
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.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
24
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
25
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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.
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.
Estas dos funciones son las únicas funciones que no requieren parámetros.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
26
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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:
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
27
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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 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
__________________________________________________________________________________________________________
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.
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
__________________________________________________________________________________________________________
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.
__________________________________________________________________________________________________________
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
__________________________________________________________________________________________________________
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:
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
33
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
34
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
35
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
APPLICATION
WORKBOOKS
WORKSHEETS
RANGE
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
36
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Propiedades:
APPLICATION.SCREENUPDATING = True/False
APPLICATION.DISPLAYALERTS = True/False
APPLICATION.DISPLAYSTATUSBAR = True/False
Métodos:
APPLICATION.STATUSBAR = Expresión
APPLICATION.QUIT
APPLICATION.SCREENUPDATING
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.
En nuestro ejemplo de actualización de 50.000 celdas, la pantalla solo se refrescará una vez, con
el consiguiente ahorro de tiempo.
APPLICATION.DISPLAYALERTS
APPLICATION.DISPLAYSTATUSBAR
APPLICATION. STATUSBAR
APPLICATION. QUIT
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
38
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
ActiveWorkbook
Al libro que está ejecutando la macro podemos referirnos como:
Libro
Propiedades:
WORKBOOKS(Libro).NAME
WORKBOOKS(Libro).SAVED = True/False
Metodos
WORKBOOKS(Libro).SAVE
WORKBOOKS(Libro).CLOSE
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
39
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
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
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
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
40
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
METODO OPEN
Workbooks.Open “C:\Libro2.xlsx”
Una vez abierto, el libro se añade al final de la colección Workbooks .
METODO SAVE
Workbooks(“C:\Libro2.xlsx”).Save
METODO CLOSE
Workbooks(“C:\Libro2.xlsx”).Close
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
41
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Podemos referirnos a una hoja por su nombre o por su posición dentro de la colección.
ActiveSheet
También podemos asignar una libro a una variable tipo Object o Worksheet
__________________________________________________________________________________________________________
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
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
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
__________________________________________________________________________________________________________
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
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.
El objeto Range puede contener desde 1 hasta la totalidad de las celdas de una hoja .
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")
Propiedades
VALUE
FORMULA
FONT
INTERIOR
CELLS
OFFSET
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
46
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Representa el valor contenido en un rango, normalmente, estará referido a una sola celda.
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.
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.
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.
Range(“A1”).FormulaLocal = “=Suma(“B1:B5”)”
Los componentes de una fórmula pueden estar contenidos en variables.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
47
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Nos permite definir la fuente, formato y color del texto contenido en el rango.
.NAME
Range(“A1”).Font.Name = “Arial”
.BOLD
Range(“A1”).Font.Bold = True
.UNDERLINE
Range(“A1”).Font.Underline = True
.ITALIC
Range(“A1”).Font.Italic = True
.Color
Color RGB
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
48
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
.Color (Continuación)
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
49
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Nos permite definir la fuente, formato y color del texto contenido en el rango.
.Color
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
50
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
PROPIEDAD CELLS
Por ejemplo:
Por ejemplo:
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.
Metodos
CLEAR
COPY
PASTESPECIAL
MERGE/UNMERGE
METODO CLEAR
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
52
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Range(“A1:B4”).Clear
Range(“A1:B4”).ClearContents
Range(“A1:B4”).ClearComents
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
53
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Range(“A1:B4”).Copy
METODO PASTESPECIAL
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
Range(“A1:B4”).Merge
Si queremos deshacer la combinación:
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
55
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Primer requerimiento:
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
__________________________________________________________________________________________________________
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
__________________________________________________________________________________________________________
Todavía, con lo que sabemos, podríamos realizar otra variación utilizando un bucle For Each
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
58
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Segundo requerimiento:
En el rango A1:C10
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
59
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Tercer requerimiento:
En el rango D1:D10
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
60
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
61
CURSO: MACROS-BASICO By Antoni
__________________________________________________________________________________________________________
Cuarto requerimiento:
__________________________________________________________________________________________________________
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 ?.
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
__________________________________________________________________________________________________________
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.
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.
__________________________________________________________________________________________________________
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
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
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.
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
__________________________________________________________________________________________________________
__________________________________________________________________________________________________________
10/01/2011 9:36:20 488360059.doc
69