Está en la página 1de 86

2014

Visual Basic para Aplicaciones


VBA 2013

MICROSOFT EXCEL 2013


ROSALINDA HERNNDEZ

[NOMBRE DE LA COMPAA] | [Direccin de la compaa]

Tabla de contenido
Clase 1 - Mdulos ............................................................................................................................................... 4
Insertar .......................................................................................................................................................... 4
Renombrar .................................................................................................................................................... 5
Eliminar.......................................................................................................................................................... 6
Procedimientos .................................................................................................................................................. 7
Objetos y Colecciones ........................................................................................................................................ 9
Objetos .......................................................................................................................................................... 9
Colecciones.................................................................................................................................................. 10
Referencias a Objetos ...................................................................................................................................... 11
Clase 2 - Propiedades y Mtodos..................................................................................................................... 12
Propiedades................................................................................................................................................. 12
Mtodos ...................................................................................................................................................... 13
Comment ......................................................................................................................................................... 15
El Objeto Comment en Excel ....................................................................................................................... 15
Propiedades del Objeto Comment .............................................................................................................. 16
Mtodos del Objeto Comment ................................................................................................................... 16
La coleccin del Objeto Comment .............................................................................................................. 17
Ejemplo del mtodo Text del Objeto Comments .................................................................................... 17
Ejemplo de la propiedad Count del Objeto Comments ........................................................................... 18
Ejemplo de la propiedad Parent del Objeto Comments .......................................................................... 18
Ejemplo del recorrido de todos los comentarios del Objeto Comment ..................................................... 19
Comment como una propiedad del Objeto Range ..................................................................................... 20
Objetos dentro de un Objeto Comment ..................................................................................................... 21
Mensaje de error cuando no hay un comentario en la celda y cmo resolverlo ...................................... 22
Caso prctico 1 Buscar comentarios ............................................................................................................. 23
Qu usaremos ............................................................................................................................................. 23
Escribimos cdigo ........................................................................................................................................ 26
Clase 3 Obtener un Objeto Range................................................................................................................. 32
Concepto clave Maneras de obtener un Objeto Range ........................................................................... 32
Objeto Range que se genera empleando la Propiedad Range ................................................................... 32
Sobre un Objeto Worksheet ................................................................................................................................... 33
Sobre un Objeto Range ........................................................................................................................................... 34

Objeto Range que se genera empleando la Propiedad Cells ...................................................................... 35


Objeto Range que se genera empleando la Propiedad Offset ................................................................... 36
Clase 4 Elementos del lenguaje VBA parte 1 ................................................................................................ 37
Palabras claves y estructuras de control ..................................................................................................... 37

Comentarios ................................................................................................................................................ 38
Variables ...................................................................................................................................................... 39
Tipos de datos de las variables ............................................................................................................................... 39
Reglas para los nombres de las Variables ............................................................................................................... 40
Declaracin de variables ......................................................................................................................................... 41
Declarar una variable normal genricamente ........................................................................................................ 42

Clase 5 Elementos del lenguaje VBA parte 2 ................................................................................................ 43


Dnde se declara la variable? ................................................................................................................... 43
mbito Local ........................................................................................................................................................... 43
A nivel de un mdulo .............................................................................................................................................. 44
Pblica ..................................................................................................................................................................... 45

Clase 6 Elementos del lenguaje VBA parte 3 ................................................................................................ 46


Constantes ................................................................................................................................................... 46
Por qu declarar constantes? ............................................................................................................................... 46
Constantes locales .................................................................................................................................................. 47
Constantes a nivel de un mdulo............................................................................................................................ 47
Constantes pblicas ................................................................................................................................................ 47

Constantes internas de VBA ........................................................................................................................ 48


Funcin interna MsgBox ......................................................................................................................................... 48

Clase 7 Elementos del lenguaje VBA parte 4 ................................................................................................ 51


