Está en la página 1de 92

Seminario

Programacin de Visual Basic en


Excel
La creatividad es la inteligencia divirtindose.
Albert Einstein

M.I. y C.P. Vctor Ratzeburg Leal y Plascencia


Banco de Mxico
Marzo de 2016

Objetivo
Aprender a automatizar tareas programndolas
en una hoja de clculo de Excel, utilizando Visual
Basic a travs de casos prcticos.

Temario
1. Repaso de grabadora de macros
2. Repaso Personalizar Barras de Herramientas
3. Declaracin de variables en Visual Basic
4. Creacin de Formularios
5. Manejo de controles en Formularios
6. Etiquetas
7. Cuadros de texto
8. Botones de Comando
9. Marcos
10.Botones de Control
11.Casillas de Verificacin

Temario
12.Imgenes
13.Cuadros Combinados
14.Listas
15.Agregando otros controles
16.Declaracin de subrutinas y funciones con argumentos
17.Manipulando Excel desde VB
18.Celdas
19.Hojas
20.Libros
21.Archivos
22.Creacin y personalizacin de grficos desde VB
23.Manejo de Bases de Datos desde VB
24.Manejo de Tablas dinmicas desde VB
25.Depurando programas

Da 3: Tipos de Variable
Byte
Los valores de tipo Byte son los nmeros enteros
comprendidos entre
0 y 255. Estos datos se almacenan en memoria como un
byte (8 bits).
Integer
Las variables definidas como Integer pueden almacenar
nmeros
enteros en el rango de valores de -32768 a 32767. Los
enteros se
almacenan en memoria como 2 bytes.
Long
Las variables definidas como Long pueden almacenar
nmeros enteros
comprendidos entre -2,147,483,648 y 2,147,483,647.

Da 3: Tipos de Variable
Single
Las variables definidas como Single pueden almacenar
nmeros
reales de 32 bits con una precisin de 7 decimales.
Double
Las variables definidas como Double pueden almacenar
nmeros
reales de 64 bits con una precisin de 16 decimales que
van de
-1.79769313486231E308 a -4.94065645841247E-324
para valores
negativos y de 4.94065645841247E-324 a
1.79769313486232E308
para valores positivos.
Currency
Las variables definidas como Currency pueden almacenar

Da 3: Tipos de Variable
Datos fecha/hora (Date)
El tipo de dato Date lo empleamos para almacenar fechas
y horas
como un nmero real.
Datos de texto (String)
El tipo de dato String consiste en una secuencia de
caracteres
contiguos de cero o ms caracteres correspondientes al
cdigo ASCII.
Es decir, se trata de una cadena de caracteres que puede
incluir letras,
nmeros, espacios y signos de puntuacin. Los datos
almacenados
en una variable de tipo String sern tratados como texto y
no como
nmeros.

Da 3: Operadores
Las variables y constantes se pueden procesar utilizando
operaciones y funciones adecuadas a sus tipos de datos.
Una
operacin es un conjunto de datos o funciones unidas por
operadores, ya sea para modificar un valor o para
producir un nuevo
valor. Los operadores soportados por VBA son:
Operadores aritmticos: + (suma), (resta), *
(multiplicacin),
/ (divisin), \ (divisin entera), Mod (Resto), ^
(exponencial),
& (concatenacin).
Operadores comparativos: = (igual), < (menor), <=
(menor o igual),
> (mayor), >= (mayor o igual), <> (distinto).
Operadores lgicos: Not (negacin lgica), And
(conjuncin lgica),

Da 3: Funciones
InputBox
Cuando necesitamos solicitar informacin especfica al
usuario
durante la ejecucin de un procedimiento, utilizamos la
funcin
InputBox. Esta muestra en la pantalla un cuadro de
dilogo modal en el
cual el usuario podr introducir la informacin requerida,
que luego se
almacenar dentro de una variable.
MsgBox
Utilizamos la funcin MsgBox cuando necesitamos obtener
respuestas del tipo s o no de los usuarios, y para mostrar
mensajes
breves, como errores, advertencias o alertas en un cuadro
de dilogo,
durante la ejecucin de un procedimiento. Este cuadro de

Da 3: Funciones
IfThen
En muchos casos, necesitaremos ejecutar una o ms
instrucciones
solo si una cierta condicin es verdadera y no tendremos
que
realizar ninguna accin si la condicin es falsa, es cuando
deberemos
usar la estructura If...Then (si entonces).
Cuando VBA encuentra una sentencia IfThen, evala si
la expresin lgica es verdadera (True); en caso
afirmativo, ejecutar las sentencias que siguen a la
clusula Then. Si la expresin es falsa
(False), entonces no hace nada.
If condicin Then instrucciones
If condicin Then
Instruccin_1
Instruccin_2

Da 3: Funciones
IfThenElse
Como vimos, la estructura IfThen es muy limitada,
porque permite
ejecutar una o ms instrucciones solo si una cierta
condicin es
verdadera, y no realiza ninguna accin en caso contrario.
Normalmente, necesitaremos realizar una serie de
instrucciones si la
condicin es verdadera y otro conjunto de ellas si la
condicin es falsa.
Para poder hacerlo, VBA cuenta con la estructura If
ThenElse (si
entoncessino).
If condicin Then
Instruccin_1
Instruccin_2
Instruccin_3

Else

