Está en la página 1de 51

CURSO: MACROS-BASICO

By Antoni
__________________________________________________________________________________________________________

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

MACROS EXCEL-CURSO BASICO

Queremos felicitarte por decidirte a efectuar este curso, con el se te abrirán un conjunto de
posibilidades tanto profesionales, como de conocimiento sobre informática.

Una macro, esconde tras de si un autentico lenguaje de programación que te servirá como
base para el estudio de los principales lenguajes de bases de datos e Internet.

Con las macros conseguirás llevar tus conocimientos sobre Excel donde ni siquiera lo imaginas
en este momento.

Aquí están los objetivos del curso:

 Que es una macro


 Que es VBA
 Que es el Editor de VBA
 Que es un Proyecto VBA
 Como se escribe una macro
 Donde se escribe una macro
 Tipos de macro
 Concepto de objeto
 Que es una propiedad
 Que es un método
 Que es un evento
 Cuales son las instrucciones básicas de VBA
 Cuales son los principales objetos de Excel
 Que es y para que sirve la ficha del programador
 Que es y para que sirve la grabadora de macros
 Hacer un macro y comprender su funcionamiento

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

1.-MACROS-Definición

Una macro es un conjunto de instrucciones escritas en un lenguaje de programación


denominado Visual Basic for Applications que Microsoft implementa en las distintas
aplicaciones de Microsoft Office.

Trabajando en nuestra hoja, nos encontramos a menudo, el tener que realizar tareas tediosas
y repetitivas, una macro es la herramienta que nos va a permitir automatizar dichas tareas.

El termino macro, es un poco ambiguo, porque no en todos los entornos informáticos tiene el
mismo significado, veremos muchas veces que cuando hablamos de macro, programa,
procedimiento, formulario, estamos hablando de lo mismo.

Absolutamente todas las acciones que realizamos en nuestra hoja tienen su traducción en
“lenguaje macro”, desde el simple hecho de seleccionar una celda hasta la creación de una
tabla dinámica.

También podemos interactuar con el resto de aplicaciones de Microsoft Office gracias a los
objetos incluidos dentro de Visual Basic for Applications.

Incluso podemos dialogar con el propio Windows, gracias a unos “pequeños programas”
denominados Windows Application Program Interface, comúnmente conocidos como APIS.

UNA MACRO ES UN PROGRAMA

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

2.-VISUAL BASIC FOR APPLICATIONS (VBA)-Descripción general

Visual Basic for Applications, en adelante VBA, es un lenguaje de programación.

VBA es un lenguaje basado en el lenguaje de programación Visual Basic y complementado con


instrucciones especificas para tratar las distintas especificaciones de las aplicaciones de
Microsoft Office.

En adelante, cuando mencionemos VBA, nos estaremos refiriendo únicamente a la parte de


VBA implementada en Microsoft Excel, en adelante Excel.

Dado que estamos en un curso de iniciación, todas las referencias que se hagan a Excel y VBA,
pueden no estar completas en relación a sus opciones y utilidades.

UNA MACRO ES UN PROGRAMA ESCRITO EN VBA PARA EXCEL

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

2.1-VISUAL BASIC FOR APPLICATIONS (VBA)-Procedimientos

VBA, es un conjunto de instrucciones con una estructura específica en función de lo que hace
cada una de ellas.

A un conjunto de instrucciones VBA se le denomina código VBA.

El código VBA, esta organizado en procedimientos.

Un procedimiento es un trozo de código delimitado por un inicio de procedimiento y un final


de procedimiento.

Los procedimientos pueden ser públicos y privados.

Los procedimientos pueden contener parámetros y pueden ser ejecutados desde otros
procedimientos.

Los procedimientos tienen un nombre que no puede estar repetido.

Para ejecutar un procedimiento debemos invocar a su nombre.

UNA PROCEDIMIENTO ES UN CONJUNTO DE INSTRUCCIONES VBA QUE


EMPIEZA CON UNA INSTRUCCIÓN SUB, Y TERMINA CON UNA
INSTRUCCIÓN END SUB

UNA MACRO ES UN PROCEDIMIENTO PUBLICO SIN PARAMETROS

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

2.2-VISUAL BASIC FOR APPLICATIONS (VBA)-Funciones


Las funciones son procedimientos especiales que deben ser ejecutados desde otro
procedimiento, y si se programan especialmente para ello, pueden ser utilizadas como
fórmulas en la hoja.