Cadenas de texto ......................................................................................................................................... 51
Trabajar con fechas ..................................................................................................................................... 52
Clase 8 Elementos del lenguaje VBA parte 5 ................................................................................................ 53
Expresiones ................................................................................................................................................. 53
Instrucciones de asignacin ........................................................................................................................ 54
Operadores.................................................................................................................................................. 55
Clase 9 Elementos del lenguaje VBA parte 6 ................................................................................................ 57
Arreglos Arrays ......................................................................................................................................... 57
Conceptos generales ............................................................................................................................................... 57

Vectores y Matrices .................................................................................................................................... 57


Declaracin ............................................................................................................................................................. 57
Ejemplo: especificando el ndice en un vector ....................................................................................................... 58
Ejemplo: empleando un bucle en un vector ........................................................................................................... 58
Ejemplo: empleando un bucle en una matriz ......................................................................................................... 59
Ejemplo: especificando de forma automtica y especfica el lmite inferior .......................................................... 59

Arreglos dinmicos ...................................................................................................................................... 60


Algunas funciones para trabajar con arreglos ............................................................................................ 62
Clase 10 Elementos del lenguaje VBA parte 7 .............................................................................................. 63

Variables de objeto ..................................................................................................................................... 63


Declaracin de una variable de objeto ................................................................................................................... 63
Variables de objeto genricas ................................................................................................................................. 64
Asignar objetos a las variables de objeto................................................................................................................ 64
Para agregar un elemento a una coleccin............................................................................................................. 67
Para eliminar un elemento de una coleccin ......................................................................................................... 67
Para eliminar todos los elementos de una coleccin ............................................................................................. 67
Para recuperar un elemento de una coleccin ....................................................................................................... 67

Clase 11 Elementos del lenguaje VBA parte 8 .............................................................................................. 68


Tipos de datos personalizados o definidos por el usuario .......................................................................... 68
Estructura ................................................................................................................................................................ 68
Declaracin y uso .................................................................................................................................................... 68
Tipos de datos personalizados y matrices .............................................................................................................. 69

Clase 12 Elementos del lenguaje VBA parte 9 .............................................................................................. 70


Funciones integradas .................................................................................................................................. 70
Concepto general de Funcin ................................................................................................................................. 70
Interrelacin entre las funciones de la hoja de clculo y las funciones VBA .......................................................... 70
Llamar a una funcin de hoja de clculo desde Visual Basic Funciones no equivalentes ................................... 71

Clase 13 Estructuras de control parte 1 ........................................................................................................ 72


Construccin With End Width .................................................................................................................. 72
Clase 14 Estructuras de control parte 2 ........................................................................................................ 74
Construccin For Each - Next ...................................................................................................................... 74
Clase 15 Estructuras de control parte 3 ........................................................................................................ 78
Construccin GoTo ...................................................................................................................................... 78
Clase 16 Estructuras de control parte 4 ........................................................................................................ 81
Construccin IfThenElse ........................................................................................................................ 81

Clase 1 - Mdulos

Para RENOMBRAR un mdulo debemos seleccionar el mdulo y tener abierto la ventana de Propiedades:

Para ELIMINAR un mdulo:

Procedimientos

Dos tipos de procedimientos:


a. Subrutinas
b. Funciones

En la funcin se devuelve un NICO valor en una variable que tiene el MISMO NOMBRE que la funcin. Se
puede llamar desde otro procedimiento
En la subrutina puede haber varias variables.

Creamos un mdulo llamado Procedimientos y dentro de l escribimos nuestros dos procedimientos del
ejemplo:

La ventana Inmediato (Ctrl-G), permite ejecutar directamente funciones Visual Basic, probar instrucciones y
depurar cdigo. Los procedimientos se prueban escribiendo su nombre y las funciones hay que escribir ?
seguido del nombre de la funcin con los parmetros que se le asocia:

En el Excel las funciones generadas por el usuario aparecen:

Objetos y Colecciones

Los objetos estn organizados en jerarqua, Un LIBRO contiene varias HOJAS y cada hoja puede contener
grficos, rango de datos, tablas dinmicas, Los objetos en Excel (VBA) son cosas. Una celda es un
objeto, una hoja es un objeto, un libro es un objeto y de esta manera existen muchos ms objetos
en Excel. A esto lo conocemos como el modelo de objetos de Excel.

