Sunteți pe pagina 1din 65

CURSO INICIACIN VISUAL BASIC FOR

APPLICATIONS PARA EXCEL


OCTUBRE - 2010

HOJA DE CONTROL DE CALIDAD


DOCUMENTO

CURSO INICIACIN VISUAL BASIC FOR APPLICATIONS PARA EXCEL


OCTUBRE 2010

CDIGO

920-100920-INICIACION_VBA_EXCEL-ED1.DOC
FIRMA

GAS (ST)

FECHA

07/09/2010

AUTORES

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

NDICE
1.

CONTROLES DE FORMULARIOS.................................................................................................................................. 5
1.1.

INTRODUCCIN ................................................................................................................................................... 5

1.2.

ETIQUETA.............................................................................................................................................................. 6

1.3.

CUADRO DE EDICIN ......................................................................................................................................... 6

1.4.

CUADRO DE GRUPO ............................................................................................................................................ 6

1.5.

BOTN.................................................................................................................................................................... 6

1.6.

CASILLA DE VERIFICACIN.............................................................................................................................. 6

1.7.

BOTN DE OPCIN.............................................................................................................................................. 7

1.8.

CUADRO DE LISTA .............................................................................................................................................. 7

1.9.

CUADRO COMBINADO ....................................................................................................................................... 8

1.10. CUADRO COMBINADO DE LISTA..................................................................................................................... 9


1.11. CUADRO COMBINADO DESPLEGABLE........................................................................................................... 9
1.12. BARRA DE DESPLAZAMIENTO......................................................................................................................... 9
1.13. CONTROL DE GIRO............................................................................................................................................ 10
2.

MACROS.......................................................................................................................................................................... 11
2.1.

CONTROLES DE MACRO .................................................................................................................................. 11

2.2.

GRABAR UNA MACRO...................................................................................................................................... 12

2.3.

EJECUTAR UNA MACRO................................................................................................................................... 12

2.4.

ASIGNAR UNA MACRO..................................................................................................................................... 13


2.4.1. Asignar una macro a un botn de la barra de herramientas .......................................................................... 13
2.4.2. Asignar una macro a un botn de control..................................................................................................... 16

3.

EL EDITOR DE VBA....................................................................................................................................................... 18
3.1.

ACTIVACIN DEL EDITOR DE VBA ............................................................................................................... 18

3.2.

VENTANAS DEL EDITOR DE VBA .................................................................................................................. 18


3.2.1. Ventana del explorador de proyectos ........................................................................................................... 19
3.2.2. Ventana de cdigo........................................................................................................................................ 19
3.2.3. Ventana inmediato ....................................................................................................................................... 19
3.2.4. Ventana locales ............................................................................................................................................ 19
3.2.5. Ventana inspecciones ................................................................................................................................... 19
3.2.6. Ventana de propiedades ............................................................................................................................... 20
3.2.7. Cuadro de lista de objetos ............................................................................................................................ 20
3.2.8. Cuadro de procedimientos............................................................................................................................ 20

3.3.

TRABAJAR CON EL EXPLORADOR DE PROYECTOS .................................................................................. 20


3.3.1. Aadir un mdulo VBA ............................................................................................................................... 20
3.3.2. Eliminar un mdulo VBA ............................................................................................................................ 21
3.3.3. Importar y exportar objetos .......................................................................................................................... 21
3.3.4. Introducir cdigo VBA................................................................................................................................. 22

4.

PROGRAMACIN BSICA CON VBA ........................................................................................................................ 26

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

4.1.

VARIABLES, TIPOS DE DATOS Y CONSTANTES ......................................................................................... 26


4.1.1. Definir tipos de datos ................................................................................................................................... 26
4.1.2. mbito de las variables ................................................................................................................................ 27
4.1.3. Variables locales .......................................................................................................................................... 27
4.1.4. Variables para todo el mdulo...................................................................................................................... 28
4.1.5. Variables pblicas ........................................................................................................................................ 28
4.1.6. Variables estticas........................................................................................................................................ 28
4.1.7. Trabajar con constantes................................................................................................................................ 28
4.1.8. Trabajar con cadenas.................................................................................................................................... 29
4.1.9. Trabajar con fechas ...................................................................................................................................... 29
4.1.10. Instrucciones de asignacin........................................................................................................................ 30

4.2.

MATRICES ........................................................................................................................................................... 30
4.2.1. Declarar matrices ......................................................................................................................................... 30
4.2.2. Declarar matrices con varias dimensiones.................................................................................................... 31

4.3.

OBJETOS Y COLECCIONES .............................................................................................................................. 31


4.3.1. La jerarqua de objetos ................................................................................................................................. 32
4.3.2. Colecciones .................................................................................................................................................. 32
4.3.3. Hacer referencia a objetos ............................................................................................................................ 32

4.4.

TRABAJAR CON CELDAS ................................................................................................................................. 34


4.4.1. Seleccionar libros, hojas y celdas................................................................................................................. 34
4.4.2. Propiedad Range .......................................................................................................................................... 34
4.4.3. Propiedad Cells ............................................................................................................................................ 35
4.4.4. Propiedad Offset........................................................................................................................................... 36

4.5.

FUNCIONES INTEGRADAS ............................................................................................................................... 36

4.6.

MANIPULAR OBJETOS Y COLECCIONES ...................................................................................................... 37


4.6.1. Construcciones With End With ................................................................................................................. 37
4.6.2. Construcciones For Each Next .................................................................................................................. 37

4.7.

CONTROL DE LA EJECUCIN.......................................................................................................................... 38
4.7.1. Instrucciones GoTo ...................................................................................................................................... 38
4.7.2. Construcciones If Then ............................................................................................................................. 39
4.7.3. Construcciones Select Case.......................................................................................................................... 40
4.7.4. Bucles For Next......................................................................................................................................... 41
4.7.5. Bucles Do While .......................................................................................................................................... 42
4.7.6. Bucles Do Until............................................................................................................................................ 43

5.

FUNCIONES .................................................................................................................................................................... 44
5.1.

PROCEDIMIENTOS DE FUNCIN .................................................................................................................... 44


5.1.1. Declarar una funcin .................................................................................................................................... 44
5.1.2. mbito de Function...................................................................................................................................... 45
5.1.3. Ejecutar procedimientos Function................................................................................................................ 45

5.2.
6.

ARGUMENTOS DE FUNCIN ........................................................................................................................... 45

TABLAS DINMICAS.................................................................................................................................................... 47

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

6.1.

TABLAS DINMICAS EN EXCEL..................................................................................................................... 47


6.1.1. Crear una tabla dinmica.............................................................................................................................. 47
6.1.2. Aplicar filtros a la tabla................................................................................................................................ 50
6.1.3. Obtener promedios ....................................................................................................................................... 51
6.1.4. Tablas dinmicas en 3D ............................................................................................................................... 51
6.1.5. Actualizar datos y subtablas ......................................................................................................................... 52
6.1.6. Grficos de una tabla dinmica .................................................................................................................... 52
6.1.7. Eliminar una tabla dinmica......................................................................................................................... 53

6.2.

TABLAS DINMICAS CON VBA ...................................................................................................................... 53


6.2.1. Crear una tabla dinmica.............................................................................................................................. 53

7.

8.

FORMULARIOS INTEGRADOS .................................................................................................................................... 56


7.1.

CUADROS DE DILOGO INTEGRADOS ......................................................................................................... 56

7.2.

FUNCIN INPUTBOX DE VBA ......................................................................................................................... 56

7.3.

FUNCIN INPUT BOX DE EXCEL.................................................................................................................... 57

7.4.

FUNCIN MSGBOX DE VBA ............................................................................................................................ 58

GRFICOS ....................................................................................................................................................................... 61
8.1.

PARMETROS BSICOS ................................................................................................................................... 61

8.2.

CREAR UNA HOJA DE GRFICO ..................................................................................................................... 61

8.3.

INCRUSTAR UN GRFICO EN UNA HOJA ..................................................................................................... 62

8.4.

APLICAR LAS OPCIONES DEL ASISTENTE PARA GRFICOS EN UN GRFICO.................................... 63

8.5.

AADIR UNA NUEVA SERIE DE DATOS A UN GRFICO .......................................................................... 64

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

1. CONTROLES DE FORMULARIOS
1.1.

INTRODUCCIN

Como primera herramienta para automatizar y simplificar los trabajos se dispone de una serie de controles personalizables
asociados a celdas en los que no suele hacer falta introducir cdigo VBA para su uso.
Existen dos tipos diferentes de conjuntos de controles:

Controles de formulario
Controles ActiveX

Los controles de formulario son nicos para Excel mientras que los controles ActiveX son propios de formularios de Visual
Basic.
Su localizacin se encuentra en la Barra de Herramientas llamada Formularios.

Figura 1.1. Barra de herramientas Formularios.


Para situarlos en la hoja de clculo se debe hacer clic sobre uno de ellos y a continuacin dibujarlo en la hoja de clculo como si
fuera una forma predeterminada del men Dibujo.
Para establecer las propiedades para un control existente, se debe hacer clic con el botn secundario en el control, haciendo clic
en Formato de control y eligiendo la ficha Control.
Los rtulos y los botones no tienen propiedades.
Los controles que se analizan son los siguientes:

Etiqueta
Cuadro de edicin
Cuadro de grupo
Botn
Casilla de verificacin
Botn de opcin
Cuadro de lista
Cuadro combinado
Cuadro combinado de lista
Cuadro combinado desplegable
Barra de desplazamiento
Control de giro

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

1.2.

ETIQUETA
Es un texto que proporciona informacin sobre un control, de la hoja de clculo o de un formulario.

1.3.

CUADRO DE EDICIN

No est disponible en libros de Microsoft Excel. Este control se proporciona para que se pueda trabajar con las hojas de
dilogo de Excel versin 5.0.

1.4.

CUADRO DE GRUPO

Agrupa los controles relacionados, como los botones de opcin o las casillas de verificacin. Es necesario para poder
activar los botones de opcin o las casillas de verificacin.

1.5.

BOTN
Ejecuta una macro cuando se hace clic en l.

1.6.

CASILLA DE VERIFICACIN
Activa o desactiva una opcin. Puede activarse ms de una casilla de verificacin a la vez en una hoja o en un grupo.

Propiedades principales de la casilla de verificacin:

Valor. Determina el estado de la casilla de verificacin; es decir; si est activada (Activado), desactivada (Sin
activar) o ninguna de las dos (Mixto).

Vincular con la celda. Una celda que devuelve el estado de la casilla de verificacin. Si la casilla de verificacin
est activada, la celda del cuadro Vincular con la celda contiene VERDADERO. Si la casilla de verificacin est
desactivada, la celda contiene FALSO. Si la casilla de verificacin es mixta, la celda contiene #N/A. Si la celda
est vaca, Excel interpreta que el estado de la casilla de verificacin es FALSO.

Figura 1.2. Formato de control de la casilla de verificacin.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

1.7.

BOTN DE OPCIN

Selecciona una de las opciones de un grupo contenido en un cuadro de grupo. Permite escoger una sola de todas las
posibilidades incluidas en el cuadro de grupo.
Propiedades principales del botn de opcin:

Valor. Determina el estado inicial del botn de opcin; es decir; si est activado (Activado), desactivado (Sin
activar).

Vincular con la celda. Devuelve el nmero del botn de opcin seleccionado en el grupo de opciones (el primer
botn de opcin es el nmero 1). Se debe de utilizar la misma celda Vincular con la celda para todas las opciones
de un grupo. Despus se podr utilizar el nmero devuelto en una frmula o macro para responder a la opcin
seleccionada.

Figura 1.3. Formato de control del botn de opcin.

1.8.

CUADRO DE LISTA
Muestra una lista de elementos.

Propiedades principales del cuadro de lista:

Rango de entrada. Hace referencia al rango que contiene los valores que se mostrarn en el cuadro de lista.

Tipo de seleccin. Especifica el modo en que pueden seleccionarse los elementos de la lista. Si se define el tipo de
seleccin como Mltiple o Extendida, la celda especificada en el cuadro Vincular con la celda no se tendr en
cuenta. La seleccin mltiple o extendida no se puede vincular con una celda, por lo que deber usarse cdigo
VBA para poder usar la opcin.

Vincular con la celda. Devuelve el nmero del elemento seleccionado en el cuadro de lista (el primer elemento de
la lista es 1). Este nmero puede utilizarse en una frmula o macro para que devuelva el elemento real del rango
de entrada.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 1.4. Formato de control del cuadro de lista.

1.9.

CUADRO COMBINADO
Es un cuadro con una lista desplegable. El elemento que se seleccione en el cuadro de lista aparecer en el cuadro de texto.

Propiedades principales del cuadro combinado:

Rango de entrada. Hace referencia al rango que contiene los valores que se mostrarn en la lista desplegable.
Vincular con la celda. Devuelve el nmero del elemento seleccionado en el cuadro combinado (el primer
elemento de la lista es 1). Este nmero puede utilizarse en una frmula o macro para que devuelva el elemento real
del rango de entrada.
Lneas de unin verticales. Especifica el nmero de lneas que aparecer en la lista desplegable.

Figura 1.5. Formato de control del cuadro combinado.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

1.10.

CUADRO COMBINADO DE LISTA

No disponible en libros de Microsoft Excel. Este control se proporciona para que pueda trabajar con las hojas de dilogo
de Excel versin 5.0.

1.11.

CUADRO COMBINADO DESPLEGABLE

No disponible en libros de Microsoft Excel. Este control se proporciona para que pueda trabajar con las hojas de dilogo
de Excel versin 5.0.

1.12.

BARRA DE DESPLAZAMIENTO

Sirve para desplazarse a travs de un rango de valores cuando se hace clic en las flechas de desplazamiento o cuando se
arrastra el cuadro de desplazamiento. Puede moverse a travs de una pgina de valores haciendo clic entre el cuadro de
desplazamiento y una flecha de desplazamiento.
Propiedades principales de la barra de desplazamiento:

Valor actual. La posicin relativa del cuadro de desplazamiento dentro de la barra de desplazamiento.

Valor mximo. La posicin del cuadro de desplazamiento ms lejana a la parte superior de una barra de
desplazamiento vertical o al extremo derecho de una barra de desplazamiento horizontal.

Incremento. El tamao del espacio que se desplazar el cuadro de desplazamiento cuando se haga clic en la flecha
situada en cualquier extremo de la barra de desplazamiento.

Cambio de pgina. El tamao del espacio que se desplazar el cuadro de desplazamiento cuando se haga clic
entre el cuadro de desplazamiento y una de las flechas de desplazamiento.

Vincular con la celda. Devuelve la posicin actual del cuadro de desplazamiento. Este nmero puede utilizarse en
una frmula o macro para responder a la posicin del cuadro de desplazamiento.

Valor mnimo. La posicin del cuadro de desplazamiento ms prxima a la parte superior de una barra de
desplazamiento vertical o al extremo izquierdo de una barra de desplazamiento horizontal.

Figura 1.6. Formato de control de la barra de desplazamiento.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

1.13.

CONTROL DE GIRO

Aumenta o disminuye un valor. Para aumentar el valor, haga clic en la flecha arriba; para disminuir el valor, haga clic en
la flecha abajo.
Propiedades principales del control de giro:

Valor actual. La posicin relativa del control de giro dentro del rango de valores permitidos.
Valor mnimo. El valor ms bajo permitido para el control giro.
Valor mximo. El valor ms alto permitido para el control giro.
Incremento. La cantidad de aumento o disminucin del control de giro cuando se hace clic en las flechas.
Vincular con la celda. Devuelve la posicin actual del control de giro. Este nmero puede utilizarse en una
frmula o macro para que devuelva el valor real que el control de giro debe seleccionar.

Este control es anlogo a la barra de desplazamiento sin la opcin de cambio de pgina.

Figura 1.7. Formato de control del control de giro.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

10

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

2. MACROS
Una macro es una secuencia de instrucciones que automatizan algunos aspectos de Excel de forma que podamos trabajar de
forma ms eficiente y reduciendo la posibilidad de errores.
No es necesario ser un usuario experto para crear y usar Macros de VBA simples. Los usuarios casuales pueden poner en
marcha la grabadora de macros y Excel grabar todas las acciones y las convertir en cdigo VBA. Cuando se ejecute la macro,
Excel ejecutar las acciones otra vez.

2.1.

CONTROLES DE MACRO

Los controles para la grabacin y ejecucin de las macros se encuentran en los siguientes sitios:

Men Herramientas / Macros


Barra de Herramientas Visual Basic

Figura 2.1. Posicin botones macros


Los botones que podemos encontrar son:
Macros: Permite ejecutar una macro.
Grabar una macro: Permite grabar una macro.
Seguridad: Permite adaptar la seguridad de Excel frente a las macros.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

11

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 2.2. Niveles de seguridad.

2.2.

GRABAR UNA MACRO

Para grabar una macro se pulsa el botn Grabar macro y se abrir la ventana de la Figura 2.3.

Figura 2.3. Ventana Botn Grabar


Una vez introducido el nombre de la macro se apreta el botn Aceptar y se empiezan a grabar las acciones hasta que se apreta
el botn Parar de la ventana de la Figura 2.4.

Figura 2.4. Ventana para detener la grabacin de la macro.

2.3.

EJECUTAR UNA MACRO

Al accionar el botn Macro se abre la ventana de la Figura 2.5. y en ella aparece un listado de las macros grabadas en el libro
o cargadas al abrir Excel. Una vez seleccionada se puede ejecutar completa, paso a paso, modificarla mediante VBA, crear una
macro nueva o eliminar una existente.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

12

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Para crear una macro nueva se escribe el nombre y se pulsa Crear, que se habr activado al iniciar a escribir el nombre. De
esta forma se accede al Editor de VBA para introducir el cdigo de la macro.
Figura 2.5. Ventana Botn Macros...

2.4.

ASIGNAR UNA MACRO

Las macros se pueden asignar a diversos elementos, stos son:

Botones de la barra de Herramientas


Botones de control

2.4.1. Asignar una macro a un botn de la barra de herramientas


Para asignar una macro a un botn de la barra de herramientas, en primer lugar se abre el men de la propia barra apretando el
botn derecho del ratn para ir al campo Personalizar (Figura 2.6.)

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

13

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 2.6. Men desplegable de la barra de Herramientas.


Se abrir la ventana Personalizar donde marcaremos el men Macros y arrastraremos el icono Personalizar botn a la
posicin que deseemos de la barra de herramientas.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

14

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 2.7. Men Personalizar.


Con la ventana Personalizar abierta se pulsa sobre el icono con el botn derecho del ratn y aparecer el men que nos
permitir asignar la macro, cambiar el nombre, la imagen, etc. del botn.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

15

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 2.8. Men Personalizar propio del icono.


Se abrir la ventana de la Figura 2.5. y podremos escoger el nombre de la macro que asignaremos al icono.

2.4.2. Asignar una macro a un botn de control


Al dibujar el botn de control en la hoja de clculo aparecer automticamente el cuadro de la Figura 2.5. en el cual se podr
asignar la macro a ejecutar.
Si este cuadro no aparece, podremos activar el men de la Figura 2.9 con el botn derecho del ratn y acceder al cuadro para
asignar la macro.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

16

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 2.9. Men Personalizar

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

17

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

3. EL EDITOR DE VBA
Todo el trabajo con VBA se realiza con el editor de Visual Basic (VBE). Es una aplicacin separada que trabaja perfectamente
integrada en Excel. Esto quiere decir que Excel puede abrir el editor de Visual Basic, pero no puede ejecutarse por separado.
Los mdulos de VBA se almacenan junto a los archivos del libro, pero no son visibles a menos que se active el editor de Visual
Basic.

3.1.

ACTIVACIN DEL EDITOR DE VBA

Cuando se trabaja con Excel se puede activar el editor de Visual Basic de las siguientes formas:

3.2.

Pulsando Alt-F11
Seleccionando Herramientas > Macro > Editor de Visual Basic
Haciendo clic en el botn del editor de Visual Basic que se encuentra en la barra de herramientas de Visual Basic.

VENTANAS DEL EDITOR DE VBA

El editor de Visual Basic consta de diferentes partes. Las ms importantes son las siguientes:

Ventana del explorador de proyectos.


Ventana de cdigo.
Ventana inmediato.
Ventana locales.
Ventana inspecciones.
Ventana de propiedades.
Cuadro de lista de objetos
Cuadro de procedimientos.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

18

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Lista de objetos

Explorador de
proyectos

Lista de propiedades

Ventana de
propiedades

Ventana
de cdigo

Ventana
immediato
Ventana
inspecciones

Ventana
locales

Figura 3.1. Ventana del editor de Visual Basic.

3.2.1. Ventana del explorador de proyectos


Muestra la lista de los proyectos abiertos y sus correspondientes mdulos, objetos y formularios, usando iconos para representar
cada tipo.
Utiliza la estructura tipo rbol del Explorador de Windows. El Editor de Visual Basic se refiere a cada entrada de la ventana
como un nodo. Los nodos ms arriba, indicados en negrita, representan los proyectos de VBA Excel actualmente abiertos.
Excel abre un nuevo proyecto VBA para cada libro que se abre en Excel.

3.2.2. Ventana de cdigo


Muestra el cdigo fuente de VBA del mdulo seleccionado.

3.2.3. Ventana inmediato


Proporciona resultados inmediatos para instrucciones tecleadas directamente en la ventana.

3.2.4. Ventana locales


Muestra los valores de las variables locales durante la depuracin del cdigo.

3.2.5. Ventana inspecciones


Muestra las alertas producidas durante la depuracin del cdigo.
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

19

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

3.2.6. Ventana de propiedades


Muestra las propiedades del objeto actualmente seleccionado.
Si se selecciona un mdulo en el Explorador de Proyectos, la nica propiedad que se puede visualizar es su nombre. Sin
embargo, si se selecciona una hoja en concreto se puede ver y modificar sus propiedades.
Para cambiar las propiedades de un objeto basta con simplemente seleccionar su propiedad y realizar el cambio.

3.2.7. Cuadro de lista de objetos


Muestra una lista de objetos asociados al presente proyecto.
Esta carpeta contiene un nodo por cada hoja dentro del libro seleccionado. Cada nodo representa una hoja de clculo o una hoja
de grfico.
Cuando se hace clic dos veces en un nodo en particular, se abre el correspondiente cdigo del mdulo.
Se pueden colocar procedimientos independientes dentro de una especfica hoja de mdulo, pero normalmente estos
procedimientos se sitan en los mdulos estndar.

3.2.8. Cuadro de procedimientos


Muestra la lista de procedimientos asociados con el objeto seleccionado.

3.3.

TRABAJAR CON EL EXPLORADOR DE PROYECTOS

Cuando se est trabajando con el editor de Visual Basic, cada libro de Excel y complemento que est abierto en ese momento se
considera un proyecto.
Cuando se activa el editor de Visual Basic, no se puede presuponer que el mdulo del cdigo que se est mostrando se
corresponde con el objeto sealado en la ventana del explorador de proyectos. Para asegurarnos de que estamos trabajando con
mdulo de cdigo correcto, se debe hacer siempre clic en el objeto en la ventana del explorador de proyectos.

3.3.1. Aadir un mdulo VBA