VBA incorpora sus propias funciones.

VBA incorpora funciones específicas de Excel.

Nosotros, podemos programar nuestras propias funciones con VBA.

Una función es un procedimiento especial, pero es un procedimiento, por lo que tiene un


nombre, un inicio y un final.

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

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

2.3-VISUAL BASIC FOR APPLICATIONS (VBA)-Variables


Con las variables, iniciamos un breve repaso a las instrucciones del lenguaje VBA, aquellos que
ya habeis programado en otros lenguajes, esta parte os va a parecer un poco aburrida, si
quereis, os la podeis saltar hasta el próximo capítulo.

Una variable es un trozo de memoria donde podemos colocar información.

Una variable tiene un nombre único dentro de un procedimiento.

Las variables, pueden definirse en cualquier lugar de un procedimiento.

Las variables, pueden incluso no definirse.

Las variables, pueden ser de muchos tipos, en función de los datos que vaya a contener.

VBA, utilizará el tipo de dato definido en la variable en las instrucciones donde aparezca la
variable.

A veces, la definición o el contenido de la variable no es compatible con la instrucción VBA que


queremos ejecutar.

Una variable no definida se autodefinirá en la primera instrucción que se use.

LAS VARIABLES SE DEFINEN CON UNA INSTRUCCIÓN DIM

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

2.3-VISUAL BASIC FOR APPLICATIONS (VBA)-Variables


Hemos dicho que las variables, pueden no definirse.

Las variables no definidas, se autodefinen la primera vez que aparecen en el código.

No obstante, es conveniente definir las variables para evitar errores, imaginemos que no
definimos las variables, y usamos una variable con nombre SelecciónDeDatos. Cuando la
utilicemos la primera vez, quedara autodefinida con el tipo de dato que precise la instrucción.

Imaginemos ahora que usamos esa variable en otra parte de la macro, y nos equivocamos al
escribirla, y escribimos SeleccionDeDatos (Sin el acento en la letra o), VBA definirá de forma
automática otra variable ya que es la primera vez que aparece, lo que nos conducirá a un
funcionamiento erróneo de la macro, y que a veces es muy difícil de detectar.

Para evitar estos errores, disponemos de una instrucción:

OPTION EXPLICIT

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

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

2.3-VISUAL BASIC FOR APPLICATIONS (VBA)-Variables


Habitualmente, utilizaremos tres tipos de variables preferentemente

 Las variables numéricas

Solo pueden contener números

 Las variables de texto

Pueden contener cualquier carácter, pero no pueden usarse en operaciones


aritméticas

 Las variables de fecha

Pueden contener solo fechas.

VBA, no es tan flexible como Excel a la hora de manipular variables, tal como lo hace Excel con
las celdas, por lo tanto, hemos de procurar utilizar variables de acuerdo a como lo requiere la
instrucción a utilizar.

Hay una serie de funciones VBA para la conversión de los tipos de datos de variables.

HAY VARIABLES DE MUCHOS TIPOS, PERO USAREMOS HABITUALMENTE


LAS VARIABLES DE NUMERO, TEXTO Y FECHA

EL NOMBRE DE UNA VARIABLE ES UNA COMBINACION CUALQUIERA DE


NUMEROS Y LETRAS Y ALGUNOS CARACTERES ESPECIALES.

PERO OBLIGATORIAMNETE DEBE EMPEZAR POR UNA LETRA

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

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


Ya sabemos lo que son las variable, pero sin embargo, no sabemos que hacer con ellas.

¿ Y que podemos hacer con ellas ?, Básicamente 2 cosas:

Asignarles un valor

Preguntar por su contenido

Asignación de un valor a una variable

Un valor se asigna a una variable, con el nombre de la variable seguido de un signo


igual y a continuación el valor que queramos asignarle.

Al valor que se asigna a una variable se denomina expresión.

¿ Y que es una expresión?, una expresión es cualquier combinación de variables, valores,


celdas y operaciones aritméticas.

PARA ASIGNAR UN VALOR A UNA VARIABLE UTILIZAREMOS EL NOMBRE


DE LA VARIABLE SEGUIDO DEL SIGNO IGUAL

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

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

Ahora, ya sabemos asignar valores a las variables, pero a menudo nos encontraremos que el
valor de una variable está condicionada por el valor de otra variable o expresión, vamos a ver
como se hace esto.