Referencias a Objetos

Clase 2 - Propiedades y Mtodos

En una hoja de clculo el valor de una celda es una propiedad y podemos cambiar su valor y tambin
mostrarlo, a continuacin el procedimiento VBA:

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

Recuerda, los objetos son cosas en Excel y sus caractersticas las


llamamos propiedades las cuales nos ayudan a definir al objeto.
Los mtodos son las acciones que cada objeto puede realizar.

Ejemplo:

En la hoja de clculo

En VBA

Cuando se ejecuta el
procedimiento, la
hoja de clculo
queda as:

Ejemplo:

En VBA

Cuando se ejecuta el procedimiento, la hoja de


clculo queda as:

Comment

Caso prctico 1 Buscar comentarios

En Excel

En VBA, insertamos un Formulario y un Mdulo, les cambiamos el nombre

Cambiamos las propiedades del formulario:

Insertamos controles de formularios de etiquetas, cuadros de texto y botones de comando y los


personalizamos, tal y como se muestra en la figura de abajo:

La primera lnea de cdigo:

Cambia el valor de la propiedad Caption de la etiqueta lblNombreHoja por el valor que


tiene la hoja de clculo activa al momento de ejecutar el procedimiento.

La segunda lnea de cdigo:

Muestra en pantalla el formulario


frmBusquedaComentarios.
Si se ejecuta

La primera lnea de cdigo:

Borra el contenido del objeto txtBusqueda que es un cuadro de texto.

La segunda lnea de cdigo:

Emplea el mtodo Clear del control cuadro de lista para limpiar el contenido

Ahora otro procedimiento:

Verificamos si la coleccin Comments de la HOJA ACTIVA (es genrico, no especifica una hoja
en particular) est vaca y en caso de afirmacin enviamos un cuadro de mensaje indicando
tal hecho.
Este mensaje presentar un solo botn, el de Aceptar dado por el parmetro vbOKonly
El parmetro vbInformation es utilizado para mandar un mensaje informativo.

Se verifica si la caja de texto est vaca

Se inicializan las variables con valores vacos y 0 para borrar el contenido de las variables.

Se limpian los elementos del control de caja de lista.

Se asigna el contenido de la caja de texto a la variable TextoBuscado.

For Each Next Sirve para recorrer TODOS los comentarios de la hoja de clculo activa.

Se le asigna a una variable el contenido del comentario, utilizamos el mtodo Text del Objeto
Comment que est asignado en este momento a la variable Comentario que devuelve el
contenido de texto de cada comentario de la hoja activa

Se emplea la funcin InSTR que tiene como parmetros lo que se busca y en dnde se busca,
retorna la posicin del carcter en dnde fue encontrado el texto a buscar, es decir, si se
devuelve un nmero >= 1 quiere decir que se ha encontrado.

Si se ha encontrado, aadimos un elemento nuevo el cuadro de control de lista empleando el


mtodo AddItem, este mtodo recibe un argumento opcional que es la referencia de celda
de donde est el comentario

Empleamos la propiedad List de un control de caja de listas para especificar en qu lugar de


fila y columna se agrega el texto del comentario.

Sumamos uno a la variable que nos permite recorrer las filas del control de lista.

Volvemos a inicializar la variable del texto que se busca antes de proceder a repetir el ciclo.

Al terminar el ciclo de revisin de los comentarios, se verifica si no se ha encontrado ninguno


o si por lo menos se encontr uno, mandando mensajes de informacin segn el caso.
La palabra clave vbCrLf se emplea para introducir un retorno de carro en el texto impreso en
pantalla.
El smbolo & para concatenar texto y/o variables.
El smbolo _ para ingresar un retorno de lnea en el editor de visual basic.

Para enganchar los procedimientos escritos a los controles de los botones de comandos del formulario,
debemos estar pendiente de elegir el evento apropiado:

cmdBuscar, cmdLimpiar y cmdSalir son los nombres de los 3 botones de comando que tenemos en nuestro
formulario, click es el evento.

Los procedimientos BotonBuscar y LimpiarFormulario son los procedimientos a los que hemos escrito el
cdigo.