Las subrutinas se pueden introducir de dos formas diferentes en un libro Excel, directamente en las hojas de clculo o en
mdulos.
Las subrutinas introducidas en la hoja de clculo se mantendrn en la hoja con el peligro de perderlas si eliminamos la hoja. Las
subrutinas introducidas en mdulos no se pierden al manipular las hojas.
Para crear un mdulo se selecciona el nombre del proyecto en la ventana del explorador de proyectos y seleccionar
Insertar > Mdulo. Tambin se puede hacer clic con el botn derecho del ratn en el nombre del proyecto y seleccionar
Insertar > Mdulo del men emergente.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

20

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 3.2. Insercin de un nuevo mdulo VBA.


Cuando se graba una macro, Excel automticamente inserta un mdulo VBA para que contenga el cdigo grabado.

3.3.2. Eliminar un mdulo VBA


Si se necesita eliminar un mdulo VBA, se selecciona el nombre del mdulo en la ventana del explorador de proyectos y
seleccionar Archivo > Quitar mdulo Nombre o se puede hacer clic con el botn derecho del ratn en el nombre del mdulo y
seleccionar Quitar Nombre en el men emergente.

Figura 3.3. Eliminacin de un mdulo VBA.

3.3.3. Importar y exportar objetos


Exceptuando los que aparecen en el nodo Referencias, cada objeto de un proyecto puede guardarse en un archivo separado.
Guardar un objeto individual en un proyecto se realiza mediante Exportar.
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

21

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Para exportar un objeto, se selecciona de la ventana del explorador de proyectos y se escoge Archivo > Exportar archivo (o
pulsando Control-E). Aparecer un cuadro de dilogo que solicita un nombre de archivo. Si se exporta un UserForm, cualquier
cdigo asociado al mismo tambin se exportar.
Para importar un archivo a un proyecto, se selecciona el nombre del proyecto en la ventana del explorador de proyectos y se
escoge Archivo > Importar archivo. Aparecer un cuadro de dilogo que solicita un archivo. Slo se puede importar un archivo
que ha sido exportado utilizando Archivo > Exportar archivo.

Figura 3.4. Importar / Exportar proyectos.


Si se quiere copiar un mdulo o un objeto UserForm a otro proyecto bastar con tener ambos abiertos y activado el explorador
de proyectos y arrastrar el objeto de un proyecto a otro.

3.3.4. Introducir cdigo VBA


Para introducir el cdigo se puede optar por tres procedimientos:

Introducir el cdigo manualmente.

Copiar y pegar. Copiar el cdigo de otro mdulo y pegarlo en el mdulo en el que se est trabajando.

Funcin de grabacin de macros. Utilizar la funcin de grabacin de macros de Excel para grabar acciones y
convertirlas en cdigo VBA.

Para iniciar una Subrutina se debe escribir la instruccin Sub+espacio+nombre(). automticamente Excel introduce la
instruccin End Sub. Nuestro cdigo se introducir entre estas dos lneas.
Sub ShowValue()
Msgbox Worksheets(Hoja1).Range(A1).Value
End Sub
El mtodo de escritura es el mismo que cualquier editor de textos salvo que a medida que se va introduciendo el cdigo las
instrucciones se visualizan en azul y los nombres, variables, etc. en negro.
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

22

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Una nica instruccin puede ser todo lo larga que haga falta. Sin embargo, para facilitar su lectura, es aconsejable dividirla en
dos o ms lneas. Para ello se coloca un espacio seguido de un carcter de subrayado al final de la lnea y despus se pulsa Intro
y se contina la instruccin en la siguiente lnea.
MsgBox No se puede encontrar & UCase(SHORTCUTMENUFILE) _
& vbCrLf & vbCrLf & El archivo debera encontrase en _
& ThisWorkbook.Path & vbCrLf & vbCrLf & _
Puede que tenga a volver a instalar el programa, vbCritical, APPNAME
Es posible personalizar la forma en que el Editor de VBA nos indica errores y cmo visualiza las instrucciones. Estas opciones
se hallan en Herramientas > Opciones.

Figura 3.5. Opciones del Editor de VBA.


La comprobacin de sintaxis automtica determina si el editor de VBA hace aparecer o no un cuadro de dilogo cuando
descubre un error de sintaxis mientras se introduce el cdigo. Si no se activa se seguirn indicando los errores de sintaxis pero
mostrndolos en un color diferente al del resto del cdigo.
La opcin Requerir declaracin de variables insertar la siguiente instruccin al estar activada:
Option Explicit
Esta opcin obliga a definir explcitamente cada variable que se utilice. Si no se realiza la declaracin de variables, todas sern
del tipo Variant, que si bien puede ser un tipo de variable flexible no es eficiente en trminos de almacenamiento y rapidez.
Si la opcin Lista de miembros automtica est marcada, el editor de Visual Basic proporcionar ayuda mientras se est
introduciendo cdigo VBA. Estos elementos incluyen mtodos y propiedades para los objetos introducidos.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

23

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 3.6. Ejemplo de lista de miembros automtica.


Si la opcin Informacin rpida automtica est activada, el editor de Visual Basic mostrar mientras escribimos informacin
sobre los argumentos disponibles para funciones, propiedades y mtodos.

Figura 3.7. Ejemplo de informacin rpida automtica.


Si la opcin Sugerencias de datos automticas est activada, el editor de Visual Basic mostrar el valor de la variable sobre la
que est situado el cursor mientras se est depurando el cdigo.
La opcin Sangra automtica determina si el editor de Visual Basic tabular automticamente cada nueva lnea de cdigo con
la misma cantidad que la lnea anterior. Las tabulaciones manuales deben realizarse mediante la tecla Tab, no debe usarse el
espaciador.
La opcin modificar texto mediante arrastrar y colocar permite copiar y mover texto arrastrndolo.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

24

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Cuando la opcin Separador de procedimientos est activada, se mostrarn barras de separacin al final de cada procedimiento
en la ventana de cdigo. Se puede observar la barra en la Figura 3.7.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

25

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

4. PROGRAMACIN BSICA CON VBA


4.1.

VARIABLES, TIPOS DE DATOS Y CONSTANTES

El principal propsito de VBA es manipular datos. Algunos datos se ubican en objetos, como rangos de hoja (valores
introducidos en las celdas). Otros datos se guardan en las variables que se crean. Una variable es simplemente una posicin de
almacenamiento del ordenador con nombre.
Los valores se asignan a una variable mediante el signo =. Las reglas que tiene VBA para los nombres de las variables:

Se pueden usar caracteres del alfabeto, nmeros y algunos caracteres de puntuacin, pero el primer carcter debe
ser una letra del alfabeto.

VBA no distingue maysculas de minsculas. Se pueden mezclar en un mismo nombre.

Los nombres de variables pueden llegar hasta los 254 caracteres. Pero no se recomiendan nombres tan largos.