Preguntar por el contenido de una variable

Para preguntar por el contenido de una variable, utilizaremos la instrucción IF (Si en


inglés). El formato simple de la instrucción (o sentencia) es la siguiente:

IF variable condición expression THEN

<Código si se cumple la condición>

ELSE

<Código si no se cumple la condición>

END IF

Condición admite los valores:

Menor que <

Mayor que >

Igual que =

Menor o igual que <=

Mayor o igual que >=

No igual que <>

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

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

PARA PREGUNTAR POR EL CONTENIDO DE UNA VARIABLE


UTILIZAREMOS LA INSTRUCCIÓN IF

EL CONTENIDO DE LAS VARIABLES DE TEXTO DEBE IR ENCERRADO ENTRE


COMILLAS DOBLES ( “ ….. “) PARA NO SER CONFUNDIDO CON EL
NOMBRE DE UNA VARIABLE

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

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

Casi estamos en condiciones de hacer una macro, lástima que no sabemos ni donde escribirla,
ni como mostrar resultados, bueno, que no cunda el pánico, vamos a empezar por la forma de
cómo mostrar los resultados de una macro, explicando como se puede ver el contenido de una
variable.

Para mostrar el contenido de una o varias variables, utilizaremos la instrucción MSGBOX.

El formato simple de la instrucción (o sentencia) es la siguiente:

MSGBOX expresión [&expresión]……. [&expresión]

Si ejecutáramos la macro, aparecería:

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

Es evidente que el importe mostrado es totalmente ficticio, y es solo a modo de ejemplo.

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

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

Y ya para rematar esta introducción a VBA, vamos a hablar de bucles.

Un bucle es un conjunto de instrucciones que se ejecuta un número determinado de veces.

Para no tener que hacer el control de forma manual, VBA nos proporciona la instrucción
FOR/NEXT. El formato de la instrucción es el siguiente:

FOR variable = expression TO expression [STEP] expression

<Código>

NEXT variable

El siguiente ejemplo calcula 6! (Seis factorial=6*5*4*3*2*1):

PARA REPETIR UN CONJUNTO DE INSTRUCCIONES UN NUMERO DE


VECES UTILIZAREMOS LA INSTRUCCIÓN FOR/NEXT
__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 16
CURSO: MACROS-BASICO
By Antoni
__________________________________________________________________________________________________________

3-La ficha del programador

La ficha del programador es el canal de comunicación entre Excel y VBA.

La ficha del programador aparece en la cinta de opciones de Excel, pero como es opcional,
puede que no aparezca, si es este el caso:

Pulsar sobre el Botón de Office:

Escoger Opciones de Excel:

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

3-La ficha del programador

Marcar la opción Mostrar ficha Programador en la cinta de opciones

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

Después de Acepar, la cinta de Opciones de Excel, aparecerá con este aspecto:

Para abrir el Editor de VBA desde Excel, seleccionar la ficha del Programador, y pulsar sobre la
opción de Visual Basic:

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

3-La ficha del programador

El Editor de VBA, aparece configurado de acuerdo con la visualización que tenía la última vez
que se cerró.

El Editor de VBA, se puede configurar con múltiples ventanas en función de nuestras


necesidades, ninguna de ellas es obligatoria, por lo que es posible que nos aparezca de esta
forma:

Abrir el menú Ver, y seleccionar Explorador de Proyectos:

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

3-La ficha del programador

No os preocupéis si creeis que vamos demasiado rápido, mas adelante, volveremos sobre
nuestros pasos para explicar en detalle lo que ya hemos visto.

En estos momentos lo que nos interesa es llegar cuanto antes al lugar donde podemos
empezar a escribir nuestras macros. Este es el aspecto del Editor de VBA para un libro vacio.

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

Pulsar sobre “Hoja1”, nuevamente menú Ver, y luego escogemos la opción Código.

3-La ficha del programador

Y por fin hemos llegado a donde queríamos, por fin ya podemos escribir nuestro código VBA.

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

Todo esto, que parece engorroso, y lo es, pero podemos acortarlo así:

ALT+F11 EN LA HOJA EXCEL, Y DOBLE CLICK SOBRE EL OBJETO DESEADO

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

4-El proyecto VBA

VBA, es una aplicación distinta de Excel.

Ya hemos dicho que VBA esta basado en el lenguaje Visual Basic y ha sido adaptado para cada
uno de los distintas aplicaciones de Microsoft Office.