El comando Unload descarga de la memoria el formulario cuando el usuario no lo quiera usar ms

Ahora debemos asignar las macros a los rectngulos o botones que hemos colocado en nuestras hojas de
clculo para que cuando se realice clic sobre ellos se ejecuten los cdigos programados, para ello realizamos
clic derecho sobre cada uno y elegimos la opcin Asignar macro:

Clase 3 Obtener un Objeto Range

Sobre un Objeto Worksheet


La primera sintaxis identifica a una sola celda por medio de Cell1:

Se identifica a una sola celda


Se hace alusin a un rango de celdas definidas por un NOMBRE

Visual Basic para Aplicaciones utiliza las propiedades por defecto de cada objeto cuando no se indican, por
ejemplo asume el Libro de trabajo activo ActiveWorkbook, la Hoja activa ActiveSheet y la propiedad Value
porque el objeto que se crear es de tipo Range y ese es la propiedad por defecto.

Range(D1:E10_B2:F2) usa el operador de interseccin de Excel, es un espacio que devuelve la interseccin


de dos rangos, la interseccin sern dos celdas D2 y E2.
Range(F3,F5,F7,F9) es un rango de celdas no continuas, la , sirve de unin. Hay una sola declaracin de
celdas porque nicamente hay un par de comillas que envuelven las declaraciones de cada una de las celdas
involucradas que son tratadas como unidades independientes.

La segunda sintaxis define un rango de celdas dados por los parmetros Cell1 que representa la celda de la
parte superior izquierda del rango y Cell2 que representa la celda de la parte inferior derecha del mismo
rango. Hay dos pares de comillas, una para cada celda extremo del rango:

Sobre un Objeto Range

El resultado de un Range en un objeto SIEMPRE es UNA CELDA


El segundo Range siempre sern CELDAS RELATIVAS segn el Objeto Range que se origina. O sea:
Range(G2:I10) da como resultado G2, comportndose como la primera celda de la hoja de clculo
Range(A2:B9) da como resultado G3:H10

*-- Estas instrucciones se emplean ms que todo en bucles --*


Primera sintaxis
Tiene dos argumentos de posicin: ndice de fila e ndice de columna.

Fila 2, Columna 10. Es la J2


Fila 3, Columna 10. Es la J3
Posicin relativa desde J2 se desplaza 3-1 filas
Posicin relativa la fila 5 con columna 10 es el origen
HASTA la fila 10 con columna10 J5:J10

Segunda sintaxis
Tiene un nico argumento: ndice de fila. Tiene un nico argumento, el nmero mximo es el total de celdas
que existen en una hoja de clculo de Excel, comienza desde la celda A1 y sigue hacia la derecha y despus
contina hacia la siguiente fila.
Se le asigna una cadena de texto a la celda K2
El ndice 1 representara a la celda A1 de una hoja de
clculo, por lo tanto en el rango que se muestra tomamos
a K3 como el origen y se le asigna el nmero 456

Tercera sintaxis
Devuelve TODAS las celdas de la hoja o del rango a la cual se hace referencia, por lo tanto el Objeto Range
devuelto es un rango con mltiples celdas.
Se borra el contenido del rango A1 hasta E9
Se borran el contenido de TODAS las celdas

Los argumentos pueden ser positivos o negativos. Lo que se trata es que se avanza o retrocede en filas y/o
columnas segn los valores.
A partir de la celda C2 se avanza tres filas hacia abajo y
dos columnas a la derecha E5

Clase 4 Elementos del lenguaje VBA parte 1

Comentarios
Declaracin de variables
Inicializacin de variables
Bucle
Instruccin de asignacin
Fin del bucle
Funcin interna

Emplearemos : para escribir otra instruccin en la misma lnea:

Emplearemos _ para seguir la instruccin en la siguiente lnea:

Emplearemos para escribir un comentario en la misma lnea o en una nueva:

Emplearemos Rem al comienzo de la lnea para escribir un comentario:

Podemos convertir un bloque de instrucciones en


comentarios simplemente seleccionando las lneas de
cdigo y yendo a la barra de herramienta de Edicin y
realizando clic en el icono de Bloque con comentarios.