Da 3: Funciones
IfThenElseIf
La estructura IfThenElseIf es un caso especial de If
ThenElse.
Usamos esta estructura en aquellas situaciones en que
necesitamos
comprobar ms de una condicin al mismo tiempo.
If condicin_1 Then
Instruccin_1
Instruccin_2

ElseIf condicin_2 Then


Instruccin_3
Instruccin_4

ElseIf condicin_3 Then


Instruccin_5
Instruccin_6

Else
Instruccin_7
Instruccin_8

Da 3: Funciones
IfThenElseIf
En este tipo de estructura, la condicin_1 es la que se
examina en primer lugar. Si resulta verdadera (True),
entonces se ejecutar el bloque
de instrucciones correspondientes; en cambio, si es falsa,
recin se evaluar la segunda condicin (condicin_2). Si
la segunda condicin es verdadera (True), se ejecutar el
bloque de instrucciones ElseIf, y as sucesivamente.
Por ltimo, si ninguna de las condiciones evaluadas
resultan verdaderas, entonces al llegar a este punto, se
debern ejecutar las instrucciones que se encuentran
comprendidas entre el bloque Else y End If.

Da 4: Ms funciones
Funcin Date
La funcin Date devuelve la fecha actual del sistema
operativo de nuestra computadora en el formato que
tengamos definido para la
representacin de fechas del sistema. Su sintaxis es Date.
Funcin Now
La funcin Now devuelve la fecha y la hora actual del
sistema operativo en el formato que tengamos definido
para la representacin de fechas del sistema. Su sintaxis
es Now.
Funcin Time
La funcin Time devuelve la hora actual del sistema
operativo de
nuestra computadora en el formato que tengamos
definido para la
representacin de fechas del sistema. Su sintaxis es Time.

Da 4: Ms funciones
Estructuras Select Case
Cuando tenemos muchas condiciones diferentes, puede
ser difcil utilizar varios If anidados; por esta razn, VBA
ofrece la estructura Select Case como alternativa de la
estructura IfThenElse.
Con la estructura Select Case, se evala una expresin
que puede
tomar un nmero indeterminado de valores y realizar
acciones segn el
valor de esta. Su sintaxis es la siguiente:

Da 4: Ms funciones
Select Case expresin
Case Valor1
Instruccin_1
Instruccin_2

Case Valor2
Instruccin_1
Instruccin_2

Case Valor3
Instruccin_1
Instruccin_2

.
Case Else
Instruccin_1
Instruccin_2

End Select

Da 4: Ms funciones
La estructura Select Case funciona con una nica
expresin de prueba
que se evala una sola vez al principio de la estructura.
Visual Basic
para Aplicaciones compara el resultado de esta expresin
con los
valores de cada Case de la estructura y, si hay
coincidencia, ejecuta el
bloque de instrucciones asociados a ese Case.
La palabra clave Case, normalmente, va seguida de una
lista de
expresiones de uno o ms valores. Si hay ms de un valor
en una lista,
se separan los valores por comas, por ejemplo:
Case 1, 2, 3

Da 4: Ms funciones
Si queremos usar operadores relacionales, utilizamos la
palabra
clave Is. Por ejemplo, para tomar como vlidos todos los
valores
mayores que 3 utilizamos:
Case Is >3
Si los bloques de instrucciones van a llevar solo una
instruccin
sencilla, podemos ponerla a continuacin de la expresin
del Case
separada con dos puntos, como, por ejemplo:
Case 1: MsgBox Lunes

Da 5: Ms funciones (y algunos tips)


Dividir una instruccin en varias lneas
Aunque una lnea de cdigo de VBA puede tener hasta
1024 caracteres; es una buena prctica dividirla en varias
lneas.
Para dividir una instruccin larga en diferentes lneas en la
ventana de cdigo, utilizamos el guion bajo (_) precedido
de un espacio.
Podemos utilizar el carcter de continuacin de lnea en
los siguientes lugares del cdigo:
Antes o despus de los operadores, como &, +, -.
Antes o despus de una coma (,).
Antes o despus de un signo igual (=).
No es posible utilizarlo en los siguientes casos:
Entre los dos puntos (:) y el signo igual (=).
En el texto entre comillas.

Da 5: Ms funciones (y algunos tips)


Funcin UCase
La funcin UCase convierte en mayscula todos los
caracteres de una
cadena de texto. Su sintaxis es UCase(cadena). Por
ejemplo, la funcin
Ucase (hola) devuelve la cadena HOLA.

Funcin LCase
La funcin LCase convierte en minscula todos los
caracteres de una
cadena de texto. Su sintaxis es LCase(cadena). Por
ejemplo, la funcin
Ucase (HOLA) devuelve hola.

Da 5: Ms funciones (y algunos tips)


Estructura WithEnd With
Dado que la mayora de los objetos tienen diversas
propiedades, a
veces necesitaremos realizar varia acciones sobre un
mismo objeto, por
lo cual repetiremos una y otra vez el mismo objeto para
realizar esa serie de operaciones. Podemos evitar esto,
empleando la estructura WithEnd
With, que permite nombrar un objeto y realizar varias
instrucciones en
l, sin tener que nombrarlo varias veces. De esta manera,
se facilita la
escritura del cdigo cuando hacemos referencia a los
mismos miembros
de un objeto, ya que solo debemos indicar sus
propiedades y mtodos.
Su sintaxis es la siguiente:

Da 5: Ms funciones (y algunos tips)