Una gran parte del código desarrollado para Visual Basic, es compatible con VBA, sin embargo,
nuestro código VBA difícilmente será compatible con Visual Basic.

De la misma manera, las macros desarrolladas con VBA para Excel, no serán compatibles con
el resto de módulos de Microsoft Office.

Ya sabemos entrar en el Editor de VBA, si no es así, abandonar este capítulo y volver a releer el
capítulo anterior, “La ficha del Programador”.

Recordemos el aspecto del Editor de VBA después de visualizar el Explorador de Proyectos.

Así se mostrará nuestro Editor de VBA al abrirlo con un libro nuevo.

EN EXCEL, SIEMPRE QUE APAREZCA VISUAL BASIC, SE REFIERE A VBA

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

4-El proyecto VBA -Objetos


Cuando abrimos Excel, VBA abre un Proyecto VBA.

El Proyecto VBA contiene todo el código VBA asociado al libro que acabamos de abrir.

Ya hemos comentado que el código VBA está organizado por procedimientos y funciones.

Los procedimientos y funciones, deben estar asociados a un Objeto del Proyecto VBA

El Proyecto VBA esta organizado por Tipo de Objeto.

Existen 4 tipos de objeto distintos:

 Objetos Excel
 Formularios
 Módulos normales
 Módulos de clase

Los Objetos Excel (1 por cada hoja y 1 por libro), se crean de forma automática.

El resto de objetos deben crearse de forma manual.

Para crear un Objeto, click derecho sobre la ventana del Proyecto VBA y:

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

4-El proyecto VBA

4-El proyecto VBA -Objetos

Pueden crearse tantos Objetos como sean necesarios.

Cada objeto, puede contener un número indeterminado de procedimientos y funciones.

PARA ACCEDER AL CÓDIGO VBA DE UN OBJETO MENU\VER\CODIGO

DIRECTAMENTE, DOBLE CLICK SOBRE EL OBJETO

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

4-El proyecto VBA -Eventos

Por su comportamiento, podríamos dividir los objetos en 2 grupos:

 Los que tienen eventos asociados


 Los que no tiene eventos asociados

Las hojas, el libro y los formularios, tienen eventos asociados, los módulos no.

Un evento es un suceso que ocurre en el tiempo asociado con el objeto.

A un evento, se puede asociar código VBA a través de unos procedimientos especiales


destinados a tal fin.

Abrir o cerrar un libro, seleccionar un rango en una hoja, descargar un formulario, son
ejemplos de eventos.

En el momento que ocurre el evento en el objeto, se ejecuta de forma automática el


procedimiento asociado a dicho evento.

Por supuesto, no es necesario asociar código VBA a un evento, o lo que es lo mismo, solo se
ejecutarán los eventos que tengan código VBA asociado.

Estos serían los eventos asociados a una hoja Excel

LOS EVENTOS SON SUCESOS TEMPORALES DE LOS OBJETOS A LOS QUE


PODEMOS ASOCIARLES UN PROCEDIMIENTO VBA CUANDO OCURREN.

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

4-El proyecto VBA -Propiedades

Todos los objetos llevan implícitas unas propiedades.

Las propiedades de los objetos son como el equipamiento de nuestro vehículo, pero a
diferencia de estas, en los objetos se pueden cambiar, aunque no todas.

Todos los objetos, tienen una propiedad en común: el nombre.

El nombre de un objeto, no puede estar repetido dentro del Proyecto VBA.

PROPIEDADES DE LA HOJA2

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

4-El proyecto VBA -Métodos

Al igual que las propiedades, todos los objetos, excepto los módulos, pueden soportar una
serie de acciones denominadas métodos.

Abrir un libro, añadir una hoja, eliminar una columna, son ejemplos de métodos.

Normalmente los métodos desencadenan eventos en el objeto.

En definitiva podemos resumir que, cualquier hecho en el proyecto lleva implícitas 4 preguntas
fundamentales:

QUE: METODO/INSTRUCCIÓN VBA

COMO: PROPIEDAD

CUANDO: EVENTO

DONDE. OBJETO/VARIABLE

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

5-El modelo de Objetos VBA

Vamos a decir otra vez, que VBA esta basado en el lenguaje Visual Basic y ha sido adaptado
para cada uno de los distintas aplicaciones de Microsoft Office, en nuestro curso, solo
hablaremos de la adaptación a Excel.