Tipos de datos de las variables

Reglas para los nombres de las Variables

Declaracin de variables

El tipo de datos Decimal no se puede declarar. Se debe declarar la


variable de tipo Variant y asignarle el valor decimal y por ltimo
convertirla a tipo decimal empleando la funcin CDec(variable).
Nos muestra el tipo de datos de la variable peso

Variable con contenido String


Variable con contenido Integer
Variable que se vuelve a convertir a String

Variable con contenido String


Variable con contenido String, + sirve de concatenado
Variable con contenido String

Para obligar a que se declaren las variables debemos de:

Asignacin de valores a las variables:

Declarar una variable normal genricamente

Clase 5 Elementos del lenguaje VBA parte 2

mbito Local

A pesar de que no se inicialice en algn


valor, la variable Resultado SIEMPRE se
pone a 0 cuando se ejecuta el
procedimiento porque est declarada
como un valor numrico.
Con la instruccin Dim se pueden declarar
varias variables dentro de la misma
instruccin pero si no se especifica a cada
una su tipo slo la ltima variable es la que
se le asocia el tipo de datos, las restantes
son Variant.
Manera correcta de declarar las variables.
Cada una asociada a su tipo de datos.

En los mbitos locales, Visual Basic borra la memoria cuando se finaliza cada procedimiento y las variables
se destruyen, por eso se puede declarar el mimo nombre de variable en distintos procedimientos.

Cuando se declara una variable con la palabra clave Static en vez de Dim no se
destruye su informacin cuando el procedimiento acaba.

Si queremos que una variable Static pierda su valor, debemos forzar la


finalizacin del procedimiento agregando la instruccin End antes del cierre
normal de dicho procedimiento.

A nivel de un mdulo

Podemos emplear la instruccin Dim o Private para declarar variables. Normalmente


para comprensin y mejor lectura del cdigo se emplea Dim para declaracin en
mbitos locales y Private para declaracin en mbito a nivel de mdulo.
Al igual que la instruccin Static, las variables declaradas con Private no borran su
informacin cuando se finaliza el procedimiento de forma normal nicamente cuando
se produce un error o el procedimiento es obligado a finalizar

Pblica

Se declaran las variables al inicio de cualquier mdulo del proyecto y antes del procedimiento, se declaran
una sola vez y estarn disponibles en todos los procedimientos y mdulos y lo hacen a travs de la instruccin
Public. Pierden su valor cuando se interrumpe bruscamente un procedimiento por un error o es forzado a
finalizar por una instruccin.

Mdulos estndar

Se declara la variable Documento como


Public en este mdulo.

Al acabar el procedimiento anterior (y no


inicializarse en este) se mantiene el valor final
de la variable al comenzar este procedimiento.

Clase 6 Elementos del lenguaje VBA parte 3


Se declaran mediante la instruccin Const y se le asigna el valor en esa misma instruccin.
Por qu declarar constantes?

Constantes locales

Se declara localmente

Retorno de carro

No se especifica el tipo de datos, por lo tanto Visual Basic asume


que la primera es Double y la segunda Integer

Constantes a nivel de un mdulo


Se declara al principio del mdulo y antes de los procedimientos

NO se puede modificar el valor inicial de una constante. La ejecucin de


este procedimiento dara ERROR.

Constantes pblicas

xlEdgeTop, xlDashDot son constantes internas que definen el borde superior y el tipo de lnea de una celda
o rango de celdas.

Funcin interna MsgBox


En Visual Basic TODAS las constantes son representadas con nmeros

16

1
2

32

256

4
8
64

512
0

Parmetros
Prompt
Obligatorio. Expresin de tipo String que se muestra como mensaje en el cuadro de dilogo. La longitud
mxima de Prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados.
Si Prompt consta de ms de una lnea, puede separar las lneas mediante un carcter de retorno de carro
(Chr(13)), un carcter de avance de lnea (Chr(10)) o una combinacin de caracteres de retorno de carro/avance
de lnea (Chr(13) y Chr(10)) entre cada lnea.
Buttons
Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y tipo de
botones que se han de mostrar, el estilo de icono que se va a usar, la identificacin del botn predeterminado
y la modalidad del cuadro de mensaje. Si se omite Buttons, el valor predeterminado ser cero.
Title
Opcional. Expresin de tipo String que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite Title,
en la barra de ttulo aparecer el nombre de la aplicacin.