Estructuras DoLoop
Muchas veces, necesitamos seguir repitiendo una
operacin o
no, dependiendo de los resultados obtenidos dentro del
bucle. La
estructura DoLoop permite ejecutar un bloque de
instrucciones un
nmero indefinido de veces, hasta que se cumpla una
condicin. Este
tipo de bucle hace posible probar una condicin al
comienzo o al final
de una estructura de bucle. Tambin podemos especificar
si el bucle
se repite mientras (While) la condicin sigue siendo
verdadera (True)
o hasta que se convierta en verdadera (Until). Segn esto,
tenemos las
variantes de la estructura DoLoop que veremos a

Da 5: Ms funciones (y algunos tips)


Estructuras DoLoop
DoLoop Until
Este bucle se repite hasta que la condicin se cumple.
Do
Instrucciones
Loop Until condicin

Do WhileLoop
En este tipo de bucle, VBA evala primero la condicin. Si
esta es
verdadera (True), se ejecutan las instrucciones y, luego,
vuelve a la
instruccin Do While y prueba la condicin otra vez. Si la
condicin es
falsa (False), se salta todas las instrucciones.
Do While condicin
Instrucciones
Loop

Da 6:
Estructura ForNext
Cuando necesitamos repetir una operacin un nmero fijo
de veces
dentro de un procedimiento, utilizamos la estructura For
Next.
La estructura For usa una variable llamada contador, que
incrementa o
reduce su valor en cada repeticin del bucle. Su sintaxis
es la siguiente:
For contador = inicio To final [Step incremento]
Bloque de instrucciones
Next

Da 6:
Estructura ForNext
Donde:
contador: es la variable que usaremos como contador,
debe ser de
tipo numrico. Esta variable incrementa o decrementa su
valor de
manera constante, por ejemplo de 1 en 1
inicio: esta es una expresin de tipo numrica cuyo
valor tomar el
contador la primera vez.
final: es una expresin numrica cuyo valor usar For
de manera que
solo entrar si el contador no supera el valor de esta
expresin.
incremento: es opcional. Es una expresin numrica
que puede ser
positiva o negativa. Si el incremento es positivo, inicio
debe ser menor o igual que final, de lo contrario no se

Da 6:
Estructura ForNext
Bloque de instrucciones: es el conjunto de sentencias
que se ejecutarn con cada ejecucin del bucle.
Next: esta palabra clave sirve para delimitar el final del
bucle. Cuando el bucle se encuentra con el Next, se
vuelve otra vez al principio del For, y as hasta realizar el
nmero de ejecuciones determinadas.

Da 6:
Estructura For EachNext
La estructura ForEachNext nos permite recorrer todos
los elementos de una coleccin o matriz y realizar
acciones para cada uno de los elementos. Su sintaxis es la
siguiente:
For Each elemento In grupo
[Instrucciones]
[Exit For]
[Instrucciones]
Next [elemento]

Da 6:
Estructura For EachNext
Donde:
elemento: es la variable de tipo objeto o Variant que se
emplea para
recorrer los elementos de la coleccin o matriz. Si es una
coleccin,
esta puede ser una variable del tipo Variant o un objeto
genrico o
especifico, como por ejemplo, un objeto Worksheet. En
cambio, si es
una matriz, esta variable solo puede ser del tipo Variant.
grupo: es el nombre del conjunto de objetos o de una
matriz.
Instrucciones: representa el grupo de sentencias por
realizar.
Next: indica el final del bucle.

Da 6:
Estructuras WhileWend
VBA permite otra variante del bucle Do WhileLoop, es
decir, con
la comprobacin al principio del bucle. La estructura
WhileWend
podemos utilizarla cuando no conocemos por anticipado el
nmero de
iteraciones. Su sintaxis es la siguiente:
While condicin
Instrucciones
Wend

Cuando se ejecuta este bucle, VBA evala primero la


condicin; si
esta es verdadera (True), ejecuta el bloque de
instrucciones que siguen
hasta la sentencia Wend, en caso contrario sale del bucle.

Da 6:
Estructura WithEnd With
Dado que la mayora de los objetos tienen diversas
propiedades, a
veces necesitaremos realizar varia acciones sobre un
mismo objeto, por
lo cual repetiremos una y otra vez el mismo objeto para
realizar esa serie de operaciones. Podemos evitar esto,
empleando la estructura WithEnd With, que permite
nombrar un objeto y realizar varias instrucciones en l, sin
tener que nombrarlo varias veces. De esta manera, se
facilita la escritura del cdigo cuando hacemos referencia
a los mismos miembros de un objeto, ya que solo
debemos indicar sus propiedades y mtodos.
Su sintaxis es la siguiente:
With objeto
[instrucciones]
End With

Da 6:
Estructura DoEvents
La funcin DoEvents entrega la ejecucin de la macro
para que el sistema operativo pueda procesar otros
eventos. La funcin DoEvents pasa el control de la
aplicacin para el sistema operativo.
DoEvents significa que haga los eventos, se utiliza para
cuando tienes un ciclo Do-Loop, o un While-Wend, o un
For-Next demasiado largo, eso generalmente se "aduea"
del programa, agregndole una lnea DoEvents en el lugar
apropiado puedes seguir corriendo tu aplicacin sin
interrupciones.

Da 6:
Modelo de Objetos de Excel

Application: aplicacin

Workbook: libro de trabajo

Worksheet: hoja de clculo

Range: celda

Da 6:
Modelo de Objetos de Excel

Application es el objeto de nivel superior en el modelo