No se pueden usar ni espacios ni puntos. Para hacer los nombres ms legibles debe usarse el guin bajo _.
Los caracteres especiales usados en instrucciones como (#, $, %, &, ! ) no pueden incluirse en un nombre de
variable.

4.1.1. Definir tipos de datos


VBA puede automticamente asignar un tipo de datos a las variables que no se declaran, pero este hecho hace que el clculo se
ralentice. Los tipos de datos integrados en VBA son:

Tipo de dato

Bytes usados

Matriz de valores

Byte

1 byte

0 a 255

Boolean

2 bytes

Verdadero o Falso

Integer

2 bytes

-32.768 a 32.768

Long

4 bytes

-2.147.483.648 a 2.147.483.648

Single

4 bytes

-3,402823E38 a -1,401298E-45 (para valores negativos);


1,401298E-45 a 3,402823E38 (para valores positivos)

Double

8 bytes

-1,79769313486232E308 a -4,94065645841247E-324
(valores negativos); 4,94065645841247E-324 a
1,79769313486232E308 (valores positivos)

Currency

8 bytes

-922.337.203.685.477,5808 a 922.337.203.685.477,5808

Decimal

14 bytes

79.228.162.514.264.337.593.543.950.335 sin punto


decimal; 7,9228162514264337593543950335 con 28
elementos a la derecha del punto decimal

Data

8 bytes

Enero 1, 0100 a diciembre 31, 9999

Object

4 bytes

Cualquier referencia a objetos

String (de longitud variable)

10 bytes + la longitud
de la matriz.

0 a aproximadamente 2 billones

String (de longitud fija)

La longitud de la
matriz

1 a aproximadamente 65.400

Variant (con nmeros)

16 bytes

Cualquier valor numrico de hasta el rango de un tipo de


datos doble

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

26

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Tipo de dato

Bytes usados

Matriz de valores

Variant (con caracteres)

22 bytes + la longitud
de la matriz

0 a aproximadamente 2 billones

Definido por el usuario

Variable

Vara segn el elemento

Tabla 4.1 Tipos de datos.


Para los clculos de hoja, Excel usa el tipo de datos Double que es una buena opcin para procesar nmeros en VBA cuando no
se quiere perder precisin. Para clculos de nmeros enteros, podemos usar el tipo Integer si estamos seguros de que su valor no
superar 32.767. En caso contrario usaremos el tipo Long. Cuando estemos manejando los nmeros de una fila de una hoja de
Excel, deberemos usar el tipo Long porque el nmero de filas de una hoja de trabajo supera el valor mximo admitido por los
datos de tipo Integer.

4.1.2. mbito de las variables


El mbito de una variable determina qu mdulos y procedimientos pueden usar la variable. El mbito de una variable puede
ser alguno de los siguientes:

mbito

Cmo se declara una variable con este mbito

Un solo procedimiento

Incluyendo una declaracin Dim o Static dentro del procedimiento.

Un solo mdulo

Incluyendo una declaracin Dim o Private antes del primer procedimiento de un mdulo.

Todos los mdulos

Incluyendo una declaracin Public antes del primer procedimiento de un mdulo.


Tabla 4.2. Declaracin de variables.

4.1.3. Variables locales


Una variable local es una variable declarada dentro de un procedimiento. Las variables locales slo se pueden usar en los
procedimientos en los que estn declaradas. Cuando finaliza el procedimiento, la variable deja de existir y Excel libera la
memoria que ocupaba.
La manera ms comn de declarar una variable local es insertar una instruccin Dim entre una instruccin Sub y una
instruccin End Sub.
Sub Programa_1()
Dim x As Integer
Dim First As Long
Dim Second As Single
Dim Today As Date
Dim UserName As String * 20
[El cdigo de procedimiento va aqu]
End Sub
VBA no permite declarar un grupo de variables como de un tipo particular separando las variables con comas. Debe seguirse el
ejemplo siguiente separando las declaraciones con comas:

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

27

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Dim i As Integer, j As Integer, k As Integer

4.1.4. Variables para todo el mdulo


A veces es necesario que una variable pueda usarse en todos los procedimientos de un mdulo, en eses caso se declarar la
variable antes del primer procedimiento del mdulo (fuera de cualquier procedimiento o funcin).
Dim CurrentValue As Integer

Sub Macro_1()
[El cdigo va aqu]
End Sub

Sub Macro_2()
[El cdigo va aqu]
End Sub

4.1.5. Variables pblicas


Para hacer que una variable se pueda usar en todos los mdulos VBA de un proyecto, debemos declarar la variable en el nivel
de mdulo, usando la palabra Public en lugar de Dim.
Public CurrentValue As Integer
La palabra clave Public hace que la variable se pueda usar en cualquier procedimiento del proyecto, incluso en otros mdulos
dentro del proyecto. Se deber insertar esta funcin antes del primer procedimiento de un mdulo. Este tipo de instruccin
tambin debe aparecer en el mdulo estndar VBA, no en un cdigo de mdulo para una hoja o para un UserForm.

4.1.6. Variables estticas


Las variables estticas se declaran en el nivel del procedimiento y mantienen su valor cuando el procedimiento finaliza (a
menos que el procedimiento se detenga debido a una instruccin End.
Las variables estticas se declaran con la palabra clave Static.
Sub MiSub()
Static Contador As Integer
[El cdigo va aqu]
End Sub

4.1.7. Trabajar con constantes


A veces deberemos hacer referencia a un valor o cadena con nombre que no cambien nunca. Para esta situacin se utilizarn
constantes.
Las constantes se declaran con la instruccin Const.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

28

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Const NumUno As Integer


Const Rate = .0725,

Period = 12

Const NombreMacro As String = Macros de clculo


Public Const AppName As String = Aplicacin de macros
Al igual que las variables las constantes tambin tienen mbito. Si queremos que una constante slo se pueda usar dentro de un
determinado proceso, deberemos declararla despus de una instruccin Sub o Function para hacerla una constante local.
Para que una constante pueda utilizarse en todos los procesos de un mdulo, debemos declararla antes del primer procedimiento
del mdulo. Para que una constante pueda usarse en todos los mdulos de un libro, debemos usar la palabra clave Public y
declarar la constante antes del primer procedimiento del mdulo.
Excel y VBA ofrecen muchas constantes predefinidas que se pueden usar sin declarar. Para conocer las variables se puede
acceder a una lista de todas las constantes a travs del examinador de objetos (F2).

4.1.8. Trabajar con cadenas


Como Excel, VBA puede manipular tanto nmeros como texto (cadenas). Hay dos tipos de cadenas en VBA:

Cadenas de longitud fija: se declaran con un nmero especfico de caracteres. El valor mximo es 65.535
caracteres.

Cadenas de longitud variable: pueden tener, en teora, ms de 2 mil millones de caracteres.

Cada carcter de una matriz necesita un byte para guardarlo y una pequea cantidad extra de almacenamiento para el
encabezado de cada cadena. Cuando se declara una variable de cadena mediante la instruccin Dim se puede especificar la
longitud (una cadena de longitud fija) o podemos dejar que VBA lo controle de forma dinmica (una cadena de longitud
variable).
Dim MyString As String * 50

(Longitud mxima de 50 caracteres)

Dim YourString As String

(Longitud mxima no determinada)

4.1.9. Trabajar con fechas


Para poder trabajar con fechas de forma numrica hace falta almacenarla con el tipo de datos Date.
Una variable definida como fecha usa 8 bytes de almacenamiento y puede contener datos desde el 1 de enero del ao 100 hasta
el 31 de diciembre de 9.999. Sin embargo hay que tener en cuenta que el rango de fechas que manejar Excel es mucho ms
reducido, que empieza el 1 de enero de 1900.
La forma de expresar fechas es colocndolas entre almohadillas ( # ).
Dim Hoy As Date
Const FirstDay As Date = # 1/1/2001 #
Las constantes de datos siempre se definen usando el formato mes / da / ao, incluso si nuestro equipo est configurado para
mostrar las fechas en otro formato (por ejemplo da/mes/ao).
Hay que tener en cuenta que Excel tiene un error de fecha, asume errneamente que el ao 1900 es bisiesto. VBA no tiene este
error de fecha, por lo tanto el sistema de nmeros de matriz de Excel no se corresponde exactamente con el sistema de nmeros
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

29

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

de matriz de VBA.

4.1.10. Instrucciones de asignacin


Una instruccin de asignacin es una instruccin que realiza una evaluacin matemtica y asigna el resultado a una variable o a
un objeto.
VBA usa el signo igual ( = ) como operador de asignacin. Otros operadores matemticos tambin se pueden utilizar en las
operaciones:

Sumas ( + ).
Restas ( - ).
Multiplicaciones ( * ).
Divisiones ( / ).
Potencias ( ^ ).
Etc.

VBA tambin admite los operadores de comparacin usados en frmulas de Excel:

Igual ( = ).
Mayor que ( > ).
Menor que ( < ).
Mayor que o igual a ( >= ).
Menor que o igual a ( <= ).
No igual a ( <> ).

Adems VBA ofrece operadores lgicos como pueden ser:

Operador

4.2.

Funcin

Not

Realiza una negacin lgica en una expresin.

And

Realiza una conjuncin lgica en dos expresiones.

Or

Realiza una disfuncin lgica en dos expresiones.

XoR

Realiza una exclusin lgica en dos expresiones.

Eqv

Realiza una equivalencia lgica en dos expresiones.

Imp

Realiza una implicacin lgica en dos expresiones.

MATRICES

Una matriz es un grupo de elementos del mismo tipo que tienen un nombre comn. Hacemos referencia a un elemento
especfica de la matriz usando el nombre de la matriz y un nmero de ndice.

4.2.1. Declarar matrices


Se declara una matriz con una instruccin Dim o Public, exactamente igual que a como se declara una variable normal.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

30

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Existen dos formas de declarar matrices:

Indicando el nmero de elementos en la matriz.

Dim Matrix_1( 100 ) As Integer

Indicando el rango de ndices de la matriz

Dim Martix_2(1 To 100) As Integer

Cuando se declara una matriz, al especificar solamente el nmero de ndice ms alto, VBA asume que el 0 es el nmero de
ndice ms bajo. Por lo tanto el primer ejemplo tiene 101 elementos y el segundo 100 elementos.
Si se quisiera que VBA escogiera como 1 el ndice ms bajo para todas las matrices en las que se declare nicamente el valor
ms alto, se debera incluir la siguiente instruccin antes de cualquier procedimiento de mdulo:
Option Base 1
Para asignar un valor a un elemento de la matriz se indica entre parntesis el nmero del elemento y se indica el valor tras un
igual:
Matrix_3 (9) = 2.71828

4.2.2. Declarar matrices con varias dimensiones


Las matrices de VBA pueden tener hasta 60 dimensiones. Para declarar una matriz de varias dimensiones separamos las
dimensiones mediante comas dentro de la declaracin.
Dim Matrix_3(1 To 10, 1 To 30, 1 To 25) As Integer
Para asignar un valor a un elemento de la matriz anterior se procede como en una dimensin pero con los ndices necesarios:
Matrix_3 (9, 18, 2) = 3.14159
Una matriz dinmica no tiene un nmero de elementos predeterminado. Se declara con un espacio entre parntesis.
Dim Matrix_Reload ( ) As Integer
Sin embargo, antes de poder usar una matriz dinmica en el cdigo, debemos usar la instruccin ReDim para indicar a VBA
cuntos elementos se encuentran en la matriz (o ReDim Preserve si lo que queremos es mantener los valores existentes en
la matriz). Podemos usar ReDim cuantas veces sea necesario, cambiando el tamao de la matriz tan a menudo como haga falta.

4.3.

OBJETOS Y COLECCIONES

Cuando se trabaja con VBA hay que entender el concepto de objetos y modelos de objetos de Excel. Se pueden concebir en
trminos de jerarqua. En la parte superior de este modelo est el objeto Application (en este caso el propio Excel).
En la Ayuda de Excel el modelo de objetos completo de Excel est esquematizado.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

31

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

4.3.1. La jerarqua de objetos


El objeto Application (es decir, Excel) contiene otros objetos. Algunos ejemplos de objetos contenidos en el objeto
Application:

Workbooks (Una coleccin de todos los objetos Workbook)


Windows (una coleccin de todos los objetos Window)
AddIns (una coleccin de todos los objetos AddIn)

Algunos objetos pueden contener otros objetos. Por ejemplo, la coleccin Workbook consta de todos los objetos Workbook
abiertos y un objeto Workbook contiene otros objetos, algunos de los cuales son los siguientes:

Worksheet (una coleccin de objetos Worksheet)


Charts (una coleccin de objetos Chart)
Names (una coleccin de objetos Name)

Cada uno de estos objetos, a su vez, puede contener otros objetos. Una coleccin Worksheet consta de todos los objetos
Worksheet de un Workbook. Un objeto Worksheet consta de muchos otros objetos, entre los que se incluyen los
siguientes:

ChartObjects (una coleccin de objetos ChartObjects)


Range
PageSetUp
PivotTables (una coleccin de objetos PivotTable)

4.3.2. Colecciones
Una coleccin es un grupo de objetos de la misma clase y una coleccin es por s misma un objeto.
Para hacer referencia a un nico objeto de una coleccin, colocamos el nombre del objeto o el nmero de ndice entre parntesis
despus del nombre de la coleccin, como en este caso:
Worksheets (Hoja1)
Worksheets (1)

4.3.3. Hacer referencia a objetos


VBA manipula objetos. Excel proporciona ms de 100 clases de objetos que puede manipular. Ejemplos de objetos incluyen un
workbook, un worksheet, un range en un worksheet, un chart, y otros.
Los objects estn organizados en una jerarqua y pueden actuar como contenedores de otros objetos. Por ejemplo, Excel por s
mismo es un objeto llamado Application, y contiene otros objetos, tales como objetos Workbook. El objeto Workbook puede
contener otros objetos, tales como objetos Worksheet y objetos Chart. Un objeto Worksheet puede contener objetos tales como
objetos Range, objetos PivotTable, y otros. La organizacin de estos objetos est referida a un modelo de objetos.
Objetos iguales forman una coleccin. Por ejemplo, la coleccin Worksheets consiste en todas las worksheets en un workbook
en particular. Los objetos de la coleccin Chart consisten en todos los objetos Chart de un worksheet. Las colecciones son
objetos en ellos mismos.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

32

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Nos referimos a un objeto en el cdigo VBA especificando su posicin en la jerarqua de objetos, usando un punto como
separador. Los nombres introducidos dentro de objetos deben indicarse entre comillas.
Por ejemplo, nos podemos referir a una libro llamado Book1.xls como Application.Workbooks(Book1.xls).
Esta expresin se refiere al libro Book1.xls de la coleccin Workbooks que recoge todos los libros abiertos en un instante. La
coleccin Workbooks est contenida en el objeto Application (que es Excel). Extendiendo esto a otro nivel, nos referiremos a la
hoja Sheet1 en el libro Book1 de la forma siguiente:
Application.Workbooks(Book1.xls).Worksheets(Sheet1)
Se puede llevar a otro nivel y referirse a una celda en concreto como sigue:
Application.Workbooks(Book1.xls).Worksheets(Sheet1).Range(A1)
Si se omiten referencias, Excel usa los objetos activos. Si Book1.xls es el libro activo, el procedimiento se puede simplificar de
la siguiente forma:
Worksheets(Sheet1).Range(A1)
Si se conoce que la hoja Sheet1 es la hoja activa, se puede simplificar incluso ms:
Range(A1)
Los objetos tienen propiedades. Una propiedad puede pensarse como un ajuste de un objeto. Por ejemplo, un objeto Range tiene
propiedades, como Value y Address. Un objeto Chart tiene propiedades como HasTitle y Type. Podemos usar VBA para
determinar propiedades de objetos y cambiarlas.
Nos referimos a las propiedades combinando el objeto con su propiedad, separndola mediante un punto.
Por ejemplo, nos podemos referir al valor de la celda A1en la hoja Sheet1 como sigue:
Worksheets(Sheet1).Range(A1).Value
Se pueden asignar valores a las variables. Para asignar el valor de la variable Interest a la celda A1 en la hoja Sheet1 se usa la
siguiente instruccin:
Interest = Worksheets(Sheet1).Range(A1).Value
Los objetos tienen mtodos. Un mtodo es una accin que es realizada por el objeto. Por ejemplo, uno de los mtodos para los
objetos Range es ClearContents. Este mtodo limpia el contenido de Range.
Los mtodos se especifican combinando el objeto con el mtodo, separado por un punto. Por ejemplo, para limpiar el contenido

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

33

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

de las celdas contenidas entre la A1 y la C12, se usa lo siguiente:


Worksheets(Sheet1).Range(A1:C12).ClearContents

4.4.

TRABAJAR CON CELDAS

Un objeto Range est contenido en un objeto Worksheet y consta de una nica celda o serie de celdas de una hoja simple.
Para hacer referencia a objetos Range en el cdigo VBA lo hacemos de tres formas:

Propiedad Range
Propiedad Cells
Propiedad Offset

4.4.1. Seleccionar libros, hojas y celdas


Para decirle a VBA que mantenga un libro, una hoja o una celda activa y poder referir las distintas acciones a ellos hemos de
usar las siguientes instrucciones:

ActiveWorksheet
ActiveSheet
ActiveCell

La sintaxis de estas instrucciones es la siguiente:


ActiveWorksheet = [Nombre del libro entre comillas]
ActiveSheet = [Nombre de la hoja entre comillas]
ActiveCell = [Nombre de la celda entre comillas]
Otra forma de seleccionar una celda puede ser a travs del comando Select. Por ejemplo:
Worksheets(Sheet1).Range(A1).Select

4.4.2. Propiedad Range


La propiedad Range devuelve un objeto Range. Esta propiedad tiene dos sintaxis:
object.Range(cell)
object.Range(cell1, cell2)
La propiedad Range se aplica a dos tipos de objetos: un objeto Worksheet o un objeto Range. En este caso cell1 y
cell2 hacen referencia a marcadores de posicin en trminos que Excel reconocer para identificar el rango (en primera
instancia) y definir el rango (en segunda instancia).
El siguiente ejemplo pone el valor 1 en la celda A1 de la Hoja 1 del libro activo:
Worksheets(Sheet1).Range(A1).Value = 1

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

34

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

La propiedad Range tambin reconoce nombres definidos en libros. Por ejemplo si una celda se llama Gamma podemos
introducir un valor en esa celda de la siguiente forma:
Worksheets(Sheet1).Range(Gamma).Value = 1
El siguiente ejemplo introduce el mismo valor en un rango de 20 celdas:
Worksheets(Sheet1).Range(A10:B10).Value = 3
Tambin se puede escribir con la segunda sintaxis de la forma:
Worksheets(Sheet1).Range(A10, B10).Value = 3
Para introducir un valor en una interseccin de celdas usamos el operador interseccin que en VBA es el espacio. En el
siguiente ejemplo introducimos el valor 3 a la celda C6:
Worksheets(Sheet1).Range(C1:C10 A6:E6).Value = 3
Para introducir el valor 3 en cinco celdas diferentes se puede usar la siguiente instruccin:
Worksheets(Sheet1).Range(A1;A3;A5;A7;A9).Value = 3
En el caso de que queramos trabajar con celdas activas aplicando la propiedad Range, la celda activa se transforma en el origen
de coordenadas de la nueva instruccin Range. Es decir, en el siguiente ejemplo se asigna el valor 5 a la celda una posicin a la
derecha y una posicin por debajo de la activa:
ActiveCell.Range(B2).Value = 3
VBA tiene como propiedad por defecto del objeto Range la propiedad Value, por lo tanto si se omite la escritura de .Value
el mismo VBA asigna el valor introducido a esta propiedad.
Worksheets(Sheet1).Range(A1) = 1

4.4.3. Propiedad Cells


Otro modo de hacer referencia a un rango es la propiedad Cells. Esta propiedad tiene tres sintaxis:
object.Cells(rowIndex, columnIndex)
object.Cells(rowIndex)
object.Cells
Para introducir el valor 7 en la celda B4 (fila 4, columna 2) haramos:

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

35

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Worksheets(Sheet1).Cells(4, 2) = 7
Si se quiere hacer una entrada en una celda relativa a la celda activa se puede proceder del mismo modo que con la propiedad
Range. Sita nuestro origen de coordenadas en la celda activa y nos movemos en referencia a ella:
ActiveCell.Cells(1,1) = 3
La segunda sintaxis del mtodo Cells utiliza un solo argumento que es la posicin absoluta de la celda en el conjunto de la hoja.
Admite los valores comprendidos entre 1 y 16.777.216. Las celdas estn numeradas empezando en A1 y continuando hacia la
derecha y despus hacia abajo en la siguiente fila (65.536 filas por 256 columnas). Por ejemplo, la celda A1 es la 1, la B1 es la
2 y la A2 la 257. En el siguiente ejemplo se introduce el valor 6 en la celda H3:
Worksheets(Sheet1).Cells(520) = 6
Esta sintaxis puede utilizarse con un objeto Range. En este caso, la celda que se devuelve es relativa al objeto Range al que se
hace referencia. Por ejemplo, si el objeto Range es A1:D10 (40 celdas), la propiedad Cells puede tener un argumento de 1 a 40
y devolver una de las celdas en el objeto Range. En el siguiente ejemplo se introduce el valor 1500 en la celda A2 porque A2
es la quinta celda (contando desde la parte superior derecha y hacia abajo) en el rango al que se hace referencia:
Worksheets(Sheet1).Range(A1:D10).Cells(5) = 1500
Con la tercera sintaxis hacemos referencia a todas las celdas de la hoja.

4.4.4. Propiedad Offset


La propiedad Offset slo se aplica a un objeto Range. Su sintaxis es la siguiente:
object.Offset (rowOffset, columnOffset)
La propiedad Offset admite dos argumentos que se corresponden a la posicin relativa de la celda superior izquierda del
objeto Range especificado.
ActiveCell.Offset(1,0).Value = 5
Para realizar movimientos a la izquierda y por encima de la celda activa podemos usar valores negativos de rowOffset y
columnOffset.

4.5.

FUNCIONES INTEGRADAS

VBA tiene una gran cantidad de funciones integradas que simplifican los clculos y las operaciones. Para obtener una lista de
de las funciones propias de VBA, mientras escribimos cdigo debemos escribir VBA seguido de un punto (.) y se abrir un
men de donde podremos escoger la funcin necesaria.
Tambin es posible el uso de funciones propias de Excel como por ejemplo Mdeterm para calcular un determinante de una
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

36

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

matriz sin tener que programar el clculo mediante cdigo. Se debe de comprobar que VBA no tiene ninguna funcin propia
para realizar la misma accin ya que sino deberemos usar la funcin de VBA.

4.6.

MANIPULAR OBJETOS Y COLECCIONES

VBA ofrece dos importantes construcciones que pueden simplificar el trabajo con objetos y colecciones:

Construcciones With-End With


Construcciones For Each-Next

4.6.1. Construcciones With End With


La construccin With End With nos permite realizar varias operaciones en un solo objeto.
El siguiente cdigo:
Sub ChangeFont1()
Selection.Font.Name = Times New Roman
Selection.Font.FontStyle = Bold Italic
Selection.Font.Size = 12
Selection.Font.Underline = xlUnderlineStyleSingle
Selection.Font.ColorIndex = 5
End Sub
se podra simplificar con una construccin With End With
Sub ChangeFont2()
With Selection.Font
.Name = Times New Roman
.FontStyle = Bold Italic
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
End With
End Sub

4.6.2. Construcciones For Each Next


En el caso de que queramos realizar alguna accin con todos los objetos de una coleccin o queremos evaluar todos los objetos
de una coleccin y realizar algunas acciones si se cumplen ciertas condiciones se puede utilizar esta instruccin.
La sintaxis de la construccin es:
For Each [elemento] In [grupo]
[instrucciones]
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

37

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

[Exit For]
[instrucciones]
Next [elemento]
Un ejemplo concreto es el siguiente:
Sub Macro1( )
Dim MyArray(5) As Double
For i = 0 to 5
MyArray(i) = Rnd
Next i
For Each n In MyArray
Debug.Print n
Next n
End Sub

4.7.

CONTROL DE LA EJECUCIN

Algunos procedimientos de VBA comienzan en la parte superior y progresan lnea a lnea hacia abajo. Sin embargo, muchas
veces necesitaremos controlar el flujo de las rutinas omitiendo algunas instrucciones, ejecutando algunas instrucciones varias
veces y comprobando las condiciones para determinar qu har la rutina a continuacin. Otros modos de controlar la ejecucin
de los procedimientos VBA son:

Instrucciones Go To.
Construcciones If Then.
Bucles For Next.
Bucles Do While.
Bucles Do Until.

4.7.1. Instrucciones GoTo


Esta instruccin simplemente transfiere la ejecucin de un programa a una nueva instruccin, que debe estar precedida por una
etiqueta (una cadena de texto seguida por dos puntos o un nmero sin dos puntos).
Los procedimientos VBA pueden contener cualquier nmero de etiquetas y la instruccin GoTo no puede bifurcarse fuera de un
procedimiento. Este procedimiento est pensado para el control de errores, si bien se puede usar de muchas formas.
Sub GoTo_Demo ( )
UserName = InputBox(Entre su nombre:)
If UserName <> Samuel Then GoTo WrongName
MsgBox Bienvenido Samuel
[Ms cdigo aqu]
Exit Sub
WrongName:
MsgBox Lo siento, usuario no autorizado
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

38

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

End Sub

4.7.2. Construcciones If Then


Esta instruccin es una forma de proporcionar capacidad de tomar decisiones a las aplicaciones.
Existen dos sintaxis de la construccin. La primera implica la escritura de la construccin en una sola lnea y la segunda en
varias lneas.
Construccin If Then en una sola lnea:
If [condicin] Then [instrucciones_si_se_cumple] Else [instrucciones_si_no_se_cumple]
Construccin If Then en varias lneas:
If [condicin] Then
[instrucciones si_se_cumple_la_condicin]
Else If [condicin-n] Then
[instrucciones alternativas]
Else
[instrucciones predeterminadas]
End If
Para comprender la sintaxis se indica una subrutina escrita de las dos formas:
Sub Saludo_1( )
If Time < 0.5 Then MsgBox Buenos das
If Time >= 0.5 And Time < 0.75 Then MsgBox Buenas tardes
If Time >= 0.75 Then MsgBox Good Evening
End Sub
Que se puede reescribir de la siguiente forma:
Sub Saludo_2( )
If Time < 0.5 Then
MsgBox Buenos das
ElseIf Time >= 0.5 And Time < 0.75 Then
MsgBox Buenas tardes
ElseIf Time >= 0.75 Then
MsgBox Good Evening
End If
End Sub

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

39

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Esta ltima construccin se podra introducir separando la instruccin ElseIf en dos partes, Else + If:
Sub Saludo_3( )
If Time < 0.5 Then
MsgBox Buenos das
Else
If Time >= 0.5 And Time < 0.75 Then
MsgBox Buenas tardes
Else
If Time >= 0.75 Then
MsgBox Good Evening
End If
End If
End If
End Sub
Existe una alternativa a la construccin If Then que es la funcin IIf. Esta funcin tiene tres argumentos y funciona de
forma casi igual que la funcin Si de Excel. Su sintaxis es:
IIf (expr , parte_verdad , parte_falso)
Donde:

expr: Expresin que deseamos evaluar.


parte_verdad: Valor o expresin devuelta si expr es verdadero
parte_falso: Valor o expresin devuelta si expr es falso

El siguiente ejemplo muestra el uso de la funcin:


IIf (Range(A1) = 0; Cero; Mayor que cero)
Es importante destacar que el tercer argumento se evala siempre, incluso si el segundo es verdadero, por lo que una
construccin como la siguiente dara un mensaje de error:
IIf (n = 0; 0; 1/n)

4.7.3. Construcciones Select Case


La construccin Select Case es til para escoger entre tres o ms opciones. Esta construccin tambin funciona con dos
opciones y es una alternativa vlida a If then Else. Su sintaxis es:
Select Case [expresin a comprobar]
Case [lista_expresiones-n]
[instrucciones-n]
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

40

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Case Else
[instrucciones predeterminadas]
End Select
Un ejemplo de la construccin podra ser:
Sub Saludo_3 ( )
Select Case Weekday (Now)
Case 1 Or 7
MsgBox Es fin de semana
Case Else
MsgBox No es fin de semana
End Select
End Sub

4.7.4. Bucles For Next


Esta construccin se utiliza para repetir una serie de declaraciones para cada elemento en una matriz o cada objeto de una
coleccin. Su sintaxis es:
For contador = inicio To final [Step valor_salto]
[instrucciones]
[Exit For]
[instrucciones]
Next [contador]
El contador debe declararse al principio junto con el resto de variables para que VBA no le asigne un valor Variant. De esta
forma se gana en rapidez de clculo. Los contadores han de ser positivos aunque el salto (Step) podra ser negativo para
reducir el valor a medida que se ejecuta el bucle.
En el siguiente ejemplo sumamos la raz cuadrada de los primeros cien nmeros:
Sub SumaRaiz ( )
Dim Sum As Double
Dim i As Integer
Sum = 0
For i = 1 To 100
Sum = Sum + Sqr (Count)
Next i
MsgBox Sum
End Sub
Si hubiramos deseado considerar nicamente los valores impares deberamos haber escrito:
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

41

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

For Count = 1 To 100 Step 2


Los bucles For Next se pueden anidar uno dentro de otro. La nica condicin es que cada uno se ha de finalizar con su
correspondiente Next.

4.7.5. Bucles Do While


Un bucle Do While se ejecuta mientras se cumpla una determinada condicin. Puede tener dos sintaxis ya que VBA nos
permite incluir la condicin While al principio o al final del bucle. La diferencia est en el momento en que se evala la
condicin. En la primera sintaxis, el contenido del bucle nunca se ejecuta. En la segunda el contenido del bucle se ejecuta
siempre al menos una vez.
Sintaxis 1:
Do [While condition]
[instrucciones]
[exit Do]
[instrucciones]
Loop
Sintaxis 2:
Do
[instrucciones]
[exit Do]
[instrucciones]
Loop [While condition]
Ejemplos de estas construcciones son:
Sub DoWhile_1( )
Do While Not IsEmpty(ActiveCell)
ActiveCell.Value = 0
ActiveCell.Offset (1,0).Select
Loop
End Sub

Sub DoWhile_2( )
Do
ActiveCell.Value = 0
ActiveCell.Offset (1,0).Select
Loop While Not IsEmpty(ActiveCell)
End Sub

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

42

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

4.7.6. Bucles Do Until


La estructura del bucle Do Until es muy parecida a la del bucle Do While. La diferencia se aprecia solamente cuando se
comprueba la condicin. En un bucle Do While, el bucle se ejecuta mientras se cumpla la condicin. En el bucle Do Until,
el bucle se ejecuta hasta que se cumple la condicin.
Esta estructura tambin tiene dos sintaxis:
Do [until condicin]
[instrucciones]
[Exit Do]
[instrucciones]
Loop

Do
[instrucciones]
[Exit Do]
[instrucciones]
Loop [until condicin]
Los ejemplos anteriores se escribiran de la siguiente forma:
Sub DoUntil_1( )
Do Until ActiveCell.Value = 0
ActiveCell.Value = 0
ActiveCell.Offset (1,0).Select
Loop
End Sub

Sub DoUntil_2( )
Do
ActiveCell.Value = 0
ActiveCell.Offset (1,0).Select
Loop Until ActiveCell.Value = 0
End Sub

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

43

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

5. FUNCIONES
Los procedimientos Function se pueden usar en dos situaciones:

5.1.

Como parte de una expresin en un procedimiento VBA.


En las frmulas que se crean en una Hoja.

PROCEDIMIENTOS DE FUNCIN

5.1.1. Declarar una funcin


La sintaxis para declarar una funcin es la siguiente:
[Public | Private] [Static] Function nombre ([Lista de argumentos]) [As tipo]
[instrucciones]
[nombre = expresin]
[Exit Function]
[instrucciones]
[nombre = expresin]
End Function
Donde:

Public (Opcional). Indica que todos los dems procedimientos de todos los dems mdulos de todos los
proyectos activos de VBA pueden acceder al procedimiento Function.

Private (Opcional). Indica que slo otros procedimientos del mismo mdulo que el procedimiento Function
pueden acceder a l.

Static (Opcional). Indica que los valores de las variables declaradas en el procedimiento Function se
mantienen entre una invocacin y otra.

Function (Obligatorio). Es la palabra clave que indica el principio de un procedimiento que devuelve un valor u
otros datos.

Nombre (Obligatorio). Representa cualquier nombre vlido del procedimiento Function, que debe seguir las
mismas reglas que un nombre de variable.

Lista argumentos (Opcional). Representa una lista de una o ms variables que representan argumentos
pasados al procedimiento Function. Los argumentos se encuentran entre parntesis. Usamos una coma para
separar dos argumentos.

Tipo (Opcional). Es el tipo de dato devuelto por el procedimiento Function.

End Function (Obligatorio). Es una palabra clave que indica el final del procedimiento.

Instrucciones (Opcional). Cualquier nmero vlido de instrucciones VBA.


Exit Function (Opcional). Es una instruccin que hace que se salga inmediatamente del procedimiento
Function antes de que finalice.

Esta forma de definir funciones no puede utilizar nombres de funciones integradas en Excel ya que sino Excel usar la
predeterminada.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

44

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

5.1.2. mbito de Function


El mbito de una funcin determina si otros procedimientos en otros mdulos u hojas pueden llamarla. Se ha de tener en cuenta
que:

Si no declaramos el mbito de una funcin ste ser pblico.

Si el cdigo VBA necesita llamar a una funcin que ha sido definida en otro libro, se deber establecer una
referencia al otro libro usando el comando del editor de VB Herramientas > Referencias. Otra opcin es insertar la
referencia al archivo antes de la Function.

Los procedimientos Function no aparecen en el cuadro de dilogo de Macros.

Las funciones declaradas como Private no aparecern en el cuadro de dilogo Pegar funcin de Excel. Por lo
tanto, no podr utilizarse como una frmula de hoja.

Los procedimientos Function no se pueden ejecutar mediante el comando Ejecutar del Editor de Visual Basic.

5.1.3. Ejecutar procedimientos Function


Los procedimientos function slo se pueden ejecutar de dos formas:

Llamndolos desde otro procedimiento.


Usndolos en una frmula de una hoja.

Podemos invocar funciones personalizadas desde un procedimiento, de la misma forma que invocamos funciones integradas.
Por ejemplo, tras definir una funcin llamada Integral, podemos introducir una instruccin como la que sigue:
Area = Integral (Matriz)
Esta instruccin ejecuta la funcin Integral con Matriz como argumento, devuelve el resultado de la funcin y lo asigna a
la variable Area.
Tambin podemos usar el mtodo Run del objeto Application como se muestra a continuacin:
Area = Application.Run (Integral, Matriz)
El primer argumento para el mtodo Run es el nombre de la funcin. Los siguientes argumentos representan los argumentos
para la funcin. Los argumentos para el mtodo Run pueden ser cadenas literales, nmeros o variables.
Usar funciones personalizadas en una frmula de hoja es similar a usar las funciones integradas, excepto que debemos
asegurarnos de que Excel puede localizar el procedimiento Function.
En el cuadro Insertar funcin de Excel, las funciones personalizadas aparecen por defecto bajo la categora Definidas por el
Usuario.

5.2.

ARGUMENTOS DE FUNCIN

Respecto los argumentos de una Function se ha de tener en cuenta lo siguiente:

Los argumentos pueden ser variables (incluyendo matrices), constantes, literales o expresiones.
Algunas funciones no tienen argumentos.
Algunas funciones tienen un nmero fijo de argumentos necesarios (entre 1 y 60).
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

45

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Algunas funciones tienen una combinacin de argumentos necesarios y opcionales.

En las funciones usadas en Excel separaremos los argumentos por un punto y coma ( ; ) a diferencia de como lo hacemos en
VBA.
= Integral2 (A1 ; B1)

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

46

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

6. TABLAS DINMICAS
Una tabla dinmica en Excel permite hacer resmenes de una Base de Datos, utilizndose para, promediar, o totalizar datos.

6.1.

TABLAS DINMICAS EN EXCEL

6.1.1. Crear una tabla dinmica


Excel incluye un asistente-gua que facilita la creacin de Tablas Dinmicas. Para su utilizacin se debe recurrir a Men- DatosInforme de Tablas y grficos dinmicos.
La creacin de una tabla dinmica se realiza a travs del asistente y en varios pasos.
Con el cursor en cualquier celda de la tabla de datos, abrir la opcin Men Datos Informe de tablas y grficos dinmicos. Se
acceder al asistente.

Figura 6.1. Asistente para tablas y grficos dinmicos.


En el paso 1 se seleccionan los siguientes campos:

Lista o base de datos de Microsoft Excel


Tabla dinmica

En el paso 2 se introduce el rango de celdas en los que estn los datos.

Figura 6.2. Seleccin de rango para la tabla dinmica.


En el paso 3 aparecer la ventana de la figura 6.2.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

47

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 6.3. Paso 3 del asistente para tablas dinmicas.


Se abre la ventana Diseo...:

Figura 6.4. Ventana Diseo del asistente para tablas dinmicas.


Se ha de montar la tabla desplazando las columnas de la derecha a las zonas que se deseen, Pgina, Fila, Columna o Datos.
Dentro de datos pondremos los ttulos de los que deseemos sumar o hacer promedios. En este caso colocaremos:

Semana en Columna
Vehculos en Fila
Cantidad en Datos.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

48

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 6.5. Montaje de la tabla dinmica.


Con el botn Opciones... podemos controlar los parmetros indicados en la figura 6.6.

Figura 6.6. Opciones de la tabla dinmica.


La tabla obtenida es la siguiente:

Tabla 6.1. Tabla dinmica.


920-100920-INICIACION_VBA_EXCEL-ED1.DOC

49

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

6.1.2. Aplicar filtros a la tabla


Esta tabla se puede modificar con las barras de herramientas que aparecen al seleccionar una celda de la tabla. Figura 6.7.

Figura 6.7. Barras de Herramientas de la tabla dinmica.


Con la Lista de campos de tabla dinmica podremos aadir campos a Filas, Columnas, Datos o Pgina. Una vez aadidos no se
podrn quitar de la tabla, se deber hacer una tabla nueva.
Al pulsar dos veces sobre una celda de la tabla se obtiene en una hoja nueva un resumen de ese valor. Por ejemplo para la celda
interseccin de Furgoneta y Semana 3 se obtiene:

Mes
Semana Vehculo Cantidad
Marzo
3 Furgoneta 82961,77
Febrero
3 Furgoneta 73908,44
Enero
3 Furgoneta
2364,29
Tabla 6.2. Detalle de operaciones en una celda de la tabla dinmica.
Pulsando sobre los mens desplegables se pueden seleccionar las filas o columnas que deseemos ver en la tabla. Se indica en la
Figura 6.8.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

50

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 6.8. Opciones del men Semana.

6.1.3. Obtener promedios


Siguiendo con las opciones que permiten las Tablas Dinmicas, se puede obtener de la tabla sin filtrar el promedio de los
campos de datos.
Se coloca el cursor sobre una celda de la tabla y se hace clic con el botn derecho del ratn, obtenindose un men en el que se
ha de seleccionar Configuracin de campo... . Aparecer la siguiente ventana:

Figura 6.9. Propiedades de los campos.


En esta ventana podremos cambiar la configuracin de nmero (moneda, cientfico, etc.) y qu tipo de resumen queremos en la
tabla (suma, promedio, etc.).

6.1.4. Tablas dinmicas en 3D


Se pueden crear tablas con una variable en un nivel superior, el campo Pgina. Si en el ejemplo anterior situamos Mes en el
campo Pgina podremos obtener resmenes en funcin de cada mes con todas las variables definidas en Filas y Columnas.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

51

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Tabla 6.3. Detalle de operaciones en una celda de la tabla dinmica.


Aparece en la parte superior de la tabla la Variable de Pgina, en este caso Mes.

6.1.5. Actualizar datos y subtablas


Si se producen cambios en las celdas de la tabla de base de datos se debe realizar una actualizacin de la Tabla Dinmica. Esta
actualizacin se realiza de la siguiente manera:
Se selecciona una celda y se pulsa el botn derecho del ratn para abrir el men siguiente:

Figura 6.9. Propiedades de los campos.


Escogemos la opcin Actualizar datos y la tabla se actualiza automticamente.

6.1.6. Grficos de una tabla dinmica


Al hacer clic con el botn derecho del ratn se selecciona la opcin Grafico Dinmico, lo que produce por defecto un grafico en
columna. En este grfico tambin podremos variar los elementos a ver en funcin de los campos que se hayan introducido en
Pgina y Columna. El grfico se crea en una hoja nueva.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

52

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 6.10. Propiedades de los campos.


Seleccionando Tipo de grfico: Podemos elegir el tipo de grfico.

6.1.7. Eliminar una tabla dinmica


Se elimina seleccionando la Tabla en su totalidad y apretando la tecla Suprimir (Supr)

6.2.

TABLAS DINMICAS CON VBA

6.2.1. Crear una tabla dinmica


Para crear una tabla dinmica con VBA hemos de introducir dos parmetros principales, que son:

PivotCache (Memoria dinmica)


PivotTable (Tabla dinmica)

En primer lugar se declaran los dos parmetros:


Dim PTCache As PivotCache
Dim PT As PivotTable
Donde PTCache y PT son nombres a definir para el procedimiento.
A continuacin definimos la memoria dinmica y la tabla dinmica:
Set PTCache = ActiveWorkbook.PivotCaches.Add (sourceType:=xlDataBase, _
SourceData:=Sheet1!R1C1:R13C4)

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

53

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Set PT = PTCache.CreatePivotTable (TableDestination:=, _


TableName:=Tabla dinmica 1)
En estas dos instrucciones se ha de tener en cuenta:

SourceData es el rea de los datos de la tabla que acta como Base de datos. Es el rango que se introduce en el
paso 2 del asistente visto antes. La forma de indicarlo ser cualquiera de las vistas anteriormente para indicar
rangos de celdas.

TableDestination es la hoja en la que se situar la tabla. Si se deja es en la misma hoja. Si se desea


ponerla en una hoja distinta se deber indicar de la siguiente forma:
TableDestination:=Sheets(Name_sheet).Range(B10)

TableName es el nombre de la tabla.

Para aadir los campos se debe hacer en la instruccin PivotTable. Aprovechando que hemos definido PT como
PivotTable se puede escribir de la siguiente forma:
With PT
.PivotFields(Mes).Orientation = xlPageField
.PivotFields(Semana).Orientation = xlColumnField
.PivotFields(Vehculo).Orientation = xlRowField
.PivotFields(Cantidad).Orientation = xlDataField
End With
Con esta instruccin se introducen los campos de forma anloga a como se hace con el asistente, con las siguientes
consideraciones:

xlPageField es el campo correspondiente a Pgina.


xlColumnField es el campo correspondiente a Columna.
xlRowField es el campo correspondiente a Fila.
xlDataField es el campo correspondiente a Datos.

El cdigo quedara de esta forma:


Sub CrearPivotTable()
Dim PTCache As PivotCache
Dim PT As PivotTable

Set PTCAche = ActiveWorkbook.PivotCaches.Add (sourceType:=xlDataBase, _


SourceData:=Sheet1!R1C1:R13C4)

Set PT = PTCache.CreatePivotTable _
(TableDestination:= Sheets(Name_sheet).Range(B10), _
TableName:=Tabla dinmica 1)

With PT
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

54

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

.PivotFields(Mes).Orientation = xlPageField
.PivotFields(Semana).Orientation = xlColumnField
.PivotFields(Vehculo).Orientation = xlRowField
.PivotFields(Cantidad).Orientation = xlDataField
End With
End Sub

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

55

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

7. FORMULARIOS INTEGRADOS
Los cuadros de dilogo son los elementos ms importantes de la interfaz de usuario de los programas Windows. En Excel se
pueden crear cuadros de dilogo personalizados creando UserForms.

7.1.

CUADROS DE DILOGO INTEGRADOS

Los cuadros de dilogo se pueden crear partiendo de cero o se pueden aprovechar los ya integrados en Excel. Estos cuadros
integrados son:

7.2.

Un cuadro de entrada de datos.


Un cuadro de mensaje.
Un cuadro de dilogo para seleccionar un archivo para abrirlo.
Un cuadro de dilogo para especificar el nombre de archivo y su ubicacin para guardar una operacin.
Un cuadro de dilogo para especificar un directorio.
Un cuadro de dilogo para la entrada de datos.

FUNCIN INPUTBOX DE VBA

Es un cuadro de dilogo sencillo que permite al usuario introducir datos. Se puede introducir un texto, un nmero o incluso
seleccionar un rango.
La sintaxis de esta funcin es:
InputBox (Mensaje [, ttulo] [, predeterminado] [, xpos] [, ypos] _
[, archivo_ayuda, contexto])
Donde:

Mensaje. Obligatorio. El texto que se muestra en el cuadro de entrada.


Ttulo. Opcional. El ttulo de la ventana del cuadro de entrada.
Predeterminado. Opcional. El valor por defecto que se muestra en el cuadro de dilogo.
xpos, ypos. Opcional. Las coordenadas de la ventana desde la esquina superior izquierda de la pantalla.
Archivo_de_ayuda, contexto. Opcional. El archivo de ayuda y el tema de ayuda.

Esta funcin solicita al usuario alguna informacin. Esta informacin siempre es devuelta por la funcin como una cadena, por
lo que ser necesario convertir el resultado en un valor. Si la cadena devuelta es un nmero lo podemos transformar en un valor
numrico mediante el comando de VBA Val.
Se puede aadir un ttulo para el cuadro de dilogo, un valor predeterminado y especificar su posicin en la pantalla. Si se
especifica un tema de ayuda personalizado, el cuadro de introduccin de datos incluir un botn de ayuda.
Por ejemplo la siguiente lnea crea el cuadro de dilogo de la figura 7.1.
Username = InputBox("Entre su nombre", "Identificacin")
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

56

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Figura 7.1. Ejemplo de InputBox.

7.3.

FUNCIN INPUT BOX DE EXCEL

La utilizacin del mtodo InputBox de Excel en lugar del de VBA tiene tres ventajas:

Podemos especificar el tipo de datos que devuelve.


El usuario puede especificar un rango de hoja arrastrndolo a la misma.
La validacin de los datos introducidos se realiza automticamente.

La sintaxis de este mtodo es la siguiente:


Application.InputBox(Prompt, Title, Default, Left, Top, Helpfile, _
HelpContextId, Type)
Donde:

Prompt. Obligatorio. El texto que se muestra en el cuadro de introduccin de datos.


Ttle. Opcional. El ttulo de la ventana del cuadro de introduccin de datos.
Default. Opcional. El valor por defecto que devolver la funcin si el usuario no introduce nada.
Left, Top. Opcional. Las coordenadas de pantalla de la parte superior izquierda de la ventana.
Helpfile, HelpContextId. Opcional. El archivo de ayuda y el tema de ayuda.
Type. Opcional. El cdigo para el tipo de dato devuelto segn tabla 7.1.

Cdigo

Significado

Una frmula.

Un nmero.

Una cadena (texto).

Un valor lgico (Verdadero o Falso).

Una referencia a una celda, como un objeto de rango.

16

Un valor de error, como #N/A.

64

Una matriz de valores.


Tabla 7.1. Tipos de datos.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

57

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Un ejemplo de la instruccin es:


Set myRange = Application.InputBox(Prompt:= "Sample", type:= 8)
El uso de Set hace que asignemos a myRange toda la expresin. Si no escribimos Set entonces se le asigna el valor
introducido en el cuadro de dilogo como si fuera una variable.
Una ventaja de usar el mtodo de Excel es que al realizar Excel automticamente la validacin de los datos, si se introduce un
tipo de datos diferente al esperado aparece un mensaje informativo y permite al usuario volver a introducir los datos.
Para aceptar dos tipos diferentes de datos, en la propiedad tendremos que poner la suma de los, es decir, por ejemplo,
type:=1+2.

7.4.

FUNCIN MSGBOX DE VBA

La funcin MsgBox de VBA es un medio sencillo de mostrar un mensaje al usuario o de obtener una respuesta simple (como
Aceptar o Cancelar).
La sintaxis es la siguiente:
MsgBox(Prompt[, Buttons][, Title][, Helpfile, Context])
Donde:

Prompt. Obligatorio. El texto que se muestra en el cuadro de mensaje.

Ttle. Opcional. El ttulo de la ventana del cuadro de mensaje.

Buttons. Opcional. Una expresin numrica que determina qu botones e iconos se muestran en el cuadro de
mensaje.
Helpfile, Context. Opcional. El archivo de ayuda y el tema de ayuda.

Las constantes usadas para los botones de la funcin MsgBox se indican en la siguiente tabla:

Constante

Valor

Descripcin

vbOKOnly

Slo muestra el botn Aceptar.

vbOKCancel

Muestra los botones Aceptar y Cancelar.

vbAbortRetryIgnore

Muestra los botones Anular, Reintentar y Omitir.

vbYesNoCancel

Muestra los botones S, No y Cancelar.

vbYesNo

Muestra los botones S y No.

vbRetryCancel

Muestra los botones Reintentar y Cancelar.

vbCritical

16

Muestra el icono de mensaje crtico.

vbQuestion

32

Muestra el icono de consulta.

vbExclamation

48

Muestra el icono de mensaje de advertencia.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

58

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Constante

Valor

Descripcin

vbInformation

64

Muestra el mensaje de informacin.

vbDefaultButton1

El primer botn es el predeterminado.

vbDefaultButton2

256

El segundo botn es el predeterminado.

vbDefaultButton3

512

El tercer botn es el predeterminado.

vbDefaultButton4

768

El cuarto botn es el predeterminado.

vbSystemModal

4096

Se suspenden todas las aplicaciones hasta que el


usuario responda al mensaje (puede que no
funcione en todos los casos).
Tabla 7.2. Tipos de datos.

Figura 7.2. Ejemplo de MsgBox.


Para usar una combinacin de varios botones podemos sumarlos en la propiedad buttons como por ejemplo,
vbYes + vbQuestion + vbDefaultButton2.
Se puede asignar el resultado de un MsgBox a una variable. Un ejemplo de asignacin del resultado de un MsgBox a una
variable se recoge a continuacin:
Sub Respuesta()
Ans = MsgBox(Continue?, vbYesNo)
Select Case Ans
Case vbYes
... [cdigo si Ans es S] ...
Case vbNo
... [cdigo si Ans es No] ...
End Select
End Sub
Las constantes usadas para el valor devuelto por MsgBox se indican en la tabla 7.3.

Constante

Valor

Descripcin

vbOK

Aceptar.

vbCancel

Cancelar.

vbAbort

Anular.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

59

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Constante

Valor

Descripcin

vbRetry

Reintentar.

vbIgnore

Omitir.

vbYes

S.

vbNo

No.

Tabla 7.3. Valores devueltos por MsgBox.

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

60

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

8. GRFICOS
8.1.

PARMETROS BSICOS

Excel mantiene todos los grficos como objetos de grfico dentro del Modelo de objetos de Excel.
Excel guarda cada hoja de grfico como un objeto de grfico, que son subordinados del correspondiente objeto Workbook.
Cada objeto de grfico tiene diferentes objetos subordinados que representan los diferentes elementos de un grfico.
Los grficos incrustados son los grficos que se aaden a una hoja de clculo existente en un punto determinado. En este caso el
grfico queda subordinado al objeto Worksheet. Todos los grficos de una misma hoja de clculo forman una coleccin
ChartObject que contiene todos los grficos de esa hoja.
Los principales objetos subordinados al objeto Chart son los siguientes:

Axes Collection. Incluye los siguientes objetos AxisTitle, Border, Gridlines y TickLabels.
ChartArea. Incluye los objetos Border, Font e Interior.
ChartGroups Collection. Coleccin de los objetos ChatrGroup que representan cada grupo de datos en un
grfico.

ChartObjects Collection. Coleccin de los objetos Chart en una hoja.

Corners. Representa las esquinas de un grfico 3D.

PageSetup. Contiene la informacin de configuracin de la pgina incluyendo mrgenes, medida del papel, etc.

Shapes Collection. Coleccin de las formas dentro del grfico.

ChartTitle. Representa el ttulo de un grfico. Incluye los objetos Border, Characters, Font e
Interior.
DataTable. Representa la tabla de datos de un grfico. Incluye un objeto Border.
Floor. Representa el suelo de un grfico 3D. Incluye los objetos Border e Interior.
Legend. Representa la leyenda del grfico. Incluye los objetos Font, Border, Interior y
LegendEntries.
SeriesCollection Collection. Contiene los objetos Series que representan los datos en el grfico. Incluye
los objetos Border, Points e Interior.
Tab. Representa una lengeta de un grfico.
Walls. Representa las paredes de un grfico 3D. Incluye los objetos Border e Interior.

Excel tiene 14 tipos de grficos teniendo cada uno al menos dos subtipos de grficos. Se selecciona un grfico especificando un
valor de la constante xlChartType para la propiedad ChartType.

8.2.

CREAR UNA HOJA DE GRFICO

Cuando se crea un grfico, VBA crea un nuevo objeto Chart que contiene todas las opciones correspondientes al grfico.
Adems contiene diferentes objetos que representan las caractersticas del grfico.
Como existe la posibilidad de crear una hoja de grfico o incrustar un grfico en una hoja, cuando se crea un grfico en una
nueva hoja se usa el objeto Chart directamente, cuando se incrusta en una hoja se utiliza la coleccin de objetos
ChartObjects.
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

61

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Para crear una hoja de grfico separada se usa el mtodo Add con el objeto Chart. Con este mtodo se pueden usar tres
parmetros diferentes para especificar la localizacin del grfico y el nmero de hojas a aadir. Utilizando el parmetro
Before se especifica la hoja antes de la cual ir el grfico. El parmetro After indica despus de qu hoja se situar la hoja
de grfico. Finalmente si se desean crear mltiples hojas de grfico se usa el parmetro Count para indicar el nmero de hojas
a aadir.
El cdigo a introducir empieza por declarar el nuevo grfico:
Dim Nuevo_grafico As Chart
Se aade mediante la instruccin:
Set Nuevo_grafico = ThisWorkbook.Charts.Add()
Cambiamos el nombre a la hoja de grfico con la instruccin:
Nuevo_grafico.Name = Nuevo nombre de hoja
En cualquier grfico se debe especificar el rango de datos. Esto se realiza mediante la instruccin SetSourceData que necesita
dos parmetros diferentes. Su sintaxis es:
Nuevo_grafico.SetSourceData :=Source, PlotBy
Donde:

Source. Range requerido. Es el rango que contiene los datos de origen.


PlotBy. Variant opcional. Especifica el modo de trazado de los datos. Puede ser una de las siguientes constantes
XlRowCol: xlColumns o xlRows. Este parmetro le dir a Excel si considerar los datos en columnas o filas.

Un ejemplo sera:
Charts(1).SetSourceData Source:=Sheets(1).Range("A1:A10"),

PlotBy:=xlColumns

La indicacin Charts(1) significa el primer grfico dentro de Workbook.


Para especificar el tipo de grfico se usa otra instruccin de la siguiente manera:
Nuevo_grafico.ChartType = xlColumnClustered

8.3.

INCRUSTAR UN GRFICO EN UNA HOJA

Cuando se incrusta un grfico en una hoja, se crea un objeto Chart dentro de un objeto Worksheet ya que se pueden situar
diversos grficos en la misma hoja. Por esta razn es necesario utilizar la coleccin ChartObjects para trabajar con esos
grficos.
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

62

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

Para aadir un grfico a una hoja existente se debe usar el mtodo Add con el objeto ChartObjects. El mtodo Add tiene
cuatro parmetros opcionales para ayudar a la situacin y localizacin de los grficos. stos son:

Left. Este parmetro se utiliza para especificar la localizacin del grfico respecto el margen izquierdo de la
columna A.

Top. Este parmetro se utiliza para especificar la localizacin del grfico respecto el margen superior de la fila 1.
Width. Este parmetro se utiliza para especificar el ancho inicial del grfico.
Height. Este parmetro se utiliza para especificar el alto inicial del grfico.

El tipo de grfico se especifica mediante la propiedad ChartType. Con esta propiedad se especifica el tipo de grfico
mediante la constante XlChartType.
El cdigo a introducir empieza por declarar el nuevo grfico:
Dim Nuevo_grafico As ChartObject
Se aade mediante la instruccin:
Set Nuevo_grafico = Sheets(Sheet1).ChartObjects.Add(Left:=50, Top:= 30, _
Width:=400, Height:=400)
En cualquier grfico se debe especificar el rango de datos. Esto se realiza mediante la instruccin SetSourceData que necesita
dos parmetros diferentes. Su sintaxis es:
Nuevo_grafico.Chart.SetSourceData := Source, PlotBy
Donde:

Source. Range requerido. Es el rango que contiene los datos de origen.


PlotBy. Variant opcional. Especifica el modo de trazado de los datos. Puede ser una de las siguientes constantes
XlRowCol: xlColumns o xlRows. Este parmetro le dir a Excel si considerar los datos en columnas o filas.

Un ejemplo sera:
Nuevo_grafico.Chart.SetSourceData Source:=Sheets(1).Range("A1:A10"), _
PlotBy:=xlColumns
Para especificar el tipo de grfico se usa otra instruccin de la siguiente manera:
Nuevo_grafico.Chart.ChartType = xl3DColumn

8.4.

APLICAR LAS OPCIONES DEL ASISTENTE PARA GRFICOS EN UN GRFICO

Para la construccin de un grfico se pueden usar las propiedades del asistente para grficos de Excel. En l se especificarn los
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

63

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

parmetros necesarios para crearlo, no siendo necesarios todos. Estos parmetros son:

Source. Variant opcional. Rango que contiene los datos de origen del nuevo grfico. Si este argumento se omite,
Microsoft Excel modificar la hoja de grficos activa o el grfico seleccionado en la hoja de clculo activa.

Gallery. XlChartType opcional. Tipo de grfico.

PlotBy. Variant opcional. Especifica si los datos de cada serie estn en filas o en columnas. Puede ser una de las
siguientes constantes XlRowCol: xlRows o xlColumns.

CategoryLabels. Variant opcional. Un nmero entero que especifica el nmero de filas o de columnas del
rango de origen que contienen rtulos de categoras. Los valores permitidos van desde cero hasta uno menos que
el nmero mximo de las categoras o series correspondientes.

SeriesLabels. Variant opcional. Un nmero entero que especifica el nmero de filas o de columnas del rango
de origen que contienen rtulos de series. Los valores permitidos van desde cero hasta uno menos que el nmero
mximo de las categoras o series correspondientes.

HasLegend. Variant opcional. True si se incluye una leyenda.

Format. Variant opcional. El nmero de opcin de los autoformatos integrados. Puede ser un nmero del 1 al
10, dependiendo del tipo de la galera. Si este argumento se omite, Microsoft Excel elegir un valor
predeterminado basndose en el tipo de la galera y en el origen de los datos.

Title. Variant opcional. El texto del ttulo del grfico.


CategoryTitle. Variant opcional. El texto del ttulo del eje de categoras.
ValueTitle. Variant opcional. El texto del ttulo del eje.
ExtraTitle. Variant opcional. El ttulo del eje de series en grficos 3D o el segundo ttulo del eje de valores en
grficos 2D.

Un ejemplo podra ser:


Charts("Chart1").ChartWizard Gallery:=xlLine,

HasLegend:=True, _

CategoryTitle:="Year", ValueTitle:="Sales"
Los tipos de grfico XlChartType son:

8.5.

xlArea. Dibuja valores y colores individuales en un rea para resaltar las series de datos.
xlBar. Muestra datos en columnas horizontales para ilustrar la relacin entre datos.
xlColumn. Muestra datos en columnas horizontales para ilustrar la relacin entre datos.
xlLine. Dibuja valores individuales en una lnea continua para ilustrar las tendencias de los datos.
xlPie. Muestra la relacin de cada dato con el resto en un todo completo.
xlRadar. Dibuja cada serie de datos en unos ejes separados.
xlXYScatter. Dibuja diferentes fuentes de datos mediante diferentes barras de tiempo.
xlCombination. Crea una combinacin de grficos.
xl3DLine. Dibuja relaciones entre datos en una lnea continua con una representacin en 3D.
xl3DPie. Muestra la relacin de cada dato con el resto en un todo completo en 3D.
xl3DSurface. Dibuja los datos para crear un grfico con forma topogrfica en 3D.
xlDoughnut. Muestra las relaciones entre los valores de los datos en un crculo completo.

AADIR UNA NUEVA SERIE DE DATOS A UN GRFICO

Una vez se ha creado un grfico, se puede redefinir el rango de datos que usa Excel para crear el grfico. Para aadir una nueva
920-100920-INICIACION_VBA_EXCEL-ED1.DOC

64

CURSO INICIACIN VISUAL BASIC FOR


APPLICATIONS PARA EXCEL
OCTUBRE - 2010

serie de datos al rango existente de un grfico creado, se crea un nuevo objeto de Series y se aade a la coleccin
SeriesCollection con el mtodo Add.
La coleccin SeriesCollection representa todas las series de datos que Excel representa en un grfico, siendo cada serie
de datos un objeto Series diferente.
Con el mtodo Add se pueden usar cinco parmetros distintos:

Source. Variant requerida. Los nuevos datos, ya sea como un objeto Range o como una matriz de puntos de
datos.

Rowcol. Opcional. Especifica si los nuevos datos estn en filas o columnas especificando la constante
xlColumns o xlRows.

SeriesLabels. Variant opcional. No se tiene en cuenta si Source es una matriz. True si la primera fila o
columna contiene el nombre de la serie de datos. False si la primera fila o columna contiene el primer punto de
datos de la serie. Si este argumento se omite, Microsoft Excel intentar determinar la ubicacin del nombre de la
serie a partir del contenido de la primera fila o columna.

CategoryLabels. Variant opcional. No se tiene en cuenta si Source es una matriz. True si la primera fila o
columna contiene el nombre de los rtulos de categoras. False si la primera fila o columna contiene el primer
punto de datos de la serie. Si este argumento se omite, Microsoft Excel intentar determinar la ubicacin del rtulo
de categoras a partir del contenido de la primera fila o columna.

Replace. Variant opcional. Si CategoryLabels es True y Replace es True, las categoras especificadas
reemplazarn a las existentes en la serie. Si Replace es False, no se reemplazarn las categoras ya existentes. El
valor predeterminado es False.

La construccin a usar es:


Charts("Chart1").SeriesCollection.Add Source:=ActiveWorkbook. _
Worksheets("Sheet1").Range("B1:B10")

Worksheets("Sheet1").ChartObjects(1).Activate
ActiveChart.SeriesCollection.Add Source:=Worksheets("Sheet1").Range("B1:B10")

920-100920-INICIACION_VBA_EXCEL-ED1.DOC

65

S-ar putea să vă placă și