Valores
En la siguiente tabla se incluyen los valores de enumeracin de MsgBoxStyle:
Miembro

Valor

Descripcin

OKOnly

Muestra slo el botn Aceptar.

OKCancel

Muestra los botones Aceptar y Cancelar.

AbortRetryIgnore

Muestra los botones Anular, Reintentar y Omitir.

YesNoCancel

Muestra los botones S, No y Cancelar.

YesNo

Muestra los botones S y No.

RetryCancel

Muestra los botones Reintentar y Cancelar.

Critical

16

Muestra el icono Mensaje crtico.

Question

32

Muestra el icono Consulta de advertencia.

Exclamation

48

Muestra el icono Mensaje de advertencia.

Information

64

Muestra el icono Mensaje de informacin.

DefaultButton1

El primer botn es el predeterminado.

DefaultButton2

256

El segundo botn es el predeterminado.

DefaultButton3

512

El tercer botn es el predeterminado.

ApplicationModal

Aplicacin modal: el usuario debe responder al cuadro de mensaje antes de


continuar trabajando en la aplicacin actual.

SystemModal

4096

Sistema modal: se suspenden todas las aplicaciones hasta que el usuario


responda al cuadro de mensaje.

MsgBoxSetForeground

65536

Especifica la ventana del cuadro de mensaje como ventana de primer plano.

MsgBoxRight

524288

Texto alineado a la derecha.

MsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para ser ledo de derecha a izquierda
en los sistemas rabe y hebreo.

El primer grupo de valores (0-5) describe el nmero y tipo de botones mostrados en el cuadro de dilogo. El segundo
grupo (16, 32, 48, 64) describe el estilo de icono. El tercer grupo (0, 256, 512) determina qu botn es el valor
predeterminado. El cuarto grupo (0, 4096) determina la modalidad del cuadro de mensaje y el quinto grupo especifica
si el cuadro de mensaje es la ventana de primer plano, junto con la alineacin y la direccin del texto. A la hora de sumar
nmeros para crear el valor final del argumento Buttons, se deber utilizar nicamente un nmero de cada grupo.

Valor devuelto
Constante

Valor

OK

Cancel

Abort

Retry

Ignore

Yes

No

Clase 7 Elementos del lenguaje VBA parte 4

VBA controla de forma variable la longitud porque no se especifica


su dimensin.

Aqu controlamos la longitud siempre y cuando la conozcamos.

Trabajar con variables declaradas tipo Date nos permite realizar operaciones como conocer el nmero de
das que hay entre dos fechas. Tambin se almacena informacin que tiene que ver con el tiempo: horas,
minutos y segundos.

Se emplea el smbolo # para asignar valores tipo Date, bien


sea para tiempo y/o fechas.

Se construye una fecha a travs de la funcin interna DateSerial. El


orden es AAAA,MM,DD.

Se declara una constante tipo Date y se asigna valor con el


formato MM/DD/AAAA.

Clase 8 Elementos del lenguaje VBA parte 5

Una Expresin no asigna valores, nicamente realiza clculos, verificaciones y obtenciones.

Asignar un valor falso a una variable es la negacin Not True

celda D4

Convierte a String un valor numrico

Se muestra en pantalla el valor Verdadero si A1 = 5 y A2=5

Por la forma en que se resuelven las operaciones debemos poner entre parntesis el nmero
negativo para que se resuelva primero

Clase 9 Elementos del lenguaje VBA parte 6


Conceptos generales

Declaracin

Los
lmites
de
almacenamiento de un
arreglo es lo que
especifica el ndice + 1,
es decir, el ndice
determina el lmite
superior y el inferior
siempre ser 0 si no es
especificado.

Declaracin de 10 elementos, comenzando