de objetos de
Excel; representa al programa y al libro de trabajo.
Brinda acceso a las opciones y las configuraciones a nivel
de la aplicacin, como, por ejemplo, de la cinta de
opciones, de la impresora
activa, el tamao de la fuente por defecto, entre otras.
Entonces, al modificar las propiedades y los mtodos de
este objeto,
estaremos realizando cambios que se van a reflejar en la
interfaz de
Excel y en sus diferentes herramientas.

Da 6:
Propiedades del objeto Application
Application es un objeto que tiene una gran
cantidad de propiedades, algunas definen el
ambiente donde se ejecuta Microsoft Excel,
otras controlan la presentacin de la interfaz
(como por ejemplo el aspecto del puntero del
mouse en Excel), y otras devuelven objetos.
Caption
Esta propiedad devuelve o establece el nombre que
aparece en la Barra de ttulo de la ventana de la
aplicacin principal (Microsoft Excel).
Path
Esta propiedad devuelve la unidad y la carpeta donde est
instalado

Da 6:
Propiedades del objeto Application
Application es un objeto que tiene una gran
cantidad de propiedades, algunas definen el
ambiente donde se ejecuta Microsoft Excel,
otras controlan la presentacin de la interfaz
(como por ejemplo el aspecto del puntero del
mouse en Excel), y otras devuelven objetos.

Da 6:
Propiedades del objeto Application
DefaultFilePath
Esta propiedad podemos usarla para establecer
la ubicacin
predeterminada que utiliza Microsoft Excel para
abrir sus archivos.
Path
Esta propiedad devuelve la unidad y la carpeta
donde est instalado Microsoft Excel, por
ejemplo, C:\Program Files (86)\Microsoft
Office\Office14.

Da 6:
Propiedades del objeto Application
StatusBar
Esta propiedad la utilizamos para mostrar
mensajes de texto personalizados en la barra de
estado mientras se est ejecutando una macro.
Application.StatusBar = Texto.....
DisplayFullScreen
Esta propiedad permite establecer si Microsoft
Excel se ejecuta en modo pantalla completa.
Adems de maximizar la ventana de la
aplicacin, oculta la barra de ttulo, la cinta de
opciones y la barra de estado. Esto nos permite
ampliar la visualizacin de la hoja de clculo.

Da 6:
Mtodos del objeto Application
OnTime
Este mtodo se puede utilizar para programar
los procedimientos que se ejecuten en
momentos especficos del da o en intervalos de
tiempo determinados. Su sintaxis es la
siguiente:
Application.OnTime (hora,nombre,hora_lim,programar)

Donde:
hora: es la hora a la que se desea ejecutar el
procedimiento.
nombre: es el nombre del procedimiento que se va a
ejecutar.
hora_lim: es la hora lmite a partir de la cual ya no se
ejecutar el
procedimiento.

Da 6:
Mtodos del objeto Application
OnKey
Este mtodo ejecuta un procedimiento
determinado cuando el usuario presiona una
tecla o una combinacin de ellas.
Su sintaxis es la siguiente:
Application.Onkey(tecla, procedimiento)

Donde
tecla: es una cadena que indica la tecla que se
debe presionar.
procedimiento: es una cadena que indica el
nombre del procedimiento que se va a ejecutar.

Da 6:
Mtodos del objeto Application
Wait
Este mtodo realiza una pausa hasta que
transcurra un momento especificado, en una
macro que se est ejecutando. Cuando llega a la
hora determinada, devuelve el valor True.
Su sintaxis es la siguiente: Application.Wait(hora)

Da 6:
Mtodos del objeto Application

Quit
Este mtodo nos permite salir de Microsoft
Excel. Si tenemos algn libro abierto y si no
hemos guardado los cambios, mostrar un
cuadro de dilogo que pregunta si deseamos
guardar los cambios. La sentencia que nos
permite salir de la aplicacin es la siguiente:
Application.Quit

Da 6:
Workbooks:
El objeto Workbooks se encuentra debajo del
objeto Application en la jerarqua del modelo de
objetos de Microsoft Excel. El objeto Workbook
forma parte de la coleccin Workbooks. Este
objeto es devuelto por las
siguientes propiedades del objeto Application:
Application.Workbooks: devuelve la coleccin
Workbooks.
Application.ActiveWorkbook: devuelve el libro
activo. Si no hay libros abiertos, esta propiedad
devuelve Nothing.
Application.ThisWorkbook: esta propiedad
devuelve el libro que contiene la macro que se

Da 6:
Propiedades de los objetos Workbooks y
Workbook:
Item
Como mencionamos anteriormente, el objeto
Workbook forma parte de la coleccin
Workbooks. Cada libro de la coleccin puede ser
identificado por la propiedad Item, que hace
referencia a un nico elemento de la coleccin.
Por lo tanto, podemos acceder a un libro en
particular usando un nmero de ndice (Item).
Una vez que hemos hecho alusin a un objeto
Workbooks mediante la propiedad Item,
podemos trabajar con l a travs de sus
propiedades y mtodos.

Da 6:
Propiedades de los objetos Workbooks y
Workbook:
Name
Esta propiedad devuelve el nombre de un libro.
FullName
Esta propiedad devuelve el nombre y la ruta
completa de un libro especificado.
Saved
Esta propiedad devuelve el valor False para
indicar que se han realizado cambios desde la
ltima vez que se guard el archivo. En el caso
contrario, devuelve True.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Add
Este mtodo pertenece a la coleccin
Workbooks y permite crear un nuevo libro de
Microsoft Excel. Cuando se genera un nuevo
libro, VBA crea un nuevo objeto Workbook y lo
suma a la coleccin Workbooks.
Su sintaxis es:
Workbooks.Add(Template)