Esta adaptación ha sido posible gracias al denominado Modelo de Objetos de VBA para Excel.

El Modelo de Objetos de VBA para Excel, en adelante Modelo de Objetos está formado por
una infinidad de objetos, los cuales tienen una estructura jerárquica.

Esta estructura jerárquica, es similar a la que tienen los ficheros en una unidad de
almacenamiento de nuestro PC.

Para VBA todo aquello que no forma parte de las instrucciones y funciones básicas, son
objetos.

Un objeto VBA, tiene, o puede tener, sus propiedades, métodos y eventos, recordad el QUE, el
COMO, el CUANDO y el DONDE, donde el Objeto es el DONDE.

Ahora vamos a ver los 4 níveles principales del Modelo de Objetos.

EL MODELO DE OBJETOS VBA TIENE UNA ESTRUCTURA JERARQUICA

__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 30
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.

Alguna de las propiedades cambiadas a nivel de este objeto serán permanentes, hasta que no
sean cambiadas de nuevo. Por ello, debemos ser muy cuidadosos a la hora de manipular este
objeto, y hemos de restaurar a sus valores iniciales aquellas propiedades que hayamos
cambiado.

A lo largo del curso, iremos viendo las propiedades y métodos de utilización mas frecuente.

En este ejemplo, vemos como se visualiza/oculta la barra de fórmulas:

EL OBJETO APPLICATION FIJA CARACTERISTICAS A NIVEL GENERAL

__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 31
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.

Es importante distinguir al objeto Application del objeto Workbooks.

Cuando abrimos Excel, estamos “abriendo” el objeto Application, pero también estamos
“abriendo” el objeto Workbooks con un libro vacío.

Si después, abrimos otro libro, el objeto Workbooks, pasará a tener 2 libros, mientras el objeto
Application permanecerá inalterable

Con el objeto Workbooks, entramos de lleno en un tema que es fundamental para el


desarrollo de nuestras macros, por lo tanto es muy importante que prestéis una atención
especial a este objeto y los dos que vienen a continuación, el objeto Worksheets y el objeto
Range.

Cuando abrimos un libro, se realiza una entrada en el objeto Workbooks, con un nombre, y
con una posición ordinal, por ejemplo, si abrimos el libro C:\MiCarpeta\MiLibro.xlsx, en el
objeto Workbooks, tendremos un nombre: MiLibro.xlsx y un número: 1

Cuando queramos referirnos a ese libro, lo haremos como:

Workbooks(“MiLibro.xlsx”)
O:

Workbooks(1)

Si ahora abriéramos otro libro, pasaría a ser el número 2, y el siguiente el 3,4,5,……n.

Un libro puede asignarse a una variable tipo Workbook .

Un libro está jerárquicamente bajo el objeto Application.

TODOS LOS LIBROS ABIERTOS SON OBJETOS QUE ESTAN DENTRO DE LA


COLECCIÓN WORKBOOKS

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

5.3-El modelo de Objetos VBA-Worksheets


El objeto Worksheets representa a todas las hojas de un libro.

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

En el momento de abrir un libro, ya hemos dicho que se añade un elemento al objeto


Workbooks, y también se crea un objeto Worksheets con todas las hojas de ese libro El
proceso, es idéntico al descrito para el objeto Workbooks, resumiendo:

El objeto Workbooks contiene los libros abiertos y cada uno de estos libros, contiene un
objeto Worksheets con sus respectivas hojas.

Cuando queramos referirnos a una hoja, lo haremos como:

Worksheets(“MiHoja”)
O:

Worksheets (1)
Si ahora añadiéramos otra hoja, pasaría a ser el número 2, la siguiente la 3,4,5,……n.

La hoja que tenemos a la vista, se le denomina “hoja activa”

A la hoja activa, a parte de las formas descritas, nos podemos referir a ella como:

ActiveSheet
Podemos convertir una hoja en hoja activa de esta forma:

Worksheets(“MiHoja”).Activate
Todos los objetos que son colecciones, tienen una propiedad que nos indica en todo momento
el número de objetos que contiene la colección, se trata de la propiedad Count, y para saber
el número de hojas, nos referiremos a ella de esta forma:

Worksheets.Count
Una hoja puede asignarse a una variable tipo Worksheet .

Una hoja está jerárquicamente bajo el objeto Application y el objeto Workbooks.