desde el ndice inferior 0 si no se especfica
o determinndolo expresamente

Ejemplo: especificando el ndice en un vector

Ejemplo: empleando un bucle en un vector

Ejemplo: empleando un bucle en una matriz

Empleo de bucles anidados


segn
el
nmero
de
dimensiones de la matriz para
controlar los ndices de cada
dimensin y as recorrer la
matriz completa.

Ejemplo: especificando de forma automtica y especfica el lmite inferior


Se especifica el lmite inferior de TODOS los arreglos en 1

La posicin (0) no existe y se produce el error


ya que fue declarada la instruccin:
Option Base 1

La forma ms eficiente de trabajar con Vectores y Matrices es desde luego declarndolos dinmicamente, con esto se
tendr la plena seguridad de que solo se utilizar los recursos necesarios del sistema a la hora de implementar los
Arreglos en su cdigo. Adems, las funciones que aqu se presentan potencian en gran medida el trabajo con Arreglos.

Permite almacenar nmeros desde 0 hasta 255.


Permite redimensionar un vector.

Volvemos a redimensionar el
vector, ahora con ms
posiciones.

Redimensiona empleando el contenido de variables.

ltima fila llena


(movimiento
hacia
abajo
xlDown) y ltima
columna
llena
(movimiento
hacia la derecha
xlRight) a partir
de D1.
La
propiedad
Count cuenta el
nmero de celdas
de los rangos que
se establecen.

ReDim Preserve para no perder los datos contenidos


previamente en un arreglo. nicamente se aplica a
los lmites inferior y superior de la ltima dimensin.

El copiado de arreglos se debe realizar en


arreglos de igual dimensin si son fijas o en
arreglos dinmicos.
Despus de una instruccin Erase se debe
redimensionar el arreglo porque si no da
error en ejecucin.

Clase 10 Elementos del lenguaje VBA parte 7

Las variables de objeto permiten reducir la cantidad de cdigo que hay que escribir. Podra abreviar el segmento de
cdigo utilizando una variable de objeto para el control, con lo que aumentara la rapidez de su ejecucin. Es conveniente
que se declare la variable de objeto con la clase especfica que se desea asignar. Una vez que se haya asignado un objeto
a la variable, se podr tratar exactamente igual que el objeto al que se hace referencia. Puede establecer o recuperar las
propiedades del objeto o utilizar cualquiera de sus mtodos.

Declaracin de una variable de objeto

En la lista de miembros automtica se especifican tanto objetos como tipos de datos.

Variables de objeto genricas

Asignar objetos a las variables de objeto

La instruccin Nothing indica que la variable de objeto ya no est vinculado a ningn objeto, o lo que es lo
mismo, interrumpe su asociacin y se liberan todos los recursos del Sistema y de Memoria que se haban
asociados.

La instruccin New le indica a visual basic que debe crear un nuevo objeto y asignarlo a la variable de objeto
que se hace referencia.

Asociamos la variable de objeto con un objeto que es la coleccin de comentarios de la Hoja1.

Desasociamos la variable de objeto con el objeto adjudicado antes.


Volvemos a asociar la variable
de objeto con otro objeto.
RND() es una funcin que suministra valores aleatorios

Variable de objeto del tipo Collection

Un objeto Collection de Visual Basic es un conjunto ordenado de elementos a los que se puede hacer
referencia como unidad. Se puede ver de manera sencilla a un grupo relacionado de elementos como si se
tratase de un solo objeto. Los elementos de una coleccin nicamente necesitan estar relacionados por el
hecho de estar ubicados en la coleccin. Los elementos de una coleccin no tienen que compartir el mismo
tipo de datos.

Agregar un elemento que use el mtodo Add.


Quitar un elemento que use el mtodo Remove.
Quitar todos los elementos que usen el mtodo Clear.
Averiguar cuntos elementos contiene la coleccin con la propiedad Count.
Comprobar si un determinado elemento est presente con el mtodo Contains.
Devolver un determinado elemento de la coleccin con la propiedad Item.
Recorrer en iteracin la coleccin completa con Instruccin For To...Next.

Para agregar un elemento a una coleccin