Donde Template es un argumento opcional que


determina cmo se crear el nuevo libro. Este
argumento puede ser:

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Add
Una cadena que especifica el nombre de un
archivo existente de Microsoft Excel para
usarlo de plantilla. Cuando utilizamos un
archivo de plantilla, lo que hace Excel es
copiar todos los elementos de la hoja de
clculo especificada, incluyendo los textos y
las macros, en el nuevo libro.
Una constante XLWBATemplate que permite
especificar el tipo de libro que se va a crear.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Add
Hay cuatro tipos de esta constante:
- xlWBATWorksheet: para crear un libro con
una sola hoja de clculo.
- xlWBATChart: para crear un libro que
contiene un grfico.
- xlWBATExcel4IntlMacroSheet: para crear
una hoja de macro Excel 4.0.
- xlWBATExcel4MacroSheet: para crear una
hoja internacional de macros.
Si no especificamos este argumento, Microsoft
Excel crea un libro nuevo con varias hojas en
blanco.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
SaveAs
Despus de crear un libro, es probable que
deseemos guardarlo. Para esto, contamos con el
mtodo Save As. Su sintaxis ms bsica es:
Workbook.SaveAs(FileName)

Donde FileName es el nico parmetro


requerido, y se utiliza para especificar el nombre
y la ubicacin del archivo.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
SaveAs
Su sintaxis completa es la siguiente:
Workbook.SaveAs(FileName FileFormat, Password,
WriteResPassword,ReadOnlyRecommended,
CreateBackup, AccessMode, ConflictResolution,
AddToMru,Local).

Donde:
FileFormat: contiene la constante XFileFormat
que indica el formato para guardar el archivo,
por omisin es el libro de Excel (xlNormal).
Password: como contrasea para abrir el
archivo podemos escribir hasta quince
caracteres. Distingue entre maysculas y

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
SaveAs
WriteResPassword: contiene la contrasea de
restriccin de escritura de un archivo.
ReadOnlyRecommended: si esta es True,
aparece un mensaje que recomienda que el
archivo se abrir como de solo lectura.
CreateBackup: crea una copia de seguridad del
archivo.
AccessMode: contiene un valor constante
xlNoChange, XlExclusive o slShared, que indica
el modo de acceso.
ConflictResolution: contiene una constante que
indica la forma de resolver conflictos,

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
SaveAs
AddToMru: predeterminado como False. Si se
establece como True, se agrega el libro a la lista
de archivos usados recientemente.
Local: guarda los archivos en el idioma de
Microsoft Excel si es True.
Si es False, los archivos se guardan en el idioma
VBA.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Save
Utilizamos el mtodo Save para guardar los
diferentes cambios que hemos realizado en un
libro despus de haberlo guardado por primera
vez.
Su sintaxis es la siguiente:
Workbook.Save

La siguiente sentencia guarda el libro activo:


ThisWorkbook.Save

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Close
Este mtodo aplicado al objeto Workbooks
permite cerrar un libro, y no acepta ningn
argumento. Su sintaxis es:
Workbooks.Close

Podemos hacer referencia a un libro de la


coleccin Workbooks, atravs de su nombre o su
ndice. Por ejemplo, si tenemos tres libros
abiertos y queremos cerrar el segundo,
empleamos la sentencia:
Workbooks(2). Close

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Close
En el caso de que no especifiquemos ningn
libro, todos los libros que tengamos abiertos se
cerrarn.
En cambio, el mtodo Close del objeto Workbook
puede aceptar hasta tres argumentos, por lo
tanto, nos va a permitir cerrar un libro en
particular.
Su sintaxis es la siguiente:
Workbook. Close(SaveChanges, Filename,_
RouteWorkbook)

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Close
Donde:
SaveChanges: guarda los cambios del libro
que se cierra, si se especifica el valor True. En
cambio, si se indica el valor False, el libro se
cierra sin guardar los cambios realizados.
Filename: podemos especificar un nombre
para guardar el archivo, siempre que le
hayamos indicado el valor True a SaveCanges.
RouteWorkbook: este parmetro se emplea
cuando necesitamos distribuir el libro entre otros
usuarios para trabajar en grupo.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Close
La siguiente sintaxis permite cerrar el libro
activo y abre el cuadro de dilogo Guardar
como:
ThisWorkbook.Close SaveChanges:=True

Tengamos en cuenta que, si no especificamos el


parmetro
SaveChange, Microsoft Excel comprobar cada
libro de trabajo para asegurarse de que se han
guardado desde su ltima modificacin. Si el
libro contiene cambios, Excel nos pedir que los
guardemos.

Da 6:
Mtodos de los objetos Workbooks y
Workbook:
Open
Empleamos este mtodo para abrir un archivo
de Microsoft Excel.
Cada vez que abrimos un libro, este se agregar
a la coleccin Workbooks. Al igual de lo que
sucede con el comando Archivo/Abrir de la cinta
de opciones de Excel, el libro que abramos ser
el libro activo. Su sintaxis ms bsica es la
siguiente:
Workbooks.Open(FileName)

Donde FileName es el nico parmetro


requerido, e indica el nombre y la ruta del
archivo por abrir. Si solo proporcionamos el