TODAS LAS HOJAS DE UN LIBRO SON OBJETOS QUE ESTAN DENTRO DE


LA COLECCIÓN WORKSHEETS. CADA LIBRO TIENE UNA COLECCIÓN
WORKSHEETS.

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

5.4-El modelo de Objetos VBA-El objeto Range


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 Range.

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

Si no indicamos a que hoja pertenece un objeto Range, se asumirá que el rango, pertenece a la
hoja activa.

Vamos a ver las diferentes formas de referirnos a una rango, supondremos que todos los
ejemplos se refieren a la hoja activa.

Para referirnos a una celda:

Range(“A1”)
Para referirnos a un rango de mas de una celda:

Range(“A1:B2”)
Para referirnos a dos celdas no contiguas:

Range(“A1, B2”)
Para referirnos a mas de un rango no contiguo de varias celdas:

Range(“A1:B2, D4:E6”)
Para referirnos a una fila

Range(“3:3”)
Para referirnos a una columna

Rango(“A:A”)

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

5.4-El modelo de Objetos VBA-El objeto Range

Para referirnos a mas de una fila

Range(“3:5”)
Para referirnos a mas de una columna

Range(“A:B”)
Para referirnos a varios rangos de celdas, filas y columnas

Range(“A1:B2, C3, C5, 6:7, G:F, K:K” )

Resumiendo, los rangos continuos de celdas en un objeto Range van separados por dos puntos
[:]

Si hay mas de un rango en un objeto Range, van separados por comas [,]

De la misma forma que hay una hoja activa, existe una celda activa

La celda activa es la que aparece seleccionada por el cursor al hacer click sobre una celda.

Podemos referirnos a la celda activa como:

Activecell
Podemos activar una celda de esta forma:

Range(“A1”).Activate
Podemos referirnos a un objeto Range de una sola celda:

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

UN OBJETO RANGE, ADEMÁS DE CONTENER EL VALOR DE LAS CELDAS,


CONTIENE TODOS SUS ATRIBUTOS (Fuente, colores, bordes,
validaciones, formula, etc….. )

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

6.-La grabadora de macros-¿Qué es?, ¿Cómo se usa?


La grabadora de macros es una herramienta que Excel pone a nuestra disposición para
facilitarnos la confección de macros.

La grabadora de macros, una vez arrancada, va registrando todo lo que hacemos en nuestra
hoja, pero en lenguaje VBA.

Las macros que genera la grabadora de macros genera un código VBA idéntico a si lo
hubiéramos escrito de forma manual.

Nosotros podemos arrancar y parar la grabadora de macros.

Para arrancar la grabadora de macros, pulsar el botón grabar macro en la ficha del
programador.

Aparecerá un cuadro de dialogo en el que se nos solicita el nombre de la macro.

Pulsar Aceptar, y seguir trabajando con la hoja normalmente, hasta dar por terminada la
macro.

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

6.-La grabadora de macros-¿Qué es?, ¿Cómo se usa?


Para detener la grabadora de macros, pulsar el botón detener grabación en la ficha del
programador.

Y ya tenemos una macro guardada con el nombre Macro2.

Vamos a hacer una macro sencilla con la grabadora de macros.

Arrancar la grabadora de macros

Seleccionar la celda “D1”

Cerrar la grabadora de macros

Entrar en el Editor de VBA. Recordad como accedíamos al Editor de VBA. (Alt+F11)

Expandir Módulos, doble click en Módulo1, y debería aparecer una imagen parecida a
esta:

LA GRABADORA DE MACROS REGISTRA NUESTRAS ACCIONES EN LA


HOJA EN CODIGO VBA
__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 37
CURSO: MACROS-BASICO
By Antoni
__________________________________________________________________________________________________________

7.-El Editor de VBA-Introducción


Teóricamente deberíamos ser capaces de empezar a hacer macros, aunque para ello debemos
familiarizarnos con el Editor de VBA.

Ya hemos dicho anteriormente que Excel y VBA son aplicaciones distintas, y que por lo tanto
nuestras macros, no pueden escribirse en una hoja, deben escribirse en el lugar adecuado para
ello dentro de VBA y ese lugar es el Editor de VBA.

En el Editor de VBA pueden convivir distintas ventanas con distintos cometidos.

Para escribir una macro, necesitamos:

La ventana del proyecto

La ventana del código