Use el mtodo Add y especifique el elemento por su Key.

object.Add(Item, Key [, {Before | After}])


El uso de una clave es opcional. Si no desea asociar una clave al objeto de su coleccin, puede agregarlo sin una
clave. Puede utilizar los argumentos Before y After para mantener una coleccin ordenada de objetos. El miembro
que se agrega se coloca en la coleccin antes o despus del miembro identificado por el
argumentoBefore o After respectivamente. Por ejemplo, si estable Before igual a 1, se inserta un elemento al
principio de la coleccin porque los objetos Collection estn basados en 1. De forma similar, el
argumento After agrega un elemento despus del ndice especificado.

Para eliminar un elemento de una coleccin

Use el mtodo Remove y especifique el elemento por su Index o su Key.

object.Remove({Index | Key})
El argumento Index es la posicin del elemento que desea eliminar. El argumento Key es la misma cadena que ha
utilizado para agregar el elemento a la coleccin. Si la clave del tercer elemento de una coleccin es "W017493",
puede utilizar cualquiera de las dos instrucciones siguientes para eliminarlo.
workOrders.Remove(3)
workOrders.Remove("W017493")

Para eliminar todos los elementos de una coleccin

Utilice el mtodo Clear.


object.Clear()
El mtodo Clear vaca la coleccin.

Para recuperar un elemento de una coleccin


1. Use la propiedad Item y especifique el elemento por su Index o su Key.
variable = object.Item({Index | Key})
Igual que con el mtodo Remove, el argumento Index es la posicin del elemento en la coleccin y el
argumento Key es la cadena utilizada al agregar el elemento. Con el mismo ejemplo del mtodo Remove,
cualquiera de las instrucciones siguientes recupera el tercer elemento de la coleccin: Si utiliza nmeros como
claves, debe utilizar sus mtodos ToString para convertirlos en las cadenas antes de pasarlos al
mtodo Add o Remove o a la propiedad Item. Un objeto de Visual Basic Collection supone siempre que
un nmero es un ndice, en vez de una cadena de clave.

woCurrent = workOrders.Item(3)
woCurrent = workOrders.Item("W017493")

Clase 11 Elementos del lenguaje VBA parte 8


Estructura

Declaracin y uso

Tipos de datos personalizados y matrices


Ya est declarado el Type Persona en otro mdulo, se emplea con
una variable Array
El Array es dinmico, en cada ciclo se redefine

Se vuelca el contenido del Array en la hoja de clculo

Ubound(Cliente) funcin para extraer el lmite superior de la variable-vector Cliente y pasarlo como
argumento al lmite superior de la construccin del bucle.

Clase 12 Elementos del lenguaje VBA parte 9


Concepto general de Funcin

Interrelacin entre las funciones de la hoja de clculo y las funciones VBA

Al escribir vba. automticamente se despliega la lista de


funciones que vienen incorporadas a este lenguaje de
programacin.

Llamar a una funcin de hoja de clculo desde Visual Basic Funciones no equivalentes
En Visual Basic, las funciones de hoja de clculo de Microsoft Excel pueden ejecutarse mediante el objeto
WorksheetFunction. Hay que definir primero el rango con una instruccin Set y luego colocar la funcin
usando Application.WorksheetFunction

El siguiente procedimiento usa la funcin Min para obtener el valor ms pequeo de un rango de celdas.

Se declara la variable miRango como un objeto Range


se establece como el rango A1:C10 de la Hoja1
se asigna al resultado de aplicar la
funcin Mn a miRango

Si est integrada la funcin no es necesario emplear la instruccin WorksheetFunction:

Clase 13 Estructuras de control parte 1

Clase 14 Estructuras de control parte 2

Variable de objeto asociada a un objeto Comment

Copia el contenido de
la celda padre del
comentario a la celda
ubicada 2 celdas a la
izquierda.
Cambia color de
fondo
Cambia contorno
Y si se encuentra el
strring F10 en el
contenido del
comentario para el
ciclo.

Clase 15 Estructuras de control parte 3

Clase 16 Estructuras de control parte 4

Forma Lineal

Forma de Bloque