Da 7:
Worksheet
Como sabemos, un libro de Excel contiene hojas
de clculo que podemos insertar, borrar, copiar
o desplazar a cualquier lugar que deseemos.
Como as tambin, renombrarlas, seleccionarlas
y editarlas en conjunto, es decir, introducir un
dato y aplicar formatos al mismo tiempo a todas
las celdas de varias hojas de clculo.
En Visual Basic para Aplicaciones, una hoja de
clculo es un objeto del tipo Worksheet, y las
diferentes hojas de clculo que vamos a utilizar
se almacenan en la coleccin Worksheets.

Da 7:
Propiedades del objeto Worksheet
El objeto Worksheet se encuentra debajo del
objeto Workbook en la jerarqua del modelo de
objetos de Excel. A continuacin veremos
algunas de sus propiedades.
Item
Cuando abrimos un archivo de Microsoft Excel,
por defecto se crea un libro de trabajo que
contiene una hoja de clculo. Para hacer
referencia a una determinada hoja de la
coleccin, utilizamos la propiedad Item. Por
ejemplo, para referirnos a la segunda hoja del
libro activo, escribimos la
siguiente sentencia:
Worksheets.Item(2).Activate

Da 7:
Propiedades del objeto Worksheet
Tambin podemos referirnos a una hoja de
clculo en concreto de una coleccin
Worksheets a travs de su nombre, el cual debe
estar entre comillas.
En el caso de que necesitemos hacer referencia
a la hoja activa, usamos la siguiente sentencia:
ActiveSheet
Name
Esta propiedad se emplea para establecer o
devolver el nombre de una hoja de clculo.

Da 7:
Propiedades del objeto Worksheet
CodeName
Cuando en el cdigo de una macro hacemos
referencia a la hoja de clculo por el nombre de
la pestaa o por su ndice, corremos el riesgo de
generar un error, porque el nombre de las hojas
o su posicin en el libro pueden variar.
Una forma de salvaguardar el cdigo que se
refiere a hojas especficas es usando la
propiedad CodeName. Esta devuelve el
nombre clave que Microsoft Excel le asigna a la
hoja de clculo cuando la crea (Hoja1, Hoja2,
Hoja3, etctera).

Da 7:
Propiedades del objeto Worksheet
CodeName
Cuando en el cdigo de una macro hacemos
referencia a la hoja de clculo por el nombre de
la pestaa o por su ndice, corremos el riesgo de
generar un error, porque el nombre de las hojas
o su posicin en el libro pueden variar.
Una forma de salvaguardar el cdigo que se
refiere a hojas especficas es usando la
propiedad CodeName. Esta devuelve el
nombre clave que Microsoft Excel le asigna a la
hoja de clculo cuando la crea (Hoja1, Hoja2,
Hoja3, etctera).

Da 7:
Propiedades del objeto Worksheet
Visible
Esta propiedad permite mostrar u ocultar una
hoja de clculo. Por defecto, tiene el valor True;
si le asignamos el valor False ocultamos la hoja
de clculo.
Por ejemplo, si queremos ocultar la hoja Ejemplo
Case, escribimos la siguiente sentencia:
Worksheets(Ejemplo Case).Visible = False

Con esta sentencia, el usuario puede volver a


visualizar esta hoja empleando el comando
Ocultar y mostrar del grupo Celdas/Formato que
se encuentra en la ficha Inicio de
la interfaz de Microsoft Excel.

Da 7:
Propiedades del objeto Worksheet
Visible
Si en cambio, queremos ocultar la hoja para que
la nica forma de hacerla visible sea a travs del
cdigo, empleamos la sentencia:
Worksheets(Ejemplo Case).Visible = xlSheetVeryHidden

En este caso, para volver a mostrar esta hoja,


tenemos que asignarle el valor True a la
propiedad Visible.
Count
Esta propiedad de la coleccin Worksheets y
Sheets devuelve el nmero de elementos que
hay en la coleccin actual. Por ejemplo, si
queremos saber cuntas hojas tiene un libro,
utilizamos la siguiente sentencia:

Da 7:
Propiedades del objeto Worksheet
UsedRange
Cuando necesitamos saber cul es el rango
utilizado en una hoja de clculo, usamos la
propiedad UsedRange del objeto Worksheet. La
siguiente sentencia selecciona el rango utilizado
en la hoja Ejemplo Case.
Worksheets(Ejemplo Case).UsedRange.Select

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Add
Este mtodo del objeto Worksheets o Sheets
permite agregar hojas de clculo, de grfico o
de macros a un libro de Excel.
Su sintaxis es la siguiente:
Objeto.Add(Before, After, Count, Type)

Donde:
Objeto: puede ser un objeto Worksheets o
Sheets.
Before: indica que la hoja se agrega antes de
la hoja activa. Si se omite este parmetro o el
parmetro After, la nueva hoja se agregar
antes de la hoja que se encuentra activa.

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Add
Count: permite indicar la cantidad de hojas
que vamos a agregar. Si omitimos este
parmetro, solamente se agregar una hoja.
Type: especifica el tipo de hoja que queremos
crear. Si se trata de una hoja de clculo, usamos
el valor xlWorksheet; si en cambio queremos
crear una hoja de grfico, usamos
el valor xlChart. Para crear una hoja de macros,
usamos el valor xlExcel4MacroSheet o
xlExcel4IntlMacroSheet. Si se omite este
argumento se crear una hoja de clculo.

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Move
Podemos organizar las hojas de un libro de Excel
usando el mtodo Move del objeto Sheets o
Worksheets. Cuando movemos una hoja,
debemos indicar la nueva ubicacin
especificando el nombre de la hoja que
deseamos colocar antes o despus de la hoja
activa.
Su sintaxis es la siguiente:
Objeto.Move(Before, After)