En la ventana del proyecto, seleccionaremos el objeto al que queramos asociarle el código


VBA.

En la ventana de código es donde vamos a escribir ese código VBA.

Recordad como accedíamos al Editor de VBA. (Alt+F11)

AL EDITOR DE VBA SE ACCEDE A TRAVÉS DE LA FICHA DEL


PROGRAMADOR, PULSANDO VISUAL BASIC

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

LAS MACROS SE ESCRIBEN EN LA VENTANA CODIGO(F7) DEL EDITOR DE


VBA

8-La primera macro

Ya ha llegado el momento de que empecemos a utilizar lo que sabemos, repasémoslo


brevemente:

Una macro es un conjunto de instrucciones escritas en lenguaje VBA (Visual Basic for
Applications).

Las macros son un concepto de Excel, para VBA todo son procedimientos.

Desde el Editor de VBA se puede ejecutar cualquier clase de procedimiento.

Desde Excel, solo pueden ejecutarse las macros.

Una macro es un tipo concreto de procedimiento.

El código VBA se encuentra dentro de un objeto VBA. Los tipos de objetos VBA son:

 Hoja Excel
 Libro Excel
 Formulario
 Módulo
Cualquier instrucción VBA se halla obligatoriamente dentro de un procedimiento, que
obligatoriamente debe estar dentro de un objeto

Una macro es un procedimiento público dentro de un objeto VBA tipo módulo.

Todo este conjunto de objetos está bajo el Proyecto VBA.

El proyecto VBA se crea de forma automática al abrir un libro vacío.

El acceso al proyecto VBA, y por tanto a sus objetos y procedimientos se realiza a través de
Editor de VBA.

Para acceder al Editor de VBA tenemos la ficha del Programador en Excel.

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

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

8-La primera macro

Paralelamente, hemos aprendido también que Excel, de igual modo que el proyecto VBA, está
estructurado de forma jerárquica por objetos.

Excel, soporta una infinidad de objetos pero nuestro modelo básico para empezar va ser:

Application (Aplicación Excel)

Workbooks (Libros)

Worksheets (Hojas)

Range (Celdas)

En principio, para referirnos a una celda, al igual que a un fichero, deberíamos proporcionarle
todo el camino, así para referirnos a la celda A1 de la Hoja1 del libro Facturas.xlsx,
deberíamos escribir:

Application.Workbooks(“Facturas.xlsx”).Worksheets(“Hoja1”).Range(“A
1”)
Esto sería demencial, afortunadamente Excel nos proporciona una forma de evitar escribir la
totalidad de la estructura, para ello tenemos:

 El libro activo (Último libro abierto o activado)


 La hoja activa (Última hoja seleccionada)
 La celda activa (Última celda seleccionada)
Siempre que omitimos una parte de la jerarquía, VBA la sustituirá por su objeto activo
equivalente.

Por ejemplo, si abrimos Excel, y escribimos en el Editor de Vba, en la parte del código:

Range(“A1”) será interpretado como:

Workbooks(“Libro1.xlsx”).Worksheets(“Hoja1”).Range(“A1”)
Application, es asumido de forma automática salvo para los métodos y propiedades del propio
objeto, por lo que a partir de este punto se omitirá salvo que sea necesario.

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

8-La primera macro

Bien, empecemos.

Abrir Excel

Abrir el editor de VBA (Visual Basic en la ficha Programador o Alt+F11)

Visualizar ventana de Proyecto (Ver\Proyecto VBA o Ctrl+R)

Visualizar ventana de Código (Ver\Código o F7)

Ver ventana Propiedades

Si todo va bien, veremos esto:

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

8-La primera macro

Vamos a insertar un Módulo, recordad que las macros, son procedimientos públicos que se
escriben dentro de un Módulo.

Insertar\Módulo:

TODAS LAS MACROS SON PROCEDIMIENTOS

TODOS LOS PROCEDIMIENTOS NO SON MACROS

LOS PROCEDIMIENTOS PUEDEN SER PUBLICOS O PRIVADOS

LOS PROCEDIMIENTOS PUEDEN REQUERIR PARAMETROS

LAS MACROS SON PROCEDIMIENTOS PUBLICOS SIN PARAMETROS

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

LAS MACROS PUEDEN SER EJECTUDAS DESDE EXCEL A PARTIR DE UNA


LISTA

8-La primera macro