Donde:
Objeto: puede ser un objeto Worksheets o
Sheets.

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Move
After: permite indicar la hoja despus de la
cual se desea mover la hoja seleccionada.
Si no especificamos los argumentos Before o
After, Excel crear un libro nuevo y mover la
hoja a ese libro.
Copy
Este mtodo permite copiar una hoja de clculo
especificada a otra ubicacin dentro del mismo
libro o en otro libro.
Su sintaxis es la siguiente:

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Copy
Donde:
Objeto: es la hoja que queremos copiar.
Before: indica la hoja delante de la cual
vamos a
copiar la hoja seleccionada.
After: se utiliza para indicar la hoja despus
de
la cual se desea copiar la hoja seleccionada.
Si omitimos los parmetros Before o After, VBA
crear un nuevo libro con la hoja copiada.

Da 7:
Mtodos de los objetos Worksheets y
Worksheet
Delete
Este mtodo elimina hojas de clculo, de grfico
y de macros. Si la hoja de clculo contiene
datos, Excel mostrar un cuadro de dilogo que
solicita que confirmemos si realmente queremos
eliminar la hoja.
Su sintaxis es la siguiente:
Objeto.Delete

Donde Objeto puede ser un objeto Worksheets o


Sheets.

Da 7:
Range
El objeto Range se encuentra debajo del objeto
Worksheet y puede ser una celda, una fila, una
columna o un conjunto de celdas de una misma
hoja o de otras hojas (rango 3D).
Propiedades de los objetos Range
El objeto Range tiene una amplia variedad de
propiedades con las cuales podemos trabajar; a
continuacin, describiremos algunas de ellas.

Da 7:
ActiveCell
Esta propiedad del objeto Application y Windows
devuelve la celda activa de la ventana activa o
seleccionada.
Su sintaxis es la siguiente:
Objeto.ActiveCell

Donde Objeto puede ser Application o Windows.


Por ejemplo, la siguiente sentencia muestra el
contenido de la celda activa.
MsgBox Application.ActiveCell

Da 7:
Range
Esta propiedad se utiliza para devolver un objeto
Range que
representa un rango de celdas. Su sintaxis es:
Objeto.Range (rango)

Donde
Objeto: puede ser un objeto Application,
Range o Worksheet.
rango: es una referencia de rango o nombre
introducido como texto (string).
Por ejemplo, tenemos la siguiente sentencia que
selecciona el rango A1:E1 de la hoja que se
encuentra activa:
Range(A1:E1).Select

Da 7:
Llamamos celda activa a la celda que ha sido
seleccionada.
Cuando seleccionamos una nica celda, esta se
vuelve activa. Si, en cambio, tenemos
seleccionado un rango, la celda activa
(Activecell) ser la primera del extremo superior
izquierdo o desde donde parta la seleccin.
Podemos identificarla como la celda resaltada en
la seleccin.
Si, en cambio, queremos indicar un rango no
contiguo, utilizamos la coma como operador de
unin. Por ejemplo, para el rango A1:A5 y C1:C5,
escribimos la siguiente sentencia:
Range(A1:A5, C1:C5).Select

Da 7:
Cells
Tambin podemos hacer referencia a celdas
especficas de una hoja de clculo utilizando la
propiedad Cells, que devuelve un objeto Range,
el cual puede ser todas las celdas de la hoja de
clculo o un rango de celdas. Su sintaxis es la
siguiente:
Objeto.Cells(ndice_fila, ndice_columna)

Donde:
Objeto: puede ser un objeto Application, Range
o Worksheet.

Da 7:
Cells
ndice_fila: es el nmero de fila de la celda. Si
el objeto es una hoja de clculo, indice_fila se
refiere a la fila 1 de la hoja; en cambio, si el
objeto es un rango, se refiere a la primera fila
del rango.
ndice_columna: puede ser una letra o un
nmero que representa la columna de la celda.
Si el objeto es una hoja de clculo, indice_
columna B o 2 se refiere a la columna B de la
hoja. En cambio, si el objeto es un rango, B o 2
se refiere a la segunda columna del rango.

Da 7:
Rows
Esta propiedad devuelve un objeto Range que
hace referencia a una fila de un objeto
Application, Range o Worksheet.
Su sintaxis es:
Objeto.Rows (indice)

Donde:
Objeto: puede ser un objeto Application, Range
o Worksheet.
indice: es el nmero de fila. Si el objeto es una
hoja de clculo, ndice 1 se refiere a la fila 1 de
la hoja; en cambio, si el objeto es un rango de
celdas, entonces ndice 1 se refiere a la primera
fila del rango.

Da 7:
Rows
Este argumento es opcional.
Por ejemplo, si queremos seleccionar la fila 1 de
una hoja de clculo, escribimos la siguiente
sentencia:
Rows(1).Select
Columns
Esta propiedad devuelve un objeto Range que
hace referencia a una columna de un objeto
Application, Range o Worksheet.
Su sintaxis es:
Objeto.Rows (indice)

Da 7:
Columns
Donde
Objeto: puede ser un objeto Application,
Range o
Worksheet.
indice: es el nmero de fila. Si el objeto es
una hoja de clculo, ndice 1 se refiere a la
columna A de la hoja; en cambio, si es un rango
de celdas, entonces ndice 1 se refiere a la
primera columna del rango.
Este es un argumento opcional.
Por ejemplo, para seleccionar la columna C de
una hoja de clculo, escribimos la siguiente
sentencia:

Da 7:
Offset
Esta propiedad devuelve un objeto Range que
est desplazado de un rango especificado por
un cierto nmero de filas y columnas. Su
sintaxis es la siguiente:
Range.Offset ([fila_offset],[columna_offset])
Donde
fila_offset: es el nmero de fila para
desplazar. Si el nmero es positivo, desplaza el
rango hacia abajo; si es negativo, lo desplaza
hacia arriba y, si es cero, usa la misma fila.
columna_offset: es el nmero de columna
para desplazar. Si el nmero es positivo,
desplaza el rango hacia la derecha; si es
negativo, lo desplaza hacia la izquierda y, si es

Da 7:
Offset
Por ejemplo, si queremos mover dos celdas a la
izquierda de la celda activa, usamos la siguiente
sentencia.
ActiveCell.Offset (0,-2).Select
Value
Esta propiedad permite establecer o devolver el
valor que tiene una celda especificada dentro de
una hoja de clculo.
Si la celda elegida se encuentra vaca, entonces
Value devuelve el valor Empty.
Su sintaxis es la siguiente:
Expresin.Value

Donde Expresin representa un objeto Range.

Da 7:
FormulaLocal
Esta propiedad permite ingresar frmulas y
funciones en nuestro propio idioma, cualquiera
que este fuera, en las celdas de Excel mediante
VBA, de la misma manera que la escribiramos
dentro de una celda de Excel
Su sintaxis es la siguiente:
Expresin.FormulaLocal = formula

Donde
Expresin: representa un objeto Range.
Formula: es una frmula o funcin ingresada
como texto (String).

Da 7:
End
Esta propiedad del objeto Range sirve para
determinar la direccin a la cual se extender
una seleccin de rango. Su funcin es desplazar
el cursor a la celda que est, a partir de la celda
activa, en direccin hacia arriba (xlUp), abajo
(xlDown), derecha (xlToRight) o izquierda
(xlToLeft), dentro del rango actual, es decir,
aquel que est delimitado por una filao columna
en blanco. Su sintaxis es:
Objeto.End(Direction)
Donde objeto representa a un objeto Range.

Da 7:
Font
Esta propiedad del objeto Range sirve para
establecer el tipo de fuente para los datos
contenidos en una celda o un grupo de ellas.
Su sintaxis es la siguiente:
Objeto.Font

Donde objeto es la variable que representa al


objeto Range.
Interior
Esta propiedad permite establecer el color del
interior de una celda.
Su sintaxis es la siguiente:
Objeto.Interior

Da 7:
Border
Esta propiedad permite aplicar bordes a una
celda o un rango de celdas.
Su sintaxis es la siguiente:
Objeto.Borders

Da 7:
Mtodos del objeto Range
A continuacin, explicaremos algunos mtodos
del objeto Range.
Select
Este mtodo permite seleccionar una celda o un
conjunto de ellas.
Su sintaxis es la siguiente:
Objeto.Select

Donde Objeto representa a un objeto Range. Por


ejemplo, si queremos seleccionar una celda,
usamos la siguiente sentencia:
Range(A1).Select

Da 7:
Mtodos del objeto Range
DataSeries
Este mtodo permite introducir una serie de
datos en un rango de celdas. Su sintaxis es la
siguiente:
Objeto.DataSeries(Rowcol, Type, Date, Step,
Stop, Trend)
Donde:
Objeto: es el rango que vamos a usar para la
serie de datos.
RowCol: para introducir datos en una fila,
usamos la constante xlRows y, para introducir
datos en columnas, usamos la constante
xlColumns. Si se omiten estas constantes, VBA

Da 7:
Mtodos del objeto Range
Type: es el tipo de serie. Por defecto es
xlLinear (serie lineal), pero tambin puede ser:
xlGrowht (serie geomtrica), xlChronological
(serie cronolgica) o xlAutoFill (autorrelleno).
Date: si hemos usado la constante
xlChronological para el argumento Type, permite
especificar diferentes intervalos para las series
de fecha. Sus opciones son xlDay, xlWeekday,
xlMonth o xlYear.
Step: permite especificar el valor de
incremento de la serie, por omisin este valor es
1.
Stop: para especificar el valor final de la serie.
Si este valor se omite, entonces Excel rellena el

Da 7:
Mtodos del objeto Range
Trend: indica la tendencia. Si el valor es True,
crea una serie lineal o geomtrica. Si el valor es
False, crea una serie de datos estndares.
Por omisin, este valor es False.
Copy
Este mtodo permite copiar celdas y rangos. Su
sintaxis es la siguiente:
Objeto.Copy(Destination)

Donde Objeto es el rango que vamos a usar


para la serie de datos.

Da 7:
Mtodos del objeto Range
ClearContents
Este mtodo borra el contenido de las celdas,
conservando el formato de ellas. Su sintaxis es
la siguiente:
Objeto.ClearContents

Por ejemplo, para eliminar el contenido del


rango de celdas A7:G15, usamos la siguiente
sentencia:
Range(A7:G15).ClearContents

Gracias