Lo primero que vamos a hacer es a obligarnos a definir todas las variables que vayamos a
utilizar en nuestra macro, si recordais, eso lo conseguimos con una opción a nivel de objeto.

Option Explicit

Si no definimos una variable, y hemos especificado Option Explicit, cuando ejecutemos


nuestra macro, aparecerá el siguiente mensaje:

Y se detendrá la ejecución.

Bien vamos a continuar. Ahora hemos de escoger el nombre de nuestra macro, en principio,
cualquier nombre nos vale.

Por ejemplo. GGG752 es un nombre válido. No obstante no nos dice nada acerca de lo que
hace, y aunque tampoco es excesivamente importante, si nos va a ayudar dentro de un tiempo
cuando queramos localizarla.

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

8-La primera macro


Como vamos a hacer nuestra primera macro, un nombre mas adecuado podría ser:

MiPrimeraMacroCursoBasico
Otro punto importante es poner una pequeña explicación de su cometido.

“Esta macro, es la primera macro que hago en el Curso Básico de Macros


de Ayuda Excel”

Vamos a realizar nuestra macro dentro del entorno de la Hoja1 del libro que tenemos abierto.

Por tanto para olvidarnos de tener que ir calificando todos nuestros rangos cada vez que los
utilicemos, activaremos la Hoja1 al principio de la macro.

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

8-La primera macro


Ahora, vamos a definir que va a hacer la macro:

Colocar los números del 1 al 5 en el rango A1:A5


Vamos a pensar en la forma mas adecuada de lograr la solución de lo que nos proponen.

La primera opción:

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

Ejecutemos la macro,…… vaya, si resulta que no sabemos como, fácil

SELECCIONAR “Ejecutar Sub/Userform” o PULSAR F5

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

8-La primera macro


El resultado después de ejecutar y visualizar la Hoja1, debe ser

¡¡¡ Ya sabemos como llenar de 1 a 5 el rango A1:A5 !!!


Y ahora os preguntareis, ¿ Para llegar a esto me he tenido que leer mas de 50 páginas. ?

Tranquilos, vamos a la segunda opción, utilizaremos un bucle For/Next.

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

La instrucción FOR/NEXT, necesita una variable numérica con la que


controlar el número de veces que se ejecutan las instrucciones dentro
del bucle.

8-La primera macro


Y ahora os seguireis preguntando ¿ No hubiera sido mas sencillo hacerlo directamente en la
hoja ?

Pues la respuesta, francamente, es un si rotundo. Pero ahora, imaginemos que en vez de tener
que llenar el rango A1:A5, hemos de rellenar el rango A1:A200, simplemente cambiando el
bucle lo tendríamos solucionado:

Si habeis estado atentos, habréis observado que hemos eliminado la propiedad value del
objeto Range:

El motivo no es otro, que hacer notar que todos los objetos tienen una propiedad por defecto.
__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 49
CURSO: MACROS-BASICO
By Antoni
__________________________________________________________________________________________________________

LA PROPIEDAD POR DEFECTO DE RANGE ES VALUE

LA PROPIEDAD VALUE DE RANGE CONTIENE EL VALOR DEL RANGO

8-La primera macro


Vamos a añadir un nuevo requerimiento a nuestra macro:

Colocar los números del 1 al 5 en el rango A1:D5


O lo que es lo mismo, de la fila 1-columna 1 a la fila 5-columna 4, es decir lo mismo que hace
nuestra macro pero 4 veces, en la columnas A, B, C, y D.

Observad que hemos cambiado el nombre a nuestras variables.

Ya hemos comentado que el nombre de una variable es una combinación de letras, números y algunos
caracteres especiales con la obligación de empezar por una letra.

Es aconsejable que el nombre de una variable tenga alguna relación con su contenido.

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

LAS INSTRUCCIONES FOR/NEXT PUEDEN ANIDARSE

CELLS REPRESENTA UN OBJETO RANGE DE UNA SOLA CELDA

8-La primera macro


Por último antes de pasar a la macro de evaluación final, vamos a complicar un poco mas
nuestra macro, vamos a añadirle otro requerimiento.

Colocar los números del 1 al 5 en el rango A1:D5, excepto cuando el


valor de la fila coincida con el valor de la columna, en este caso,
pondremos el valor cero(0):

__________________________________________________________________________________________________________
10/01/2011 9:36:20 486974839.doc 51

También podría gustarte