Recursos Informdticos
VBA
Excel 2013 —
Programacion en Excel
Macros y lenguaje VBA
fichéle AMELOT
INFORMATICA TECNICATodas las marcas citadas han sido registradas por su respectivo editor.
Reservados todos los derechos. El contenido de esta obra est protegido por la ley, que
establece penas de prision y/o multas, ademés de las correspondientes indemnizaciones
por dafios y perjuicios, para quienes reprodujeren, plagiaren, distribuyeren o comunica-
ren ptiblicamente, en todoo en parte, una obra literaria, artfstica o cientffica, o su trans-
formacién, interpretaci6n o ejecucién artistica fijada en cualquier tipo de soporte 0
comunicada a través de cualquier medio, sin la preceptiva autorizacién.
Copyright - Editions ENI - Septiembre 2013
ISBN: 978-2-7460-8387-5
Edicién original: 978-2-7460-8035-5
Ediciones ENI es una marca comercial registrada de Ediciones Software.
Ediciones ENI
P° Ferrocarriles Catalanes, 97-117, 2a pl. of. 18
08940 - Cornella de Llobregat (Barcelona)
Tel: 934 246 401
Fax: 934 231 576
e-mail: info@[Link]
[Link]
Autor: Michéle AMELOT
Edicién espafiola: Juan Carlos SEGURA
Coleccion Recursos Informaticos dirigida por Joélle MUSSETContenido
Fodra descargar algunos elementos de este libro en la pagina web
de Ediciones ENI: [Link]
Escriba la referencia ENI del libro RIT13EXCV en la zona de bisqueda
y valide. Haga clic en el titulo y después en el botén de descarga.
Prélogo
Capitulo 1
Presentacién
1. Presentaci6n del lenguaje VBA .... 0.0.6 e eee eee ee eee e nee e eens
1.1 Objetivos del lenguaje VBA .
1.2 Algunas definiciones. . .
1.3. Escritura de cédigo VBA. z
Be Tepper a ata
2.1 Mostrar la ficha PROGRAMADOR en la cinta de opciones. . .19
2.2 Descripcién de la ficha PROGRAMADOR
2.2.1 Grupo Cédigo
2.2.2 Grupo Complementos
2.2.3 Grupo Controles. .
2.3. Grabar una macro. :
23.1 Grabar la primera macro .
23.2 Ejecutar una macro. ...
2.3.3 Grabar una macro con referencias relativas ........... 23
2.3.4 Definir el lugar de almacenamiento
2.3.6 Guardar un libro con macros... 0.2... 26
2.4 Las macros y la seguridad. . .
24.1 Modificar la configuraci6n de seguridad
2.4.2 Descripcién de las diferentes opciones de seguridad
2.4.3 Habilitar las macros cuando aparece la advertencia
POSES exits mawsena mnie cmemaranenees 298.
. Configuracién del editor VBA
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
2.4.4 Activar las macros en una ubicacién dada ............30
2.4.5 Firmas electronicas de macros
2.5 Modificar el codigo de una macro ..
Asignar una macto . 60... 66 eee eeceeeeeeeeeeeeeeeeee esses
3.1 Acceso a una macro desde la cinta de opciones
3.2 Asociar una macro a un icono de la barra de herramientas
de acceso répido
3.3 Asociar una macro a un botén de comando .
3.4 Asignar una macroa una imagen .......
3.5. Asociar una macro a una zona de un objeto grafico.
3.6 Asociar una macro a una imagen Control ActiveX .
El entorno de desarrollo VBE...
4.1 Acceso al entorno VBE.
4.2 Cerrarel entorno VBE .
4.3 Volvera Excel .
4.4. Descripcién del entorno VBE. . bees
4.5. Elegir las ventanas que hay que mostrar. . ..
5.1 Configuracién de la tipograffa . “a
5.2_Configuracién de la introduccién de cédigo. 5
5.3 Manejo de errores....
5.4 Acoplar una ventana .
Capitulo 2
El lenguaje VBA
1.
MOGULS ses srescnsareceacnsacesenissarereatesazarenswcaneemncwonrepaee ie ereiaoecesetacein
1.1 Presentaci6n
1.2 Accesoa los médulos .
1.3 Importar y exportar cédigo VBA.Contenido
2. Procedimientos.. .
2.1, Definiciones
2.2. Acceso a los procedimientos
2.3 Procedimientos Sub ...
2.4 Procedimientos Function .
2.5 Declaracién de procedimientos
2.6 Alcance de los procedimientos.
2.7 Argumentos de los procedimientos
2.8 Argumentos con nombre ..
2.9 _Llamar a un procedimiento .
2.40 lamar [Link] funcién VBA en una férmula Excel 59
2.11 Ejemplos de procedimientos y funciones .......... 00600008 62
3. Variable: 63
3.1. Tipos de variables...
3.2 Declaracién de variables
3.2.1 Declaraciones implicitas.
3.2.2 Declaraciones explicitas.......... sees
3.3 Declaracién de los tipos de variables................0.200+
3.3.1 Declaraciones explicitas del tipo .
3.3.2 Declaraciones implicitas del tipo.
3.4 Matrices. .....
3.5 Constantes ...
35.1 Constantes personalizadas.
3.5.2 Constantes integradas
4. Estructuras de decisi6n.
4.1 Instrucci6n If
4.2 Instruccién Select Case
5. Estructuras en ciclo.
5.1. Instrucci6n Do...Loop.
5.2. Instrucci6n While...Wend
5.3. Instruccié6n For...NextVBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
6. Operadores... 02s... eee
6.1 Operadores aritméticos ...
6.2 Operadores de comparaci6n. . .
6.3 Operadores légicos
6.4 Operador de concatenacién
6.5 Prioridad de los operadores.
7. Reglas de escritura del cédigo .. .
7.1 Comentarios
7.2 Caracter de continuacién.
73. Sangrias ”
7.4 Nombres de los procedimientos, variables y constantes ...... 93
Capitulo 3
La programaci6n de objetos en Excel
1. Presentaci6n
2. El modelo de objetos de Excel .
2.1 Presentacién
2.2 Objetos y colecciones.
3._Principios de uso de los objetos y las colecciones. - 100
3.1 Propiedades...........00s0seees 100
3.2. Propiedades que representan objetos. : .-100
BEDS VIR I a acecte acaca ae ne eee ne een acer ee OD,
3.4 Eventos ....
3.5 Colecciones . :
3.6 Redaccién automética de instrucciones 106
- 108
4. Instrucciones usadas con los objetos
4.1 La instruccién With
4.2 La instrucci6n For Each...Next.
4.3 La instrucci6n If TypeOk......... 6... e cece 109Contenido
4A Ta SHUCHOD Sle cisrieowaweiramnorenenrr 110
5. El Examinador de objetos. 11
5.1 Presentacién ..... eo
5.2 Busqueda en el Examinador de objetos. 18
Capitulo 4
Objetos de Excel
1. Elobjeto Application . . sonceeeS 1S
1.1 Propiedades que representan: las Spacaes de Excel
1.1.1 Opciones de la categoria General. . aaepenes
1.1.2 Opciones de la categorfa Formulas .... - Seka
1.1.3 Opciones de la categoria Revisién . 119
1.1.4 Opciones de la categorfa Guardar . 121
1.1.5 Opciones de la categoria Avanzadas
1.2 Propiedades relativas a la presentacién de la aplicacin.
1.3. Propiedades varias.
1.4 Métodos del objeto Application .
1.4.1 Métodos que actéan sobre las formulas y célculos ....
1.4.2. Métodos que acttian sobre las celdas.
1.4.3 Métodos que actdan sobre las listas personalizadas.
1.4.4 Métodos que muestran los cuadros de didlogo........
1.4.5 Métodos relacionados con las acciones en Excel.
1.4.6 Métodos relativos al correo .
1.4.7 Otros métodos ..
1.5. Ejemplos de cédigos que usan el objeto Application .
1.5.1 Modificacién de la interfaz de Excel......... s
1.5.2 Creacién de una lista personalizada . .
1.5.3 Seleccién de columnas no consecutivas .
1.5.4 Evaluaci6n del resultado de una formula
129
-131VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
2... Objeto WOrkbOOK, w0..[Link] 0ca sieinceineienitiaa eis ecetuecereimaneciece ate 142
2.1 Objetos y colecciones
2.2. Propiedades
2.2.1 Propiedades relativas a la actualizaci6n y registro
de libros
2.2.2 Propiedades relativas a libros compartidos
2.2.3 Otras propiedades.
2.3. Lista de métodos.
2.3.1 Métodos que actéan directamente sobre los libros ....151
2.3.2, Métodos relativos a la seguridad... .
2.3.3 Métodos relativos a libros compartidos :
2.3.5 Métodos relativos al envio de libros... ............,155
2.3.6 Otros métodos 156
2.4 Ejemplos de cédigos que usan el objeto Workbook ..
2.4.1 Creacio ibro E. 56
2.4.2 Importer una base de datos y exportarla
al formato HTML.
2.4.3 Mostrar las propiedades de un libro .
2.4.4 Exportar un libro al formato PDF ...
3._ El objeto Worksheet
3.1. Lista de objetos y colecciones
3.2. Objetos y colecciones .
3.3 Propiedades....
3.4 Método:
3.5 Ejemplos de cédigos que usan el objeto Worksheet .
3.5.1 Ordenar las hojas de cdlculo de un libro
3.5.2 Proteccién de las hojas de célculo de un libro......... 169
253: Ordenar tina table soe el GSaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Contenido
Capitulo 7
Mejoras en Ia interfaz de usuario
Je (PRESENEACIOR svseeccenienrswe wma ERNE
2. Personalizacién de la cinta con la utilidad Custom UI Editor
2.1 Presentacién de la utilidad Custom UI Editor
2.2 Ejemplo de cédigo XML de personalizacién..........66665
2.3. Etiquetas XML correspondientes a los distintos elementos
de la Cinta. roe e cee e ene ce emeicemee name nee meme
2.3.1 Fichas y grupos
2.3.2 Principales controles de la cinta de opciones
2.3.3 Atributos de los controles de la cinta de opciones
2.3.4 Resumen de los atributos para cada control...
2.3.5 Imagenes de la galeria de iconos de Microsoft Office . .249
2.3.6 Funciones de llamadas Callbacks. ..................249
2.3.7 Uso de las funciones de Mamada Callbacks. ..........252
3,__Ejemplo de cinta personalizada con el Custom UI Editor........253
1 Presentacién 53.
312: ‘Gédigo XML dé la Gita suewrssescpeernrsae rete 255
3.3 Cédigo VBA de personalizacién de la cinta
(médulo"Cinta”). 0.00. 0c cece cceccceeseeee eee eseeeeee 257
4. Personalizacién de la cinta de opciones mediante
5._Ejemplos de barras de comandos....... ++ ++. + sees eee eee 262
5.1 Barras de herramientas personalizadas - .. - = 262
5.2 _Comandos de mentis en formato Office 2013... .. uc 262:
5.3 Agregarel grupo a la barra de herramientas de acceso rapido . 262
6.1 Terminologfa
6.1.1 Barra de comandos .
G12 COmtroll se sis:4.a tinin mevbisca a disileiadibeia a dll a Seeing10
6.4
VBA Excel 2013
Programacidn en Excel; macros y lenguaje VBA.
Mostrar una barra de comandos ...........s0000 eee eeee 266
7._Controles (opciones o botones de comando)
8. Ejemplos de ments personalizados .
Capitulo 8
71
Agregar un control. .
7.2
Especificar el titulo de un control
74
Asociar un procedimiento a un control.
75.
Otras propiedades. .
76
Lista de imagenes asociadas a ios ‘botones de comando
Presentaci6n .
Cédigo de los ejemplo:
Cédigo del médulo de clase ThisWorkbook .
Cédigo de la hoja "Nota de Gastos".
Cédigo del médulo ProcMenus . .
-275
Cédigo del médulo ProcAction ... . -280
L_Presentacién 283
as
2.2
23:
Eventos del objeto Application .
Eventos de libro, de hoja o de formulario................. 284
Eventos del objeto Application
Evento asociado a un grdfico incrustado. ...
Eventos del objeto Workbook . . .
Eventos del objeto Worksheet ........0..000 0000. ee eee eee
EVErit6s del ObjEEG CHALE ence ccsaxoesnemarereraenecsvieieedContenido
Cay
2.
3:
1
lo 9
Capitulo 9
Depuracién y administracién de errores
1
Difetentes:tiposde ctor scsis s cscwincenaccnn eames ae Ne
1.1 Errores de sintaxis.
1.2. Errores de compilacién
18 Errores de ejecucién
1.4 Errores de ldgica .
Depuracién .
2.1. Presentacién
2.2. La barra de herramientas Depuracién
2.3 Elobjeto Debug .......---
Administracién de errores en VBA . .
3.1 Elobjeto Err... 0.0... ccc c eee e eee ee eee eens
Capitulo 10
Comunicacién con las aplicaciones Office 2013
1.
La tecnologfa Automation .. .
1.1 Presentaci6n ..........
1.2 Uso de la tecnologia Automation .
Comunicacién con Word desde Excel
2.1 El modelo de objeto Word
2.2 Principales colecciones del modelo de objetos Word .
2.3. Principales objetos del modelo de objetos Word.
2.4 Lacoleccién Documents
2.5 Objetos Document. .
2.6 Ejemplo
Comunicacién con Access desde Excel .
3.1 El modelo de objeto Access .
3.2 Principales colecciones del modelo de objeto Access .
3.3 Principales objetos del modelo de objeto Access.12 VBA Excel 2013
Programacidén en Excel: macros y lenguaje VBA
3.4 Ejemplos ....... beveeeeeteeeeee eee
3.4.1 Listar tablas de una a base Access eons
3.4.2 Mostrar una tabla Access en Excel .
3.4.3 Abrir una tabla o consulta Access en un nuevo libro.
4. Comunicacién con Outlook desde Excel
4.1 Objetos Outlook
4.2 Accesoa los objetos Outlook.
4.2.1 Creacién de un objeto (e-mail, contacto...)
en Outlook.
4.2.2 Acceso a los objetos (contactos, citas..
de Outlook
4.3 Ejemplo de uso del objeto Mailltem .
5. Objetos vinculados o incrustados.......
5.1 Métodos del objeto OLEObject. . .
5.2 Propiedades del objeto OLEObject
6. Métodosy propiedades relativos a los vinculos con Excel
6.1 Métodos y propiedades del objeto Workbook
6.2 Métodos y propiedades de otros objetos.
Capitulo 11
Internet
. Consultas por Internet. .
2. El objeto QueryTable........
2.1 Fropiedades del objeto Cuer/Table.
2.2 Ejemplos
3. Publicacién de paginas Web. .
3.1. Asociacién de un elemento de libro a una pagina Web
3.2 Publicacién de la pagina Web
3.3 EjemploContenido
4, Los objetos WebOptions y DefaultWebOptions .
4.1 Propiedades .
4.1.1 Opciones de la ficha General... .
4.1.2 Opciones de la ficha Exploradores
4.1.3 Opciones de la ficha Archivos .
4.1.4 Otras propiedades
4.2 Método del objeto WebOptions
5. Importar, exportar y asignar archivos XML
5.1 Colecciones .
5.2 Métodos del objeto Workbook .
5.3 Eventos del objeto Workbook
5.4 Métodos del objeto XmIMap
6. El objeto HyperLink
863
363
6.1 Propiedades . 363
6.2 Métodos ... 304
Capitulo 12
Programacién Windows
TL, -Presentacl6n de las ARI... s:s:sase0iesssinieensieiscenainiein areaincersine
2. Llamar a una funcién de la API Windows.
2.1 Sintaxis de la instrucci6n Declare .
2.2 Pasodeargumentos ....
3. Lista de funciones API Windows. . . wee
4. Ejemplos de uso de funciones API Windows
4.1 Recuperar el directorio Windows
4.2. Abrir la calculadora de Windows
5. El objeto FileSystemObject
5.1 Métodos ...
5.2 Propiedades .
5.3 Ejemplo: copia de archivos Excel...aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Presentacién
Capitulo 1
Funcién
Las funciones son procedimientos que devuelven un valor. Para crear una
funci6n se debe utilizar la instruccién Function.
1.3 Escritura de cédigo VBA
2.
Hay dos maneras de crear un procedimiento VBA:
— Generar automéaticamente el cédigo a partir de la grabacién de macros.
- Escribir directamente el cédigo del procedimiento en el Editor de Visual
Basic (0 entorno VBE).
La primera soluci6n es més sencilla, pero mucho més limitada que la segunda.
Los procedimientos generados automAticamente sélo permiten automatizar
acciones repetitivas realizadas con Excel (formato de celdas, ordenar datos,
etc.).
Si desea efectuar operaciones especfficas: algoritmos de célculo, intercambio
de mensajes y de informacién con el usuario, controlar la coherencia de datos
en un libro o cualquier otra operacién que haga uso de estructuras repetitivas
o condicionales, debe crear sus propios procedimientos en el editor de VBA.
. Las macros de Excel
Mostrar la ficha PROGRAMADOR en Ia cinta de opciones
Para escribir macros, ejecutar macros grabadas o crear aplicaciones Excel, debe
mostrar la ficha PROGRAMADOR de la siguiente manera:
(aHaga clic en la ficha ARCHIVO y luego en Opciones.
[Seleccione la categorfa Personalizar cinta.
{Dentro de Personalizar la cinta de opciones, en |a lista Fichas princi-
pales, marque la opcion Programador.
19aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Presentacién 25
Capitulo 1
2.3.4 Definir el lugar de almacenamiento de una nueva macro
Para definir el lugar de almacenamiento de una nueva macro:
taHlaga clic en el boten 825%" __| eta ficha PROGRAMADOR
0 pulse el método abreviado [Alt] [F8].
Abra la lista Guardar macro en y seleccione el libro en el que desea crear la
macro.
Macro ve
Nombre de ta maco:
Borde : Gea
orse fe
Borrar Paso a paso
er hata
fefttava
Mogificar
Opciones.
Macros en: |Estelibro >
Desaripcion.
Gancelar
JObservacion
Si ellge Libro de macros personal, [a macro se grabaré en ellibro [Link];
Ia macro sera accesible desde todos los libros Excel.26 —______________VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA.
2.3.5 Eliminar una macro
Para eliminar una macro:
| Macros
CiHaga clic en el botén |
do abreviado [Alt] [F8].
Seleccione la macro que desea eliminar y haga clic en el botén Eliminar.
Haga clic en el botén Si para confirmar la eliminaci6n.
dela ficha PROGRAMADOR o pulse el méto-
2.3.6 Guardar un libro con macros
Si ha creado macros en un libro y lo graba por primera vez apareceré el si-
guiente mensaje:
{uns siguientes caracteristicas no se pueden guardar en lbros sin macros:
‘sProyecto de VB.
quardar un archive con estas caracteristicar, haga dic en No y, a continuacén, ejaun too de archivo
Para:
‘hablitado para macros en la Ista Tho de archivo,
Para seguir quardando e arcivo como bro sin macros, haga dlc en Si,
GiHaga clic en No para no grabar el libro sin las macros.
GEn el cuadro Guardar como abra la lista Guardar como tipo y seleccione
Libro de Excel habilitado para macros (*.xlsm). Luego indique el
nombre y destino del libro y haga clic en Aceptar.
|Observacion
Los libros que contienen macros tienen Ia extensién xlsm (en vez de xsix) y su
icono se distingue por un signo de exclamacién.
© Editions EN! - All rights reserved27
Presentacién
Capitulo 1
También puede grabar un nuevo libro con macros mediante las siguientes ope-
raciones:
DiHaga clic en la ficha ARCHIVO y luego en Guardar como.
GEn el cuadro Guardar como, abra la lista Tipo de archivo y seleccione la
opcién Libro de Excel habilitado para macros (*.xlsm).
2.4 Las macros y la seguridad
La configuracién de seguridad de las macros permite controlar lo que ocurre al
abrir un libro que contiene macros.
Observacién
Las modificaciones de la configuracién de seguridad de macros rigen sola-
mente en Excel y no afectan al resto de aplicaciones de Microsoft Office.
2.4.1 Modificar la configuraci6n de seguridad
[Haga clic enel botén [A seowidesaemecrr | ge fa ficha PROGRAMADOR.
GDentro de Configuracién de macros, seleccione la opcién deseada (vea en
la siguiente seccién: Descripcién de cada opcién de seguridad).
GiHaga clic en Aceptar para validar su eleccién.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.VBA Excel 2013
Programaci6n en Excel: macros y lenguaje VBA
ot Ceelemayers
Selection Borders (eLDiagonaiDown) -LineStyie = watione
Selection Borders (LDiagoralUp) .Linestyle = xilfone
neenteh eb Wich Selection. Sorders(xizageteft)
[iasor
= NomProc ( [lista de argumentos] )
Para llamar a un procedimiento de otro médulo, use la siguiente sintaxis:
NomMédulo .NomProcedimiento
Ejemplo
Il ThisWorkbook.Salir_Apli
[Para llamar a un procedimiento de otro libro, use la siguiente sintaxis:
[Link] "NomLibro!NomM6dulo .NomProcedimiento*
Eiemplo
B [Link] "Ventas. xlsm!ThisWorkbook.Salir_Apli*
|Observacion
Para ejecutar este comands, el libro [Link] debe estar abierto.
2.10 Llamar a una funcién VBA en una formula Excel
Las funciones VBA se pueden usar en las formulas Excel. Todas las funciones
declaradas en Public estén disponibles en el asistente para funciones de Excel
(categoria Funciones Definidas por el usuario).60 VBA Excel 2013
Programacid6n en Excel: macros y lenguaje VBA
Ejemplo
Este ejemplo usa una funcién VBA que calcula la edad de una persona a
partir de su fecha de nacimiento.
Function CalcEdad(fechaNac As Date)
Dim zFecha As Date
‘ Calcula la edad en funcién de la fecha de nacimiento
CalcEdad = Abs(DateDiff("Yyyy", fechaNac, Date))
zPecha = DateAdd("YvyY", CalcEdad, fechaNac)
If zFecha > Date Then CalcEdad = CalcRdad - 1
End Function
(Para usar esta funcién en Excel:
— Seleccione la opcién Insertar funci6n de la ficha FORMULAS.
— En el cuadro de didlogo Insertar funci6n, en la lista O seleccionar una
categoria, elija Definida por el usuario; la funcién CalcEdad estaré
ahora accesible:
0 seleccionar una categoria: |Defirida por el usuario
‘Selecconar una funadn:
Cakdad(fechanac)
No hay ayuda disponibe.
© Editions ENI - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.El lenguaje VBA. 63
Capitulo 2
[4Si prueba este ejemplo, obtendré el siguiente resultado:
“> | Tabla de valores:
La tercera celda no se pudo actualizar.
3. Variables
Las variables permiten almacenar valores intermedios durante la ejecucion del
cédigo VBA para usarlos luego en calculos, comparaciones, pruebas...
Las variables se identifican por un nombre que permite hacer referencia al va-
lor que contienen y un tipo que determina la naturaleza de los datos que pue-
den almacenar.
3.1 Tipos de variables
Numéricas
7 Tamafio
Tipo Rango ani bytes’
Byte 0a 255 T
Integer (entero) —_|-32 768 832767 2
Long (entero largo) |-2 147 483 648 a 2 147 483 647 4
Single (real simple |-3,402823E38 a 1,401298E-45 4
de coma flotante) _|(valores negativos)
'1,401298E-45 a 3,402823E38
(valores positivos)VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Tamafio
en bytes
Double (real doble |-1,79769313486231E308 a 8
de coma flotante) |4,94065645841247E-324
(valores negativos)
|4,94065645841247E-324 a
1,79769313486231E308
(valores positivos)
(Currency -922 337 203 685 477,5808 8
(monetario de a 922 337 203 685 477,5807
punto fijo)
Decimal +/-79 228 162 514 264 337 593 543950 335 12
sin separador decimal;
+/-7,9228162514264337598543950835
con 28 cifras a la derecha del separador
decimal;
lel menor ntimero distinto de cero es
+/-0.0000000000000000000000000001
Tipo Rango
Cadenas de caracteres
El tipo es String. Existen dos tipos de cadenas:
~ Las cadenas de longitud variable pueden contener aproximadamente dos mil
millones de caracteres.
~ Las cadenas de longitud fija pueden contener de 1 aaproximadamente 64 Kb
de caracteres.
Ejemplo
‘Cadena de longitud variable
Dim Domicilio As string
‘Cadena de longitud fija (20 caracteres)
Dim Nombre As String * 20
fs reserved65
El lenguaje VBA.
Capitulo 2
Boolean 9 légica
E] tipo es Boolean. La variable puede tomar los valores True (Verdadero) o
False (also), que es su valor por defecto. Ocupa dos bytes.
Fecha
El tipo es Date. La variable puede tomar los valores de fecha y de hora del pri-
mero de enero del afio 100 al 31 de diciembre de 9999, Ocupa ocho bytes.
Variant
Las variables de tipo Variant pueden contener datos de todo tipo, adem4s de
los valores especiales Empty, Error y Null.
Usar el tipo de dato Variant ofrece més flexibilidad en el tratamiento de datos.
Por ejemplo, si una variable de tipo Variant contiene cifras, se puede usar su
valor real o su representacién en forma de cadena, segdin el contexto,
De todas formas, las variables de tipo Variant requieren 16 bytes de memoria
para numeros y 22 bytes més la longitud de la cadena para los caracteres; esto
puede ser perjudicial en el caso de procedimientos largos o en médulos
complejos.
Ejemplo
Sub Variable_Variant ()
*Declaraci6n de 1a variable "Valx" como Variant
Dim Valx As Variant
‘Asignacién de una sucesién de valores a
‘y mostrar el tipo del resultado
variable
"10 retorna un valor de tipo Integer
Valx = 10
MsgBox Valx & " es de tipo " & TypeName (Valx)
‘Bjemplo que retorna un valor de tipo string
Valx = "Ejemplo"
MsgBox Valx & " es de tipo " & TypeName (Valx)
‘Esta miltiplicacién retorna un valor de tipo Double
Valx = 12500.32 * 1B+21
MsgBox Valx & " es de tipo " & TypeName (Valx)
‘#1/1/99# retorna un valor de tipo Date66 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
valx = #1/1/99#
MsgBox Valx & "es de tipo " & TypeName (Valx)
‘True retorna un valor de tipo Boolean
Valx = True
MsgBox Valx & " es de tipo " & TypeName(valx)
End Sub
Objeto
El tipo es Object. Para crear una variable que contenga un objeto, comience
por declarar la variable como tipo Objeto y luego asignele un objeto.
(Para declarar una variable Objet«
Si el tipo de objeto no se conoce, use la sintaxis:
InstrucciénDeDeclaracién NonVariable As object
Si se conoce el tipo de objeto, use la sintaxis:
InstrucciénDeDeclaracién NonVariable As TipoObjeto
Ejemplo
Sub Variables_Objeto()
‘Test se declara como objeto
tNomCli se declara como hoja de cflculo
‘AImprimir se declara como gréfico
Dim Test As Object
Dim Nomcli As Worksheet
Dim AImprimir As Chart
End Sub
[Para asignarle un objeto a una variable Objeto, use la instruccién Set:
Set NomVariable = ObjetoaAsignar
(© Editions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.3.2.2
3.2.3
El lenguaje VBA.
Capitulo 2
Declaraciones explicitas
Requieren el uso de una instruccién de declaracién (Dim, Public, Private,
etc.). Siel tipo de la variable no se indica, la variable resultard del tipo por de-
fecto, o sea, Variant.
Se puede imponer Ia declaraci6n implicita de variables usando la instrucci6n
Option Explicit en la seccién de declaracién de cada médulo. Para insertar
esta instrucci6n automdticamente en cada nuevo médulo, active la opcién
Requerir declaraci6n de variables del ment Herramientas - Opciones -
ficha Editor.
Ejemplo
Dim 1
Private Importe As Double
Public Nombre as String
Observacion
Para optimizar la velocidad de ejecucién del cédigo VBA, se recomienda de-
clarar las variables en forma explicita.
Sintaxis de las instrucciones de declaracién
NomVariable [As ]
Donde Inst rucciéndeDeclaracién corresponde a una de las siguientes
cuatro instrucciones: Dim, Public, Private 0 Static.
Dim Las variables declaradas con la instruccién Dim a nivel de
médulo, estén disponibles para todos los procedimientos del
médulo. No son accesibles desde ningdn otro médulo. Las
variables declaradas con la instruccién Dim a nivel de pro-
cedimiento, solamente est4n disponibles dentro del procedi-
miento.
Private Solamente a nivel de médulo. Las variables Private sola-
mente estén disponibles para el médulo en el que son declara-
das.
69aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.El lenguaje VBA. 85
Capitulo 2
For i = 5 To 17 Step 4
If Left (Cells(2, i), 4) <> "Trim" Then
Cells(2, i).Bntirecolumn. Insert
Cells(2, i) = "Trim. * & nTrim
nirim = nTrim +1
Range(Cells(3, i), Cells(11, i)).Select
Selection.FormulaRiC1 = "=sUM(RC[-3] :RC[-21])
Range(Cells(2, i), Cells(11, i)).[Link] = True
For Each Celda In Range(Cells(2, i), Cells(11, i))
CeldaBorderAround ColorIndex:=1, Weight :=x1Thin
Next Celda
End If
Range ("Al") .Activate
Next
End sub
Sub Suprime_Totales_Trimestrales ()
Dim i As Integer
‘ Suprime los total
For i = 5 To 17
trimestrales si ya los habia
If Left(Cells(2, i), 4) = "Trim" Then
Cells (2, i).[Link]
End If
Next 4
End Sub
Este procedimiento muestra en Ia hoja de calculo "Colores", los diferentes
colores de relleno y el valor de la propiedad Colorindex correspondiente.
Sub Nuestra_Colores ()
Dim i As Integer
With Sheets ("Colores")
For i = 1 To 56
Cells(i, 1).[Link] = i
Cells(i, 2) =i
Next i
End With
End sub86 VBA Excel 2013
Programacién en Excel: macros y lenguadje VBA
5.4 Instrucci6n For Each...Next
Ejecuta un bloque de instrucciones para cada elemento de una coleccién de
objetos o de una matriz.
For Each In
Next
Ejemplo
Este procedimiento aplica un color de letra a las celdas en funcién de su
contenido.
Sub Colores_Celda ()
Dim ZonaaModificar As Range
Dim Celda As Range
* aplica un color en funcién del valor de la celda
Set ZonaaModificar = Range ("B3:Q11")
For Each Celda In ZonaaModificar
Select Case Celda
Case Is < 1000
[Link] Color = RGB(150, 150, 250)
Case Is < 5000
[Link] .Color = RGB(90, 100, 250)
Case Is < 10000
[Link] = RGB(10, 20, 250)
case Is < 20000
[Link] = RGB(5, 10, 175)
case Else
[Link] = RGB(5, 5, 100)
End Select
Next
End Sub
Ejecucién de varias acciones sobre un objeto
With objeto
End With
© Editions ENI- All rights reserved87
El lenguaje VBA
Capitulo 2
Ejempio
Sub Paginacion()
* Define la paginacién de la hoja activa
* Redimensiona las columnas y procede con 1a impresicn
With ActiveSheet
with .PageSetup
Orientation = xlLandscape
-LeftMargin = Application. InchesToPoints(0.5)
-RightMargin = Application. InchesToPoints (0.5)
TopMargin = Application. InchesToPoints (0.5)
-BottomMargin = Application. InchesToPoints (0.5)
-LeftHeader = ""
.CenterHeader = "sa"
-RightHeader = ""
-LeftFooter = ""
.CenterFooter = "Page &P"
-RightFooter = ""
End with
Columns ("A:Q") .-EntireColumn. AutoPit
-Printout
End With
End sub
5.5 Salir de las estructuras de control
La instruccién Exit For permite salir directamente de un ciclo For o For Each,
mientras que Exit Do sale directamente de un ciclo Do.
Elemplo
Sub Introducir_Fecha()
Dim strval
' Puergza la introduccién de una fecha en la celda Al
' i no se introduce ningin valor: @ del ciclo
Range("AL") = "*
Do While Not IsDate(Range ("Al") )
strVal = InputBox("Escriba una fecha")
If strVal <> "" Then
If IsDate(strVal) Then Range("A1") = strVval
Else
Exit Do88
6.
6.1
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
end If
Loop
End Sub
Operadores
Los operadores permiten realizar operaciones aritméticas con variables y/o
constantes, comparar variables entre ellas, evaluar varias condiciones, etc.
Se distinguen varios tipos de operadores:
— Operadores aritméticos,
— Operadores de comparacién,
= Operadores l6gicos,
— Operador de concatenacién.
pservacion
El operador de asignacién es el signo =. El valor de Ia expresién situada a la
derecha del signo igual se asigna a la variable situada a la izquierda del signo
(@iemplo: IntA = 12, IntA = Intb * 12).
Operadores aritméticos
Permiten efectuar c4lculos aritméticos con variables y/o constantes.
Operador Calculo realizado
+ |Adicién
~ Sustraccion
/ Divisién con resultado de un nimero con coma flotante
Mod Resto de la divisin entre dos ntimeros
i |Divisién con resultado entero
* |Multiplicacién
= Potenciacién
© Editions ENI - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.100
3.
3.1
3.2
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA.
Principios de uso de los objetos y las colecciones
Propiedades
las propiedades sirven para describir un objeto. Ciertas propiedades son de
sélo lectura y no se pueden, por lo tanto, modificar con el cédigo VBA.
Sintaxis
{ | }.
Ejempio
*‘ Modificacién del puntero del ratén
[Link] = xlWait
‘ Muestra la versién de la aplicacién Excel activa
+ Esta propiedad es de sélo lectura
MsgBox [Link]
[Link] = xlDefault
Propiedades que representan objetos
Los objetos globales y los objetos definidos en el codigo a través de clases ma-
nejadas por VBA tienen ciertas propiedades cuyo valor se actualiza automati-
camente por el sistema.
Estas propiedades especificas permiten acceder directamente a ciertos obje-
tos: ventana activa, libro activo, celdas de la hoja activa, etc. La siguiente tabla
muestra las propiedades especificas mas usadas.
Propiedad Objeto Parent Objeto devuelto
ActiveCell Application Objeto Range que representa la
[Window primera celda activa de la
ventana activa o especificada.
ActiveChart Application Objeto Chart que representa el
[Window Workbook |gréfico activo.
(© Editions ENI - All rights reserved101
La programacién de objetos en Excel
Capitulo 3
Propiedad Objeto Parent Objeto devuelto
|ActiveControl Frame Objeto Control que representa
Page UserForm el control (ActiveX) activo.
|ActiveMenuBar |CommandBars Objeto CommandBar que
representa la barra de menti
activa en Excel.
|ActivePane | Window Objeto Pane que representa el
panel activo de la ventana
activa.
|ActiveSheet |Application Objeto Worksheet que
!Window Workbook representa la hoja activa del libro
activo o del libro especificado.
|ActiveWindow |Application Objeto Window que representa
lla ventana activa.
ActiveWorkBook {Application Objeto Workbook que
representa el libro de la ventana
activa.
Parent [Objetos multiples — |Devuelve el objeto contenedor.
Selection Application Objeto Range que representa la
Windows lo las celdas seleccionadas.
ThisCell Application [Devuelve la celda porla que la
funcién definida por el usuario
les llamada como objeto Range.
ThisWorkbook Application [Objeto Workbook que
representa el libro sobre el
que se ejecuta el cédigo de la
macro actual.
WObservacién
Las propledades especificas que devuelven un objeto Range (Cells, Offset,
Columns, Rows, etc.) se explican en detalle en el capitulo Objetos de Excel.VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
102
3.3 M6todos
Los métodos permiten realizar acciones sobre los objetos.
Son similares a los procedimientos:
— Pueden usar o no argumentos.
— Ciertos métodos pueden devolver un valor como los procedimientos Func-
tion y otros no, como los procedimientos Sub.
Sintaxis de método que no devuelve un valor
{ | }. []
Eemplo
* Activa la segunda hoja de c&lculo del libro activo
[Link] ActiveWorkbook .Worksheets (2) .Range ("Al")
* Selecciona un rango de celdas
Range ("A1:C12") . Select
‘ Borra las celdas seleccionadas
[Link]
* Guarda el libro activo con un nuevo nombre
[Link] "C:\presupuesto\presupuesto2.x1sm"
Como en el caso de los procedimientos, los distintos argumentos de un méto-
do se separan por comas, Si un argumento opcional no se define explicita-
mente, el método usard un valor por defecto.
Sintaxis de método que devuelve un valor
= { | }.
[]
© Editions ENI- All ights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.106 VBA Excel 2013
Programacion en Excel: macros y lenguaje VBA
3.6 Redaccién automatica de instrucciones
El editor VBA incluye una tecnologfa que lo ayuda en el empleo de objetos.
Cuando usted escribe el nombre de un objeto o de una coleccién reconocida
por VBA seguido de un punto, se despliega una lista con los métodos y las pro-
piedades del objeto. Si selecciona un método, el asistente lo ayuda a indicar los
argumentos que le corresponden.
Ejemplo
DiEscriba el nombre de la coleccién Workbooks seguido de un punto, aparece
la siguiente lista desplegable.
Sub Abrir_Libro(steMame As String)
Workbooks.|
9
Eng Sub gf Appicaion
CancheckOut
“© CheckOut
® Chose
Count
Elicono *® representa los métodos, el icono & representa las propiedades y
las colecciones.
(Usted puede hacer avanzar la lista escribiendo las primeras letras del méto-
do, propiedad o coleccién buscada o con Ia ayuda de la barra de desplaza-
miento. Para seleccionar un elemento de la lista, haga doble clic sobre él.
GEscriba un punto si acaba de seleccionar un objeto para ver la lista de sus
propiedades y métodos. Si selecciona un método, escriba un espacio para
obtener la lista de configuracién del método.
[Para seguir este ejemplo, seleccione el método Open, y luego escriba un
espacio.
© Editions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Objetos de Excel
Capitulo 4
Opciones de visualizacion
N° Propiedades Valores devueltos
6 |RecentFiles. Maximum Entero largo
7 |DisplayFormulaBar Boolean
8 |DisplayFunctionToolTips Boolean
9 DisplayComment Indicator Constantes:
xINoIndicator
xlIndicatorOnly
xlCommentAndIndicator
10 |DefaultSheetDirection (Constantes:
xIRTL (de derecha a izquierda)
xILTR (de izquierda a derecha)
Pesan cit de opcones
ore de erate acer iis
cent
Heapetatr dees (3)
Ruceee sane Ci)
ste ect (i) (12)
hair eas matpocen (1)
ime depres bck (14)
ostropcones preter iat
Mesyabama de depuamiete heiontal (1)
(9 Mestarbaracedepimainto etic (2)
"@ Uateos ies pracendonade te epi 2
om 9
5 tart
posectinee (I
125aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Objetos de Excel
Capitulo 4
Opciones relacionadas con las formulas
N° Propiedades Valores devueltos
13 |[Link] Boolean
14 |MultiThreadedCalculation. ThreadMode |Constantes:
xT hreadModeAutomatic
xIThreadModeManual
15 |MultiThreadedCalculation. ThreadCount|Entero
Ai tse gee
sh
@ Apter certo ataode page M e851 pa 8)
127128
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Opciones relacionadas con el cdiculo en los libros
Las siguientes propiedades se aplican a un libro (objecto Workbook)
N° Propiedades Valores devueltos
1 SaveLinkValues Boolean
2 |PrecisionAsDisplayed Boolean
3 |Date1904 Boolean
4 UpdateRemoteReferences Boolean
Opciones generales
N° Propiedades Valores devueltos
By EnableSound Boolean
6 IgnoreRemoteRequests Boolean
7 |AskToUpdateLinks Boolean.
8 |WarnOnFunctionNameConflict. Boolean
9 |MapPaperSize Boolean
10 [AltStartupPath (Cadena de caracteres
11 |Afecta las propiedades de los objetos
'WebOptions y Default WebOptions
(© Eattions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.VBA Excel 2013
Programacién en Excel: macros y lengugje VBA
132
ClipboardFormats
Variant. Devuelve una matriz que contiene los formatos que se encuentran.
actualmente en el Portapapeles.
CutCopyMode
Constante. Devuelve o define el estado del modo Cortar 0 Copiar.
Constantes: False: No est4 en modo Cortar ni Copier.
xlCopy: _Esté en modo Copiar.
xICut: —_Esté en modo Pegar.
DataEntryMode
Constante. Devuelve o define el modo de entrada de datos.
Constantes: xlOn: Modo de entrada de datos activado.
xIOff: Modo de entrada de datos desactivado.
x1Strict; | Modo de entrada de datos activado y tecla
[Escape] desactivada.
EnableCancelKey
Constante. Controla la forma en que Microsoft Excel trata la manera en que
el usuario interrumpe el procedimiento en curso pulsando la combinacién
de teclas [Ctrl] [Pausa].
Constantes xlDisabled: No se interrumpe.
xlInterrupt: Interrumpe el procedimiento en curso y
pasa al modo Depurar.
xlErrorHandler: En caso de interrupcién, el procedimiento
genera un error (cédigo de error 18).
EnableEvents
Boolean. Permite desactivar (False) los eventos del objeto Application.
EnableMacroAnimations
Boolean. Indica si las animaciones de macro estén activadas.
© Editions ENI - All rights reservedObjetos de Excel
Capitulo 4
FileValidation
Constante. Devuelve o define la forma en que Excel valida los archivos antes
de abrirlos.
Constantes: msoFileValidationDefault
msoFileValidationSkip
FileValidationPivot
Constante. Devuelve o define la forma en que Excel valida el contenido de
la memoria caché en un informe de tabla dindmica.
Constantes: xIFileValidationPivotDefault: Valida el contenido de la
memoria caché segin la
configuracién _ predetermi-
nada y del Registro.
xIFileValidationPivotRun: Valida el contenido de todas
Jas memorias cachés.
xiIFileValidationPivotSkip: No valida el contenido de las
memoria caché
FindFormat
Devuelve o define los criterios de bisqueda para el tipo de formato de celda
que hay que encontrar.
GenerateGetPivotData
Boolean. Indica si Excel puede obtener datos de un informe de tabla dinémi-
ca
Hinstance
Entero largo. Devuelve el controlador de instancia de la instancia que llama
a Microsoft Excel.
HinstancePtr
Variant. Devuelve un controlador a la instancia de Microsoft Excel 2013 re-
presentada por el objeto Aplicacién.
133134
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Hwnd
Entero largo. Devuelve un objeto que designa el identificador de ventana su-
perior de la ventana Microsoft Excel.
MapPaperSize
Boolean. Indica si los documentos se ajustan automaticamente cuando
cambia el tamafio de papel.
MouseAvailable
Boolean. Indica si hay un ratén disponible.
OrganizationName
Cadena de caracteres. Nombre de la empresa.
PreviousSelections
Variant. Devuelve una matriz de objetos Range que contiene los tltimos
cuatro rangos seleccionados.
PrintCommunication
Boolean. Indica si est activa la comunicacién con la impresora.
RecordRelative
Boolean. True si las macros se graban usando referencias relativas.
ReplaceFormat
Boolean. Establece los criterios de sustitucién que se emplean para sustituir
formatos de celda (se usa con la propiedad FindFormat).
SaveIlSO8601 Dates
Boolean. Indica si Excel guarda los valores de fechas y horas en formato ISO
8601.
© Editions EN! - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Objetos de Excel
Capitulo 4
KeepChangeHistory
Boolean. Indica si esta habilitado el seguimiento de cambios en el libro com-
partido.
ListChangesOnNewsheet
Boolean, Indica si las modificaciones del libro compartido se muestran en
una nueva hoja de célculo.
MultiUserEditing
Boolean, Indica si el libro esté abierto como una lista compartida.
RevisionNumber
Entero largo. Devuelve la cantidad de veces que el libro fue grabado mientras
estaba abierto como lista compartida.
ShowConflictHistory
Boolean. Indica si la hoja de c4lculo Historial de conflictos esté visible en
el libro abierto como lista compartida.
UserStatus
Variant. Devuelve una matriz de dos dimensiones indexada a partir de 1,
con la informacién de cada usuario que tenga abierto el libro como lista
compartida.
HasPassword
Boolean. Indica si el libro esté protegido con contrasefia.
Password
Cadena de caracteres. Devuelve o define la contrasefia necesaria para abrir
el libro.
PasswordEncryptionAlgorithm
Cadena de caracteres. Devuelve el algoritmo que usa Microsoft Excel para
encriptar las contrasefias del libro.
147aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.VBA Excel 2013
Programacion en Excel: macros y lenguaje VBA.
154
ExclusiveAccess
Atribuye al usuario actual un acceso exclusivo al libro abierto como lista
compartida.
HighlightChangesOptions
Controla cémo se muestran los cambios en un libro compartido.
RejectAliChanges
Impide los cambios sobre el libro compartido especificado.
RemoveUser
Desconecta el usuario especificado del libro compartido.
2.3.4 Métodos relacionados con datos vinculados
BreakLink
Convierte las férmulas vinculadas a otros origenes Microsoft Excel u ori-
genes OLE en valores.
ChangeLink
Modifica un vinculo entre dos documentos.
EnableConnections
Activa las conexiones de datos en un libro.
FollowHyperlink
Muestra un documento de la caché, si ya ha sido transferido a la m4quina
local. De lo contrario, este método resuelve el hipervinculo, transfiere el do-
cumento destinoa la maquina local y muestra el documento en la aplicaci6n
apropiada.
LinkInfo
Devuelve informacién acerca de la fecha y el estado de actualizacién del vin-
culo.
© Editions ENI-- All rights reserved155
Objetos de Excel
Capitulo 4
LinkSources
Devuelve una matriz de vinculos al libro. Los nombres de la matriz son los
nombres de los documentos vinculados, ediciones o servidores DDE u OLE.
Este método devuelve Empty si no hay vinculos en el libro.
OpenLinks
Abre los documentos origen de uno o més vinculos.
OpenXml
Abre un archivo XML en un nuevo libro. Devuelve un objeto Workbook.
ReloadAs
Vuelve a cargar un libro basado en un documento HTML usando la codifi-
cacién de documentos especificada.
SetLinkOnDate
Define el nombre de un procedimiento ejecutado a cada actualizacién de un
vinculo DDE.
UpdateLink
Actualiza uno o mds vinculos Microsoft Excel, DDE o OLE.
WebPagePreview
Muestra la vista previa del libro especificado, tal como se verfa al ser guar-
dado como pagina Web.
2.3.5 Métodos relativos al envio de libros
SendFaxOverlnternet
Envia una hoja de célculo como fax a los destinatarios especificados.
SendMail
Envia un mensaje de correo electrénico con el libro especificado.156
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
SendForReview
Env{a un mensaje de correo electrénico con el libro que hay que revisar, alos
destinatarios especificados.
EndReview
Termina la revision de un archivo enviado para este fin con el método
SendForReview.
ReplyWithChanges
Envia un mensaje de correo electr6nico al autor de un libro enviado para re-
visi6n y le informa de que la revisién ha sido realizada.
2.3.6 Otros métodos
Los métodos relativos a la importacién y exportacién de archivos al formato
XML (SaveAsXMLData, Xmilmport, etc.) se explican en el capitulo Internet
2.4 Ejemplos de cédigos que usan el objeto Workbook
24.1
Para probar estos ejemplos, debe crear una carpeta C:\Ventas con la base ejem-
plo de Access [Link].
Creacién de un libro Excel
EI siguiente ejemplo permite:
— Cerrar todos los libros abiertos excepto el libro activo,
- Crear un nuevo libro.
— Proteger el libro con contrasefia.
— Agregar el libro a la lista de Favoritos.
- Grabar y cerrar el libro.
© Editions ENI - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.158 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Sub CreaHTMLFile()
Dim Libro As Workbook
' amporta 1a tabla Clientes de la base Access Northwind 2013
' en un nuevo Libro
Set Libro = Workbooks .openDatabase _
(Filename: =[Link] & "\Northwind [Link]"
CommandText :=" SELECT * FROM CLIENTS")
' Bxporta los clientes a un archivo Html
[Link] Filename:=[Link] & "\[Link]", _
FileFormat :=xlHtml, ReadOnlyRecommended:=False, CreateBackup:=False
' Abe el archivo Html
Workbooks. Open Filename.
End Sub
[Link] & "\[Link]"
2.4.3 Mostrar las propiedades de un libro
Este ejemplo muestra los nombres y valores de las diferentes propiedades del
libro. Algunas de estas propiedadés son accesibles al hacer clic en la ficha
ARCHIVO y luego en Ja seccién Informacién.
Propiedades +
Tamaiio 640K6,
Titulo Chapitre 4 -.
evquetas EN, VBA, EXC.
Categorias Ouvrages ERE
Fechas relacionadas
Utima moairicacion, Hoy, 21:36
Cleade et 22/03/2007 13...
Utima impresién 2enano104:40
Personas relacionadas
Autor Michéle AMELOT
Utima mosificacién realizada por claudio
Documentos relacionados
[D)atriruoieacén de archivos
© Eattions ENI- All rights reserved159
Objetos de Excel
Capitulo 4
Sub Propiedades()
Dim i As Integer
Dim m_ObjProp As Object
‘ Muestra la lista de propiedades del libro
idea
For Bach m_ObjProp In [Link] ies
On Error Resume Next
ActiveSheet .Cells(i, 2) = m_ObjProp.Value
ActiveSheet .cells(i, 1) = m_ObjProp.name
ieiga
Next
End Sub
2.4.4 Exportar un libro al formato PDF
JObservar
Para ejecutar este cédigo, debe previamente ejecutar el programa de insta-
lacién del complemento Excel [Link] (este programa se en-
trega con los ejemplos).
Sub Export_Péf ()
' Bxporta el archivo al formato PDF y lo abre en Acrobat Reader
‘[Link] Type: =xlTypePDF,
Filename :="Capitulo4"
IncludeDocPropertie:
OpenAfterPublish
End sub
3. El objeto Worksheet
Este objeto representa una hoja de célculo Excel. El objeto Worksheet es un
miembro de la coleccién WorkSheets del objeto Workbook.
Las siguientes propiedades del objeto Application devuelven un objeto
Worksheet:
— Worksheets
— ActiveSheetaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.161
Objetos de Excel
Capitulo 4
PageSetup
Objeto que representa las opciones de configuraci6n de pagina de la hoja de
cdlculo especificada.
Protection
Objeto que representa las opciones de proteccion para la hoja de célculo
especificada. Estas opciones son accesibles en Excel a través del menti
Herramientas - Protecci6n - Proteger hoja.
Range
Obdjeto que representa una celda o un rango de celdas (una fila, una colum-
na, etc.).
Tab
Objeto que representa la ficha de la hoja de cdlculo especificada.
Colecciones
ChartObjects
Coleccién de los graficos incrustados en la hoja de calculo especificada.
Comments
Coleccién de todos los comentarios de celda de la hoja de cdlculo especifica-
da.
CustomProperties
Coleccién de objetos CustomProperty que representa la informaci6n com-
plementaria (metadatos para XML 0 etiquetas inteligentes).
HPageBreaks
Coleccion de los saltos de pagina horizontales en la zona de impresion de la
hoja especificada.
Hyperlinks
Coleccién de los hipervinculos de la hoja de célculo especificadaaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Objetos de Excel
Capitulo 4
3.3 Propiedades
AutoFilterMode
Boolean. Indica si las flechas del mend desplegable de los autofiltros apare-
cen en la hoja de célculo especificada.
ConsolidationFunction
Constante (xlMax, xIMin, xISum, etc.). Devuelve la funcién usada para la
consolidacién actual.
ConsolidationOptions
Matriz de booleanos que representa las opciones relativas ala consolidaci6n
(rotulos en la fila superior, rétulos en la columna izquierda, vinculos con los
datos de origen).
ConsolidationSources
Matriz de cadenas de caracteres que contiene los nombres de las hojas origen
para la consolidacién actual de la hoja de célculo especificada.
DisplayPageBreaks
Boolean. Indica si se muestran los saltos de p4gina (autométicos y ma-
nuales) de la hoja especificada.
DisplayRightToLeft
Boolean, Corresponde a la opcién Ver a hoja actual de derecha a iz-
quierda del cuadro de dislogo Herramientas - Opciones - ficha Interna-
cional.
EnabledAutofilter
Boolean. Indica si las flechas del Autofiltro estén activas solamente cuando
est4 activa la proteccién de sdlo interfaz de usuario.
EnableCalculation
Boolean. Indica si Excel recalcula autométicamente la hoja de célculo cuan-
do es necesario.
163164
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
EnableFormatConditionsCalculation
Boolean. Devuelve o define si los formatos condicionales se aplican automa-
ticamente si es necesario.
EnableOutLining
Boolean. Indica si los simbolos del esquema estan activos cuando esta activa
la proteccién de sdlo interfaz de usuario.
EnablePivotTable
Boolean. Indica si los controles y las acciones de la tabla din4mica estén
activos cuando esté activa la proteccién de sélo interfaz de usuario.
EnableSelection
Constante. Devuelve o define los elementos que se pueden seleccionar en la
hoja (xlNoRestrictions, xINoSelection, xlUnlockedCells).
FilterMode
Boolean, Indica si hay aplicado un filtro a la hoja especificada.
MailEnvelope
Representa el encabezado de los mensajes de correo electrénico para la hoja
especificada.
Name
Cadena de caracteres que contiene el nombre de la hoja de célculo.
PrintedCommentPages
Entero largo. Devuelve la cantidad de paginas de comentarios que se impri-
men para la hoja de calculo especificada.
ProtectContents
Boolean. Indica si el contenido de la hoja especificada esté protegido.
ProtectDrawingObjects
Boolean. Indica si las formas grdficas est4n protegidas.
© Editions ENI - All rights reservedObjetos de Excel
Capitulo 4
165
ProtectionMode
Boolean. Indica si esta activa la proteccién de solo interfaz de usuario.
ProtectScenarios
Boolean. Indica si estén protegidos los escenarios de hoja de célculo.
ScrollArea
Cadena de caracteres. Devuelve o establece el rango en el que esta permitido
el desplazamiento de la hoja de célculo especificada.
StandardHeight
Real doble. Devuelve el alto estandar (valor por defecto) de las filas dela hoja
de cAlculo especificada.
StandardWidth
Real doble. Devuelve el ancho est4ndar (valor por defecto) de las columnas
de la hoja de célculo especificada.
Type
Constante. Devuelve o define el tipo de la hoja de célculo especificada
(xlChart, xlDialogSheet, etc.).
Visible
Boolean. Indica si la hoja de cdlculo especificada esté visible.
3.4 Métodos
Activate
Activa la hoja de cdlculo especificada. Equivale a hacer clic sobre la ficha de
la hoja.
Calculate
Recalcula las celdas de la hoja de cdlculo especificada.166
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
CheckSpelling
Efectiia la verificaci6n ortogréfica dela hoja de célculo especificada (equivale
a la opcién Ortografia del menti Herramientas).
CircleInvalid
Rodea con un cfrculo las entradas incorrectas en la hoja de célculo especifi-
cada.
ClearArrows
Borra las flechas de auditoria de la hoja de cdlculo especificada.
ClearCircles
Borra los cfrculos que rodean las entradas incorrectas de la hoja de cAlculo.
Copy
Hace una copia de la hoja de célculo especificada (antes o después de una de
Jas hojas del libro).
Delete
Elimina la hoja de c4lculo especificada.
Evaluate
Calcula la expresi6n pasada como argumento y devuelve el resultado. La
expresién debe corresponder a una f6rmula de célculo en inglés.
ExportAsFixedFormat
Publica una hoja de c4lculo en formato PDF o XPS.
Move
Mueve la hoja de célculo especificada a una posicion dada (antes o después
de una de las hojas del libro).
Paste
Pega el contenido del portapapeles en la hoja de célculo especificada.
© Editions EN! - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Objetos de Excel
169
Capitulo 4
3.5.2 Proteccién de las hojas de cdiculo de un libro
Este ejemplo protege las hojas de célculo de un libro permitiendo las siguientes
autorizaciones: formato de celdas, agregar columnas y filas, ordenamiento y
autofiltros. Las otras operaciones (eliminar filas o columnas, modificacién de
escenarios, etc.) quedan prohibidas.
Sub ProtegeHojas()
Dim shtCurrent As Worksheet
For Bach shtCurrent In ActiveWorkbook Worksheets
Next
End Sub
shtCurrent .Protect Password:="Contrasefia", _
contents:=True, AllowFormattingCells:=True, _
AllowInsertingColumns :=True, AllowInsertingRows:=True, _
AllowSorting:=True, AllowFiltering:=True
sht Current
3.5.3 Ordenar una tabla
Este ejemplo ordena una tabla segtin tres columnas: ciudad, apellido y
nombre,
Sub Ordena_Clientes()
‘Ordena 1a tabla de clientes por ciudad, apellido y nombre
[Link] Reference: "Clientes"
With ActiveWorkbook. Worksheets ("Clientes") .Sort
-[Link]
-[Link] Key:-Range("C2:C30"), SortOn:=x1SortOnValues, _
Order: =xlAscending, DataOption:=x1SortNormal
-[Link] Key:=Range("B2:B30"), SortOn:=x1SortOnValues, _
Order:=xlAscending, Dataoption:=x1SortNormal
-[Link] Key:-Range("D2:D30"), SortOn:=x1SortOnValues, _
Order:=xlAscending, DataOption:=x1SortNormal
-SetRange Range ("A1:G30")
-Header = xlves
-MatchCase = False
sOrientation = xlTopToBottom
-Apply
End With
End Sub170 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
4. El objeto Range
El objeto Range representa un rango de celdas y puede estar constituido por:
= Una celda.
— Una fila.
— Una columna.
— Un rango de celdas contiguas.
— Un rango de celdas no contiguas.
— Un rango 3D.
4.
Propiedades y métodos que devuelven
un objeto Range
Propiedades que devuelven un objeto Range
7 Objeto .
Propiedad | sontenedor Objeto devuelto
[ActiveCell [Application |Objeto Range que representa la primera celda
Window _ activa de la ventana activa o especificada.
[Areas Range [Coleccion que agrupa todos los rangos de una
seleccién multiple.
(Cells [Application {Objeto Range que representa una celda o una
Range lcoleccién de celdas:
Worksheet | De la hoja activa si el objeto contenedor es|
Application,
| Del rango especificado si el objeto contenedor
es Range.
| De la hoja de cAlculo especificada si el objeto
contenedor es Worksheet.
CircularReference |Worksheet _ |Objeto Range que representa el rango que
Icontiene la primera referencia circular de la
hoja.
(© Editions ENT - All rights reservedObjetos de Excel
Capitulo 4
‘ Objeto .
Propiedad Giphenedat Objeto devuelto
Columns Application |Objeto Range que representa las columnas:
Range - De la hoja activa si el objeto contenedor es
[Worksheet | Application.
|- Del rango especificado si el objeto contenedor
es Range.
|- De la hoja especificada si el objeto contenedor
es Worksheet.
(CurrentRegion Range Objeto Range que representa el objeto Range
lespecificado, limitado por toda combinacién de
filas y columnas vacfas
Dependents Range Objeto Range que representa el rango que
lcontiene todas las celdas dependientes de una
Jcelda dada. Puede ser una seleccién miltiple
(unién de objetos Range) si hubiera muchas
celdas dependientes
DirectDependents
[Range
Objeto Range que representa el rango que
lcontiene todas las celdas directamente
idependientes de una celda dada.
|DirectPrecedents
Range
|Objeto Range que representa el rango que
Icontiene todas las celdas directamente
lantecedentes de una celda dada.
EntireColumn
Range
lObjeto Range que representa una o mas
lcolumnas enteras del rango especiticado.
EntireRow
Range
|Objeto Range que representa una o més filas
lenteras del rango especificado.
End
Range
[Objeto Range que representa la celda situada al
final de la zona de rango especificado.
ICorresponde a la combinacién de teclas
[Fin] (Flecha arriba], (Fin]{Flecha abajo],
[Fin] [Flecha izquierda] o [Fin][Flecha derechal.
Next
Range
lObjeto Range que representa la siguiente celda
del rango especificado.
Offset
Range
lObjeto Range especificado desplazado una o mas
filas o columnas.
Val72
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Propiedad | Objeto Objeto devuelto
contenedor
Precedents Range Objeto Range que representa el rango que
jcontiene todas las celdas antecedentes de una
celda dada.
Frevious Range Objeto Range que representa la celda
precedente de una celda dada.
Range (Application |Objeto Range que representa un rango de
Range celdas:
Worksheet | De la hoja activa si el objeto contenedor es|
Application.
|- Del rango especificado si el objeto contenedor
es Range.
| De la hoja especificada si el objeto contenedor
es Worksheet.
Rows Application |Objeto Range que representa todas las filas:
Range |- De la hoja activa si el objeto contenedor es
| Worksheet Application.
|- Del rango especificado si el objeto contenedor
es Range.
|. De la hoja especificada si el objeto contenedor
es Worksheet.
UsedRange Worksheet _|Objeto Range que representa el rango usado en
su totalidad por la hoja de célculo especificada
MObservacion
Las propiedades Next y Previous, aplicadas a los objetos Worksheet y Chart,
devuelven un objeto tipo Worksheet que representa las hojas siguiente y an-
terior, respectivamente.
© Editions ENT - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.178
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Errors
Objeto que representa los errores en el rango especificado.
Font
Objeto que contiene los atributos de fuente (nombre, tamafio, color, etc.)
del rango especificado.
Interior
Obdjeto que representa el relleno de las celdas del rango especificado.
Name
Objeto que representa un nombre para un rango de celdas (celdas con
nombre).
PivotCell
Objeto que representa una celda en un informe de tabla dinémica.
Style
Objeto que representa el estilo aplicado al rango especificado.
Validation
Objeto que representa la validacién de datos aplicada al rango especificado.
XPath
Objeto que representa un XPath (ruta XML) mapeado en el rango de celdas
especificado.
Colecciones
Areas
Coleccién de todos los rangos en una seleccién de muchas zonas.
Borders
Coleccién de todos los bordes del rango de celdas especificado.
© Editions ENI - All rights reserved179
Objetos de Excel
Capitulo 4
FormatConditions
Coleccién de los formatos condicionales del rango especificado.
HyperLinks
Coleccién de los hipervinculos del rango especificado.
Phonetics
Coleccién de objetos que contienen la informacién de una cadena de texto
fonética especifica en una celda.
QueryTables
Coleccién de objetos que representa las tablas de hoja de cdlculo creadas a
partir de datos devueltos por un origen de datos externos.
SparklineGroups
Coleccién de los objetos que representan el conjunto de minigraficos para el
rango especificado.
4.4 Propiedades
4.4.1 Propiedades relacionadas con Ia posicién y el formato de las celdas
AllowEdit
True si el rango puede ser modificado en una hoja de c4lculo protegida.
AddressLocal
Devuelve la referencia del rango especificado en el idioma del usuario.
Address
Devuelve la referencia del rango en el lenguaje de la macro.
Column
Devuelve el numero de la primera columna de Ja primera zona del rango
especificado.180 ________________VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
ColumnWidth
Devuelve o define el ancho de todas las columnas del rango especificado.
HorizontalAlignment
Constante. Define o devuelve el tipo de alineacion horizontal.
IndentLevel
Devuelve o define el nivel de sangria efectivo.
Row
Devuelve el ntimero de la primera fila de la primera zona del rango.
RowHeight
Devuelve el alto, medido en puntos, de las filas del rango especificado.
UseStandardHeight
True si el alto de fila del objeto Range es igual al alto estandar de la hoja.
UseStandardWidth
True si el ancho de columna del objeto Range cs igual al ancho estandar de
la hoja.
VerticalAlignment
Constante. Define o devuelve el tipo de alineaci6n vertical.
4,4.2 Propiedades que se relacionan con el contenido
de celdas y con las formulas
CountLarge
Determina el valor maximo en el rango.
Formula
Devuelve o define la f6rmula en el estilo de referencia Al.
© Editions ENI- All rights reservedObjetos de Excel
Capitulo 4
FormulaLocal
Devuelve o define la f6rmula del objeto, usando las referencias de estilo Al
en el idioma del usuario.
FormulaR1C1
Devuelve o define la férmula del objeto, usando las notaciones de estilo
RIC1
FormulaR1CiLocal
Devuelve o define la formula, usando las notaciones de estilo R1C1 en el
idioma del usuario.
PrefixCharacter
Devuelve el prefijo de alineacién de la celda.
Text
Valor de la celda especificada con el formato especificado (contenido visible
de la celda).
Value
Valor de la celda especificada. Si la celda esté vacia, la propiedad Value de-
vuelve el valor Empty (use la funcién IsEmpty para testear este caso). Siel
objeto Range contiene varias celdas, devuelve una matriz de valores (use la
funcién IsArray para testear este caso).
WrapText
Boolean. True si Microsoft Excel inserta autométicamente retornos de
carro en el texto del objeto.
4.4.3 Otras propiedades
MergeCells
True si el rango o el estilo contiene celdas combinadas.
ListHeaderRows
Devuelve la cantidad de filas de encabezado en el rango especificado.
181aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.189
Objetos de Excel
Capitulo 4
5. Ejemplos de uso de los objetos
5.1 Cdlculo del importe de un premio
a 3 c D af €
1
2 CALCULO DE LOS PREMIOS ANUALES
3
4
seas
6) [waar 124 560€ s00€
7, Jouran “use00€ 1.000
@] lsancrez sizme 2000€
9) |maannez 3m 000€ 2.0006
1o| [aan ta950€ 1000
11) JRoucaou 83.0006 -€
12) |wuuer 900.000 3000€
13) |preirer a1ss0€ -¢
14) oesuer ——_esetna 482.010€ 2000€
6 [rota 2174.299€ 2500€
6 Promedio 241 589€ 1.309€
Elrango de celdas 'D6:D14" debe recibir el nombre VN.
Cuando el usuario hace clic en el botén de comando Calcular premios, se eje-
cutaré el procedimiento Cale_Premios. Este procedimiento selecciona el ran-
go de celdas llamado VN (celdas "D6:D14") y llama a la funcién Premio para
calcular la prima y asignarla a la celda de la derecha.
Sub Calc_Premios()
Dim db1VNProm As Double
Dim celda As Range
+ Seleccién del rango llamado VN
ThisWorkbook .Names ("VN") .RefersToRange Select
' G&leulo del promedio de la seleccién
@blvNPron = Evaluate ("AVERAGE (VN) ")
* Recorre las celdas de la seleccién
‘Ga prima calculada se asigna a la celda de 1a derecha190
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
For Each celda In Selection
Cells([Link], [Link] + 1) = _
Premio([Link], db1VNProm)
Next celda
End sub
La funcién Premio calcula el premio en funcién del VN (valor negociado) y
del promedio de los otros VN.
Function Premio(dblVN As Double, dblVNProm As Double) As Double
‘Premio en funcicn del importe VN
Select Case db1VN
case
case
case
case
Is < 100000
Premio = 0
Is < 125000
Premio = 500
Is < 150000
Premio = 1000
Else
Premio - 2000
End Select
‘si el VN es superior al promedio
‘premio extra de 1000 €
If dblvN > dblvwProm Then
Premio = Premio + 1000
End If
End Function
© Eations EI - All rights reservedObjetos de Excel
Capitulo 4
5.2 Asignar comentarios a las celdas
AB c D E F
1
2\ RESUMEN DE VENTAS
3
4) 2010 2011 2012
5 [Enero 128.760 109.050€7 118.5406
6 [Febrero 112.204€ 118.505€. 112.906 €!
7 [Marzo rossize[ 136.906] 145201 €)
8 Abel 134512€ 131.080€ — 99.702€"
9 |Mayo woseve | [Link]’ 1202006.
10 |Jurio 9.0as€[128.062€] — 152100€%
11 Julio 134.590€ 101.20€. — 120.002€
12 Agosto 117.390€ —197.344€" —119.500€"
13|Septiemtre 151.920€ 197.989 © eccierte: por ence
14 (Octubre 99 780€[ 121.000€) lac aizy %
15 [Noviembre 135.600€ 130.400€
16 Diciembre 124.506€ 148.020 €
7
18 TOTAL 1.468.069 € — 1502.260€ | 1548231€ |
191
Cuando el usuario hace clic en el bot6n Comentarios, se ejecuta el procedi-
miento Mostrar_Comentarios. Este procedimiento llama al procedimiento
Compara_Valor para comparar cada una de las celdas seleccionadas con la
celda situada a su izquierda.
Sub Mostrar_Conentarios()
Dim rng1 As Range
Dim rng2 As Range
Dim rngCurrent As Range
Dim col As Object
Dim i As Integer
Dim j As Integer
' Borra los comentarios y los estilos de la
With mgCurrent
-ClearComments
-[Link] = False
-[Link] = False
-Borders .LineStyle
| Recorre las columns:
‘Compara el valor de cada celda de la columna
con el de 1a celda situada a su izquierda
xlLinestyleNone
seleccionada:
eccién actual
Set rngCurrent = [Link] ("Ventas") .Range ("C5:D16")aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.200
Ejemy
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
lo
Este ejemplo permite:
— Mostrar el cuadro de didlogo Abrir con la posibilidad de seleccionar mas de
un archivo.
— Guardar en una matriz los nombres de los archivos seleccionados del tipo in-
dicado (extensién xlsm) y que no se encuentren ya abiertos.
— Mostrar un mensaje que indica los archivos que se abrirén.
— Abrir esos archivos tras pedir confirmacién.
Sub AbreLibros ()
Dim strFiles
Dim x1Files
Dim binAbierto As Boolean
Dim strMensaje As String
Dim wbk As Workbook
Dim i As Integer
Dim j As Integer
* Muestra el cuadro de diélogo Abrir
strPFiles = [Link]
(filefilter:="Archivos Excel (*.x1sm),*.xlsm", _
Title:="Seleccione los archivos que hay que abrir", _
Multiselect :=True)
‘Prueba si los archivos han sido seleccionados
If TypeName (strFiles) = "Variant ()" Then
ReDim x1Files (UBound (strFiles))
For i = 1 To UBound(strFiles)
* controla la extensién del archivo
If Right (strFiles(i), 4) = "xlsm" Then
‘Prueba si el archivo ya esté abierto
binabierto = False
For Each wbk In Workbooks
If [Link] & "\" & [Link] = strFiles(i) Then
binAbierto = True
End If
Next wok
Guarda el nombre del archivo en una matriz
If Not blnAbierto Then
j=j+2
x1Files(j) = strFiles(1)
© Editions ENI - All rights reserved201
Cuadros de didlogo
Capitulo 5
strMensaje = strMensaje & str¥iles(i) & vbCr
End If
End If
Next i
‘ Abre todos los archivos Excel tras confirmacién
If j > 0 Then
strMensaje = "Confirme la apertura de los archivos: " _
& vbCr & strNensaje
If MsgBox (strNensaje, vbYesNo + vbQuestion) = vbYes Then
For i = 1 To j
[Link] Filename: =x1Files(i)
Next i
End If
End If
Else
MsgBox "Ningin archivo seleccionado"
End If
End Sub
3. Cuadros de didlogo predefinidos
3.1 La funcién InputBox
Muestra una pregunta (una solicitud de datos) y devuelve el texto escrito por
el usuario.
InputBox (prompt , title, default, xpos, ypos,helpfile, context)
prompt Cadena que apareceré como mensaje.
title Cadena que apareceré en la barra de titulo.
default Valor tomado por defecto.
xpos Posicién horizontal del cuadro de didlogo (expresado en twips).
ypos Posicién vertical del cuadro de diélogo (expresado en twips).
helpfile Nombre del archivo de ayuda contextual.
context — Ntmero del contexto de ayuda.202__———S—CSFSCFsSFsSCsV BAA Excel 20133
Programacién en Excel: macros y lenguaje VBA
Ejemplo
Este ejemplo muestra un cuadro de didlogo que pide el nombre de las
celdas que hay que borrar (las celdas reciben el nombre de cada mes).
Sub Borrar_Celdas_Nonbradas ()
Dim opcion As String
' Pide introducir el m que hay que borrar
§ Si el mes se reconoce, borra las celdas con nombre
‘Bi no, muestra un mensaje de error
opcion = InputBox( _
Prompt :="ZQué mes desea borrar?", _
Title Borrar celdas")
On Error GoTo 1
[Link] reference:
[Link]
Exit Sub
1 MsgBox "No se puede borrar, nombre de celda inexistente"
End Sub
pcion
3.2 El método InputBox
Acttia como la funcién Input Box pero permite controlar el tipo de datos que
hay que introducir.
objeto. InputBox (prompt, title, default, left, top,helpfile,
helpContext ID, type)
El objeto es obligatorio, y debe ser un objeto Application.
prompt Mensaje mostrado.
title Titulo del cuadro de didlogo.
default Valor tomado por defecto.
left Posicién horizontal del cuadro de diélogo (en puntos).
top Posicién vertical del cuadro de diélogo (en puntos).
helpfile Nombre del archivo de ayuda en linea.
helpContextID Numero del contexto de ayuda.
© Editions ENI - All rights reservea203
Cuadros de didlogo.
Capitulo 5
type Tipo de datos que se devolverd:
0: Férmula
1: Némero
2: Cadena
4: Valor Boolean
8; Referencia de celda
16: Valor de error
64: Matriz de valores en una seleccién de celdas.
Para aceptar varios tipos de datos, haga la suma de los valores. Por ejemplo,
si se puede aceptar un texto o unnumero, indique el valor 3 (1+ 2) como tipo.
Eiemplo
Pide al usuario seleccionar Ia o las celda(s) que hay que pintar.
Sub Celdas_A_Pintar()
Dim strRep as Range
+ 84 @1 usuario selecciona celdas,
+ 6stas se pintan de rojo
+ si hace clic en Cancelar, termina el procedimiento
On Error GoTo 1
Set strRep = Application. InputBox( _
Prompt :="Seleccione la o las celda(s) que hay que pintar", _
Title:="Celda que hay que pintar", Default:="Al", Type:
[Link] = 3
1 End Sub
3.3 La funci6n MsgBox
Esta funcién muestra un mensaje en un cuadro de didlogo. Puede incluir un
icono, y de uno a tres botones.
Sintaxis de la instruccién
Usada cuando aparece un Gnico botén.
MsgBox [, [][, ]]aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.212 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Herramienta Nombre Objeto
a Imagen Image
] RefEdit (seleccién de rangos) RefEdit
Crear un control
[Seleccione el control que desea crear y arrastre el puntero para definir un
rea rectangular.
TAI soltar el botén del rat6n, aparecerd el control y la herramienta Seleccio-
k
nar objetos pasaré a ser la herramienta activa.
Observacion
Para dibujar varios controles del mismo tipo, haga doble clic en Ia herramien-
ta correspondiente.
Algunas propiedades
(Name)
Especifica el nombre del control.
Caption
Indica el texto de una etiqueta.
ControlTipText
Crea una etiqueta informativa.
Visible
Especifica si un control esta oculto o visible.
Enabled
Determina si el foco puede estar sobre el control.
© Editions ENI- All rights reservedFormularios.
Capitulo 6
Value
Define el estado o el contenido de un control.
ControlSource
Vincula un control a una celda (cuadro de texto) o un rango de celdas
(cuadro de lista).
Determinar el acceso a un control
(Para definir el orden de tabulacién, seleccione las opciones:
Ver - Orden de tabulacién
(Para desactivar la posibilidad de usar la tecla [Tab] para acceder a un control,
seleccione el control e indique False en la propiedad TabStop.
GPara asignar una tecla de acceso rapido, seleccione el control e indique la te-
cla de acceso en la propiedad Accelerator.
bservacion
‘SI el acceso rapido se aplica a un contiol Label, el control que sigue al Label
en el orden de tabulaci6n recibira el foco y no el control Label proplamente
dicho.
Tamaiio de un control
(Para modificar el tamafio de un control, seleccione los controles y arrastre el
controlador de tamajfio o seleccione el control e indique las propiedades
Height y Width que determinan el alto y el ancho del control, en puntos.
[Para uniformizar los tamafios, seleccione los controles que desea dimensio-
nar y vaya al menti Formato - Igualar tamafio.
En funcién del tamajfio deseado, elija Ancho, Alto o Ambos.
GPara ajustar el tamafio, seleccione los controles que desea ajustar y
seleccione las opciones Formato - Ajustar tamaifio al contenido o Ajus-
tar tamafio a la cuadricula.
213VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Ubicar un control
Para definir la posici6n de un control, seleccione el control que desea mover
y arrastre el rat6no seleccione el control y asigne las propiedades Left y Top
que indican la distancia entre el control y el borde izquierdo y superior del
formulario.
[Para alinear controles entre ellos, seleccione los controles que desea alinear
ya continuacién vaya a la opcién Alinear del mend Formato.
Segtin el control de referencia, elija: Izquierda, Centro, Derecha, Supe-
rior, Medio, Inferior o A la cuadricula.
Para administrar el espaciado entre controles, seleccione los controles y vaya
a las opciones Formato - Espacio horizontal o Espacio vertical.
En funcién del espacio deseado, seleccione las opciones Igualar, Aumentar,
Disminuir o Quitar.
Para centrar un control en el formulario, seleccione el control y a continua-
cién Formato - Centrar en el formulario Horizontalmente o Vertical-
mente.
Aplicar formato
Asigne las siguientes propiedades:
Font
Define la tipografia.
BackColor
Especifica el color de fondo.
ForeColor
Especifica el color de primer plano.
BorderColor
Especifica el color del borde.
© Eaitions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.224 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Option | Scroll | Spin | Tab | Text | Toggle | User | Ref
Button | Bar | Button | Strip | Box | Button | Form | Edit
fActivate x
[AddControl x
[After Update x x x x Xx x [Xx
BeforeDragOver x x x x | x x x [Xx
BeforeDropOrPaste | _X x x x | x x x [Xx
BeforeUpdate x x x x Ee x
(Change x x x x |x x x
(Click x x x x
[DbIClick x x [| x X x |x
Deactivate x
[DropButtonClick x x
Enter x x x | x x x
Error x x x x x x x x
Exit x x x xX x x x
initialize x |X
[KeyDown x x x x x x xX
[KeyPress x x x x x x x x
[KeyUp x x x x x x x | xX
layout x |x
[MouseDown x x | x x x
|MouseMove x x x x x x
[MouseUp X x x x x [Xx
RemoveControl x |X
Terminate x z
Scroll x x 8
SpinDown x 2
SpinUp x
Zoom x =
QueryClose x 8
Resize x a
8226 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
3.3 Ejecutar y cerrar un formulario
GPara ejecutar un formulario desde de la hoja UserForm, seleccione las op-
ciones:
Ejecutar - Ejecutar Sub/UserForm o L!I o [F5]
GPara ejecutar un formulario desde un médulo, use el método Show o la
instruccién Load.
Show (método)
Sintaxis
ObjetoUserForm. Show
Muestra el objeto UserForm indicado.
Load (instruccién)
Sintaxis
Load ObjetoUserForm
Carga el objeto sin mostrarlo,
Para cerrar un formulario, use el método Hide o la instrucci6n Unload.
Hide (método)
Sintaxis
objetouserForm. Hide
Oculta el formulario sin descargarlo.
Unload (instruccién)
Sintaxis
Unload objetouserForm
Elimina el formulario de la memoria.
© Editions ENI - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.230 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
With ThisWorkbook. Worksheets ("Servicios")
-Retivate
Set rng = .Range("Al").CurrentRegion
* Ordena los servicios por orden alfabético
[Link] Keyl: =Range("A1")
[Link]
For Each cell In rng
If [Link] <> "" Then
[Link] cell. Text
Else
Exit For
End If
Next cell
End With
‘ Muestra la lista de empleados
Mostrar_Empleados
[Link] = 0
+ Nuevo empleado por defecto
bNuevo = True
End Sub
Private Sub Mostrar_Smpleados ()
Dim rng As Range
Dim linea As Range
* Muestra la lista de empleados
With [Link] ("Empleados")
-Activate
Set rng = .Range(*A3") .CurrentRegion
Set rng = .Range("A4: D" & [Link] + 3)
[Link]
For Zach linea In [Link]
If Cells([Link], 2) <> *" Then
[Link] Cells ([Link], 2) &"* & _
Cells([Link], 3)
Else
Exit For
End If
Next linea
End with
End Sub
Private Sub cmdAceptar_Click()
Dim rng As Range
Dim i As Integer
© Editions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Capitulo 7
Mejoras en la interfaz de usuario
1. Presentacién
A partir de Microsoft Office 2007, la interfaz de usuario de las versiones ante-
riores de Excel (formada por barras de herramientas y de ments) se reemplaz6
por la cinta de opciones, compuesta por diferentes fichas.
La versién 2013 de Microsoft Office permite personalizar la cinta de opciones
agregando, relocalizando o eliminando fichas y comandos (ver el capitulo Pre-
sentacién). Esta innovacién no permite tener cintas especificas para un libro
determinado.
Sin embargo, existen dos soluciones para tener una cinta personalizada propia
de un determinado libro:
— La utilidad Custom UI Editor, que permite crear una cinta personalizada
por medio de cédigo XML e interactuarcon la cintaa través de procedimien-
tos VBA.
— La colecci6n CommandBars, que permite crear barras de herramientas y
ments en la ficha COMPLEMENTOS.
235aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.2.3.4
Mejoras en la interfaz de usuario
Capitulo 7
Resumen de los atributos para cada control
" Botén ‘ie
“Cre, | ets Groupe] Smads | Aleta | "aa | combinado
(ribbon) (button) Button) Control) | (comboBox)
[columns
[description xX x
jenabled x x x x
id x x x x x x
ia a: x
fimageMso x x x
jinsertAfterMso x x x x x x
jinsertBeforeMso x x x x x x
invalidateContenton- x
Drop
itemHeight
TtemWidth
ItemSize
keytip x x x x x x
label x x x x x x
maxLength z
ae
screentip x x x x x
showlmage x x x
showltemimage x
showltemLabel x
‘showLabel x x x x
size x x x x
sizeString x
startFromScratch x
supertip x x x xX x
tag, x x x x
visible x x x x x x
247aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.249
Mejoras en la interfaz de usuario
Capitulo 7
2.3.5 Imagenes de la galeria de iconos de Microsoft Office
Los nombres de las imégenes usadas para personalizar la cinta de opciones
(atributo ImageMso) corresponden al nombre del icono en la galeria de Micro-
soft Office. Para conocer la lista de nombres de iconos de esta galeria:
[Abra en Excel el archivo [Link] (disponible con
los ejemplos de este libro o en la pagina de Microsoft).
(Seleccione la ficha PROGRAMADOR.
(CiHaga clic sobre alguno de los botones de Gallery para ver la lista de iconos.
TEI nombre de la imagen aparecerd al apoyar el puntero del ratén sobre el ico-
no correspondiente (también puede hacer clic sobre el icono para mostrar su
nombre en un cuadro de diélogo)
EVSER_ VBTA | PROGRANADOR Taos YS
jopiedsdesdelaasignaciin GAImpona [| EESSUIRAIB) 3 Gatery4~ 3 caery7~
HQAg@esvHibyYMEAESs eS
5 aR &
TB | BR!
Pr toe
awe 0 & Bator
O% % giao BOP
ott oy tn Lae Ly in te
iy GE tan th, i ta ine Le? Uo!" ly, (By ey
LY
Bl & Ms!
2.3.6 Funciones de Ilamadas Callbacks
Las funciones de llamada Callbacks permiten iniciar la ejecucién de procedi-
mientos VBA, con el objetivo de personalizar et contenido, presentacién y
acciones asociadas a los diferentes controles de la cinta de opciones.251
Mejoras en la interfaz de usuario
Capitulo 7
Funci6n Descripcién Control
[getDescription [Procedimiento que define el atributo Todos los controles que
"Description" del control. tienen el atributo perso-
nalizable por la Funcién.
getEnabled [Procedimiento que define si el control esté_ |Ejemplo: getlmage se
activado. aplica a todos los
Jcontroles que tengan el
atributo Image.
getKeyTip [Procedimiento que define el método El tipo de datos que
labreviado asociado al control devuelve el
procedimiento VBA
debe ser el mismo que
el del atributo corres-
pondiente (porejemplo,
boolean para getEnable
Jo cadena de caracteres
para getImage),
[getlmage [Procedimiento que define la imagen lexcepto para la funcion
Jasociada al control. getSize (el procedi-
miento devuelve 1 para
"normal" y 2 para
large’.
getltemlabel [Procedimiento que define la etiqueta del
|control.
[getltemHeigth Procedimiento que define el alto de cada ele-
lmento de la galerfa.
[getltemWidth Procedimiento que define el ancho de cada
lelemento de la galeria
[getItemScreenTip __ |Procedimiento que define la pista de cada
lelemento de la galeria
| getItemSuperTip /Procedimiento que define la pista
suplementaria de cada elemento de la
lgalerta
[getLabel /Procedimiento que define la etiqueta de un
control.
[getScreen Tip Procedimiento que definela pista de un
control252
VBA Excel 2013
Programacion en Excel: macros y lenguaje VBA
Funcién Descripcién Control
getSuperTip Procedimiento que define la pista
suplementaria de un control.
getShowlmage Procedimiento que define si se debe
mostrar la imagen del control.
getShowLabel Procedimiento que define si se debe
mostrar la etiqueta del control.
[getSize Procedimiento que define el tamafio del
control
get Visible |Procedimiento que define si un control est4
visible,
Uso de las funciones de llamada Callbacks
EI principio de uso de estas funciones es el siguiente: en vez de indicar el valor
de un atributo en el archivo XML de personalizaci6n (por ejemplo, visible =
"False") indica el nombre del procedimiento VBA que determina esa propiedad
(por ejemplo, getVisible = "ProcVisible").
Las funciones de llamada devuelven informacién especifica de la cinta de op-
ciones por medio de parémetros (0 argumentos), transferidos a los procedi-
mientos VBA.
Para generar autométicamente los procedimientos VBA y los pardmetros aso-
ciados, use el bot6n Generate CallBacks El de la utilidad Custom UI Edi-
tor.
Los principales pardmetros son los siguientes:
4: Controles
Argumento Descripcién involucrados
Control |Objeto que representa el control que ha _ [Todos los controles
Jdesencadenado el procedimiento. Este
lobjeto tiene las propiedades "id" y "tag"
que permiten, respectivamente,
ecuperar los valores de los atributos "id"
ly "tag".
© Eattions ENI- All rights reserved3.
Mejoras en Ia interfaz de usuario
Capitulo 7
ye Controles
Argumento Descripcién involucrados
index Determina el ndmero de elemento para _|Controles ComboBox,
los controles de tipo lista. |\dropDown, Gallery y
Menu
pressed Valor booleano que indica sila casilla est4 |Controles CheckBox y
marcada (CheckBox) o siel bot6nest4 _|toggleButton
presionado (TogeleButton).
|Argumento Argumento que permite recuperar y ‘Todos los controles
lprecedido por |definir el atributo del control (por
la palabra _| ejemplo: ByRef enabled, ByRef label).
clave ByRef
. Ejemplo de cinta personalizada
con el Custom UI Editor
Presentacién
El siguiente ejemplo permite pedir la informacién de una factura a partir de la
cinta de opciones.
La interacci6n con la hoja Excel que contiene la informaci6n de la factura se
hace en ambos sentidos:
— Elingreso de datos, a nivel de la cinta, afecta el contenido de las celdas de la
hoja.
— La modificaci6n de las celdas, dentro de la hoja Excel, modifica los datos de
la cinta.
253aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
‘oculta los grupos 2 y 4 #1 es factura de servicios
Sub SelectGroup (control As IRibbonControl, ByRef returnedval)
returnedVal = True
If [Link] = "Grupo2" And ActiveSheet .Nane = "Factura de
servicios" Then
returnedVal = False
End If
If [Link] = "Grupo3" And ActiveSheet Name - "Pactura
de servicios" Then
returnedVal = False
End If
End Sub
‘Destaca el botén alternar seleccionado
Sub Activation(control As IRibbonControl, ByRef returnedVal)
returnedVal = False
If [Link] = "btProd" and _
RetiveSheet Name = "Factura de Productos" Then
returnedval = True
End If
T£ [Link] = "beServ" and _
ActiveSheet .Name = "Factura de Servicios" Then
returnedval = True
End If
End Sub
+ Recuperacién de los valores de 1a factura
‘como valores por defecto de 1a cinta '
* Recupera 1a tasa de IVA de la factura
Sub GetIVA(control As IRibbonControl, Bykef returnedval)
returnedval = "*"
[Link] Reference: ="TASA_IVA‘
returnedval = ActiveCell. Value
nd Sub
+ gGastos de flete sobre 1a factura?
Sub getchkFlete (control As IRibbonControl, ByRef returnedval)
returnedVal = False
[Link] Reference: ="FLETE"
If Val ([Link]) > 0 Then returnedval = True
blnFlete = returnedVal
If Not binFlete Then
[Link] Reference: ="FLETE"
[Link] = ""
End If
© Eaitions EN - All rights reservedVBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
End If
End sub
* asigna el plazo seleccionado a 1a factura
Sub MostrarPlazo (control As TRibbonControl)
If ActiveSheet .Name = "Factura de Productos" Then
[Link] Reference: ="PLAZO1"
Elee
[Link] Reference
End If
[Link] - control. tag
End Sub
"PLAZO2"
* Asigna e1 modo seleccionado @ ia factura
Sub NostrarModo (control As IRibbonControl)
If [Link] = "Factura de Productos" Then
[Link] Reference: ="MODO1"
Else
[Link] Reference: ="MOD02"
End If
[Link] = control .Tag
End Sub
' Asigna e1 vendedor seleccionade a la factura
Sub MuestraVendedor (control As IRibbonControl)
[Link] Reference :="VENDEDOR"
[Link] - [Link]
End Sub
+ asigna el trensportista seleccionado a la facture
Sub MuestraTransp (control As IRibbonControl)
[Link] Reference: ='TRANSPORTISTA"
[Link] = [Link]
End Sub
* carga el mend din&mico con ia lista de transportista:
+ mediante cédigo xm
Sub Lista_Transp (control As IRibbonControl, ByRef returnedval)
Dim i As Integer
Dim eXML As String
ind
SYML = "cmenu xmins=""http: //[Link]/office/2005/01/
customui" ">"
With Sheets ("Transportistas")
Do While .Cells(i, 1) <> ""
UNL = XML @ Agregartem(i, .Celle(i, 1))
ieied
Loop
(© Editions ENI- All rights reserved261
Mejoras en la interfaz de usuario
Capitulo 7
End with
returnedVal = sXML & " "
End Sub
' Agrega un transportista al mené dindnico
Private Function AgregaItem(Index, Transportista As String)
Agregartem = "cbutton * _
"ide" & Chr(34) & "btTransp" & Index & Chr(34) &" "
“label=" & Chr (34) & Transportista & Chr(34) & " " _
"tage" & Chr(34) & Transportista & Chr(34) &" *
"imageMso-" & Chr (34) & "ShowTimeZones" & Chr(34) &@ " "
wonAction=" & Chr (34) & "MuestraTransp" & Chr(34) & "/>"_
Pe Re
End Function
4. Personalizacién de la cinta de opciones
mediante la colecci6n CommandBars
La colecci6n CommandBars (coleccién de las barras de herramientas y barras
de menti de Excel), disponible en las versiones de Excel que no tenian cinta de
opciones, funciona también con Excel 2013.
EL acceso a esta coleccin permite realizar las siguientes operaciones con la
ayuda del lenguaje VBA:
— Crear barras de herramientas personalizadas: se ubican autométicamente en
el grupo Barras de herramientas personalizadas ce la ficha COMPLE-
MENTOS (la tiltima de la derecha) y tiene el aspecto de las barras de herra-
mientas de las versiones anteriores de Excel.
— Crear barras de mentis personalizados: se pueden ubicar tanto en la ficha
COMPLEMENTOS como en una hoja Excel bajo la forma de menus
contextuales (ments "popup").
— Crear una barra de comandos personalizado con el formato de Office 2013.
— Personalizar los comandos en su accién sobre las macros.262___________VBA Excel 2013
Programacién en Excel; macros y lenguaje VBA
5. Ejemplos de barras de comandos
5.1 Barras de herramientas personalizadas
| Archivo Vista Formato +
B&G hom
Bac
barat personales,
WObservacion
Se muestran dos barras de comandos: una barra de herramientas, con seis
botones y una barra de meniis con tres opciones.
5.2 Comandos de mentis en formato Office 2013
‘ow
EX Vistepremitinar FH ordes |
Beimprimir @Btramas |
|
Comandos de ment
como MC Fuentes,
5.3 Agregar el grupo a Ia barra de herramientas
de acceso rdpido
Las barras de comandos asi creadas, se pueden hacer accesibles desde la barra
de herramientas de acceso rApido de la siguiente manera:
[Ubique el cursor bajo la barra de comandos y haga clic con el botén derecho
del ratén.
[Seleccione la opcion Agregar a la barra de herramientas de acceso
répido.
© Editions ENI- All rights reservedMejoras en Ia interfaz de usuario
Capitulo 7
263
Gao eB: ‘ofr depron Se placenta Nera
PEED eco auinran osciooerhena romana: Tos RAR WTA PROGRNADOR —_cOMPLEUONTOS
lowe coro tum ace” Ye Foraa:
PRvieapremioar Beores QE foe Re
Gromer Wann
ersatz boa de aramid 0 pie
Hem a debrelende can ipo ps delat dope eniento
Normalmente, las barras de comandos son accesibles a través de botones de
comandos agregados a la barra de herramientas de acceso rapido:
Barras de herramientas personalizadas
gos 0 ae:
BJ co INGER: Archivos Vista Formato jatos
a
meen geeesia aes be
Ba Copiar ~ _
PEO ve copiarformato | _—____Bamaspersonalaades EE
povtapapeles Fuente 5 snes
Comandos de ments
BAS ¢ BoB
INIGO ~—INSERTAR | Ee] Guardarcomo Asc Fuentes bus
a % Cortar [nal | (Qi Vista premitinar EH Bordes a
Ba copiar « ‘Simm — BA Tramas
$¥ Copistformsto |" “|_____Comandes demend
Pager
Portapapeles 5 Fuente fe™
7.
Mejoras en la interfaz de usuario
Capitulo 7
Controles (opciones o botones de comando)
de las barras de comandos
Ja colecci6n de objetos CommandBarControls representa todos los
controles de una barra de comandos.
Para acceder a esta coleccién, use la propiedad Controls de los objetos
CommandBar y CommandBarPopup.
Agregar un control
Expression [Link](Type, Id, Parameter, Before, Temporary)
Este método devuelve un objeto CommandBarButton, CommandBar-
ComboBox o CommandBarPopUp, que son objetos de tipo Command-
BarControls.
Expression — Expresién que devuelve un objeto CommandBar; obliga-
torio.
Type Tipo de control que hay que agregar; puede ser una de las
siguientes constantes:
msoControlButton: herramienta u opcién de ment
msoControlEdit: cuadro de entrada
msoControlDropDown: cuadro de lista
msoControlComboBox: cuadro de lista
msoControlPopUp: ment contextual
Id Entero que identifica un control integrado; si el valor del
argumento es igual a 1 0 si se omite, se agrega un control
personalizado vacio del tipo indicado en la barra de
comandos.
Parameter En el caso de controles integrados, la aplicaci6n conte-
nedor lo usa para ejecutar el comando; en el caso de
controles personalizados, este argumento puede servir
para enviar informaci6n a los procedimientos Visual Basic
para almacenar la informacion en el control.
267VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
268
Before Numero que indica la posicién del nuevo control en la
barra de comandos; si no se especifica este argumento, el
control se agrega al final de la barra de comandos.
Temporary Recibe el valor True en el caso de un control temporal; los
controles temporales se suprimen cuando se cierra la apli-
caci6n Excel.
7.2 Especificar el titulo de un control
[Use la propiedad Caption del control.
En el caso de un ment, esta propiedad indica su tftulo; en el caso de un botén,
indica la etiqueta informativa que aparece.
7.3 Eliminar un control
[Link]
Expression — Expresién que devuelve el objeto CommandBarControls
que hay que eliminar.
7.4 Asociar un procedimiento a un control
[1Use la propiedad onAction del control.
El nombre del procedimiento que desea asociar al control, se debe indicar entre
comillas.
jObservacién
Para mostrar la tecla de método abreviado del proceaimiento asociado, use
la propiedad ShortCutText del objeto CommandBarBution.
rights reserved
© Eartions ENI -269
Mejoras en la interfaz de usuario
Capitulo 7
7.5 Otras propiedades
(Para activar o desactivar un control, use la propiedad Enabled del control.
(Para modificar el aspecto de la imagen de un botén, use la propiedad Faceld
del objeto CommandBarButton.
bservacién
Esta propiedad define el aspecto del botén y no su funcién.
Ejemplos
Agregar un botén de comando personalizado a Ia barra de herramientas
Menuz2, Este botén abre el cuadro de didlogo Guardar como.
sub Agregar_Control1()
Dim m_Button as ConmandBaxButton
' Agrega un botén de comando a la barra Menu?
Set m_Button = [Link] ("Menu2") .[Link] _
(Type :=msoContro1Button)
* qcono Guardar
m Button. FaceId = 3
* “Accdén *Guardarcomo"
m_Button.OnAction = "GuardarComo"
End Sub
Procedimiento GuardarComo
Sub Guardarcomo ()
' Cuadro de dialogo "GuardarComo"
Application. Dialogs (x1DialogSaveAs) .Show
End Subaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.275
Mejoras en Ia interfaz de usuario
Capitulo 7
Commandsars ("Empleados") . ShowFopup
Cancel = True
End If
End Sub
8.5 Cédigo del médulo ProcMenus
option Explicit
+ DectaraciGn de variables
Dim m Nenu As CommandBarPopup
Dim m_Barra As ComnandBar
Dim m_Option As ConmandBarControl
Dim m_Button As ConmandBarButton
Sub Personalizar_Excel()
Dim i As Integer
* Crea los mends y comandos personalizados
Nostrar_Barra_Ments
Nostrar_Barra Herramientas
Nostrar_Barra_Comandos
+ Mend contextual “Lista de empleados"
Lista_Empleados
+ Oguite las barras de f6rmulas, de estado
' y los encabezados de fila y columna
[Link] = False
[Link] = False
[Link] - False
End Sub
Sub Restaurar_Excel ()
Dim i As Integer
Dim m_Ctr] As CommandBarControl
‘ Blimina los menGs y barras de comandos
on Rrror Resume Next
Application. CommandBars ("MenG Gastos") .Delete
Application. CommandBars ("Gastos") .Delete
Application. CommandBars ("Empleados") .Delete
On Error GoTo 0
‘ Blimina los comandos personalizados
‘de la barra de comandos “Herramientas"
For Each m_Ctrl In [Link] ("Tools") .Controls
Té Not [Link] Then
-Delete
Next m_ctrlaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.279
Mejoras en Ia interfaz de usuario
Capitulo 7
Set m Button = [Link] _
(Type :=msoCont rol Button)
With m_Button
-FaceId = 291
-Onaction = "Fuente"
-TooltipText = "Fuente"
-Caption = "Puente"
End With
Set n_Button - m [Link] _
(Type :=msoControlButton)
With m Button
-Facetd = 1704
onAction = "Bordes"
-TooltipText = "Bordes"
-Caption = "Bordes"
End With
Set n Button = m Barra,[Link] _
(Type :=msoControlButton)
with mutton
-FaceTd = 1988
-onaction = "Tranas"
-TooltipText = "Tramas*
‘Caption - "Tramae"
End with
Bnd Sub
Public Sub Lista_Bmpleados ()
Dim Db As Database
Dim rstEmp As Recordset
Dim Legajo As Long
* Crea el menG "Enpleados*
on Error Resune Next
Application ..Commandsars ("smpleados") .Delete
on Error GoTo 0
Set n_Barra = [Link] _
(ame: ="smpleados", Position
+ Xbre la tabla Enpleados
Set Db = OpenDatabase ([Link] & "\Empleados .accdb")
Set retEmp = [Link] ("SELECT * FROM Empleados ORDER BY
Apellide, Nombre")
' Muestra 1a lista de empleados
Do While Not retimp. EO?
Set m_Button = m_Sarra.[Link] (yp
With m_Button
If retEmp("Tratamiento") = "Sra" Or retemp("Tratamiento")
"srta" Then
jsoBarfopup, Temporary:
msocontrolButton)
-Pacerd = 2148
Else280 VBA Excel 2013
Programacl6n en Excel: macros y lenguaje VBA
-FaceId = 2103
End Tf
;Caption = UCase(rstEmp("Apellido")) & " " & retEnp("Nombre")
Legajo = rstEmp("Legajo")
Onaction = "Mostrar_Rmpleado(" & Legajo & ")"
Bnd With
retEmp .MoveNext
Loop,
' Cherra los objetos Access
[Link]
Db. Close
End sub
8.6 Cédigo del médulo ProcAction
Sub Ajuete()
* ajusta el zoom al contenido
+ del rango llamado *NotaDeGastos*
[Link] Reference: ~"INFORME GASTOS"
[Link] = True
Range ("EMPLEADO") . Select
End Sub
Sub Mostrar_Empleado(Legajo As Long)
Dim Db AS Database
Dim rstEmp As Recordset
Dim strsqi As String
+ abre la tabla "Empleados!
Set Ub = OpenDatabase ([Link] & "\[Link]")
strSql = "SELECT * FROM Empleados WHERE [NunEmpleado] = " & NumEmp
Set retimp - Db. openRecordeet (et rSql)
+ muestra las coordenadas del empleado seleccicnado
Range("EMPLEADO") = UCase (rstmp("Apellido")) & " " & retEmp(*Nombre")
Range(*Funcién") = rstEmp("Cargo")
Range("Poblaci6n") = rstEmp ("Municipio")
+ Cierra los objetos acc
[Link]
Db. Close
End sub
Sub Fuente ()
' Wuestra el cuadro de didlogo "Fuente"
Application .Dialogs (x1DialogFornatFont) .show
End Sub
© Eations ENI- All rights reservedMejoras en Ia interfaz de usuario
Capitulo 7
281
Sub Bordes()
"muestra
Application.
End Sub
1 cuadro de didlogo "Bordes"
Dialogs(x1DialogBorder) . Show
Sub Tranas()
' Nuestra
Application.
End sub
el cuadro de diélogo "Tramas"
Dialogs(x1DialogPatterns) .Show
Sub GuardarCono()
1 cuadro de digiogo Guardar como
Application.
Bnd Sub
Dialogs(x1DialogSaveas) . Show
Sub VistaPreliminar()
‘vista preliminar
‘ThieWorkbook. PriatPreview
End Sub
Sub Imprimir ()
' Impresién de 1a hoja de c&lculo
ActiveSheet .
End sub
PrintOut283
Capitulo 8
Administracién de eventos
1. Presentacién
Un evento es una accién del usuario o del sistema reconocido por un objeto
de Microsoft Excel. El evento desencadena un procedimiento, asociado al
evento del objeto activo.
Estos procedimientos le permiten asociar un cédigo personalizado en respues-
ta a unevento que se produce en un objeto Excel (libro, hoja, formulario, gr4-
fico, etc.)
Objeto T
x EventoA Cédigo
Intercepcion x EventoB Cédigo
del evento x EventoC Codigo
e /
Identificacion
del objeto Objeto 2
Accion del usuario x EventoA Codigo
x EventoC Cédigo284 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
2. Escritura de eventos
2.1 Eventos de libro, de hoja o de formulario
Usted puede acceder a los procedimientos de eventos asociados a un objeto de
la siguiente manera:
DEn la ventana Explorador de proyectos, haga doble clic en el objeto de-
seado (libro, hoja o formulario) para hacer aparecer la ventana de cédigo
correspondiente.
[Abra la lista desplegable a la izquierda de la ventana de cédigo y seleccione
Workbook, Worksheet o UserForm, segiin el objeto seleccionado.
fTambién puede seleccionar un evento vinculado al objeto seleccionado en la
lista desplegable de la derecha, para asociarle un cOdigo personalizado.
jObservacion
La ejecucion de los proceaimientos de eventos, se puede desactivar en
cualquier momento asignando el valor False a la propiedad EnableEvents del
objeto Application.
© Editions ENI - All rights reserved286 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
2.2 Eventos del objeto Application
Se necesitan tres etapas para la escritura y ejecucién de los eventos del objeto
Application.
Etapa 1
QInserte un médulo de clase:
Insertar - Médulo de clase
o abra la lista BELT] y haga clic en Médulo de clase.
[Una vez insertado el médulo, as{gnele un nombre.
Ejemplo
Dele el nombre ObjApplication al modulo de clase.
Etapa 2
GEn el médulo de clase, cree un objeto Application con el siguiente cédigo:
Public WithEvents NomObjeto As Application
Ejemplo
Creacién del objeto MiAplicacién como aplicacién.
—f Public WithEvents MiAplicacion As Application
El objeto asf creado queda disponible en la lista de la izquierda del médulo.
[Seleccione el objeto creado en la lista de la izquierda del médulo y luego se-
leccione el evento esperado en la lista de la derecha. Escriba el cédigo de los
procedimientos que desea generar.
© Editions EN! - All rights reserved288
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Diferencia = Diferencia +1
Loop
' Reactivar eventos y alertas
[Link] = True
[Link] - True
End Sub
Etapa 3
TActive un médulo cualquiera y conecte el objeto declarado en el médulo de
clase con el objeto Application para las siguientes instrucciones:
Dim NomVariable As New NorModuloDeClase
Sub NomProced (|
Set [Link] = Application
End sub
Ejemplo
Agregue el siguiente cédigo en el médulo Declaraciones.
option Explicit
Dim app As New Objapplication
Sub InicializaMiAplicacion ()
Set [Link] = Application
End sub
Finalmente, lame al procedimiento InicializaMiApilicacion al abrir el libro
(médulo de clase ThisWorkbook).
Private Sub Workbook_Open |)
InicializaMiAplicacion
End Sub
Cuando se abra el libro, se ejecutarén automaticamente los procedimientos de
eventos creados durante la etapa 2 y se agregaran los libros o las hojas. Estos
procedimientos se desactivardn al cerrar el libro.
© Eattions ENI - All rights reserved289
Administracién de eventos
Capitulo 8
2.3 Evento asociado a un grafico incrustado
La coleccién Charts (del objeto Workbook) contiene todos los graficos del li-
bro especificado.
Se necesitan tres etapas para la escritura y la ejecucién de los eventos asocia-
dos a un gréfico incrustado.
Efapa 1
Qilnserte un médulo de clase:
Insertar - Médulo de clase
oabra la lista y haga clic en Médulo de clase.
[Una vez insertado el médulo, asignele un nombre.
Ejemplo
Dele el nombre ObjGraficos al modulo de clase.
Etapa 2
GEn el médulo de clase, cree un objeto grafico para el siguiente cédigo:
Public WithEvents NomObjeto As Chart
Elemplo
Creacién del objeto llamado Chartl como grafico incrustado.
| Public WithEvents Chart1 As Chart
El objeto asi creado queda disponible en la lista de la izquierda del médulo.
[Seleccione el objeto creado en la lista de la izquierda del médulo y luego se-
eccione el evento esperado en la lista de la derecha. Escriba el cédigo de los
procedimientos que desea generar.290
VBA Excel 2013
Programaci6n en Excel: macros y lenguaje VBA
Ejemplo
Creacién de dos procedimientos de eventos: uno desactiva el grafico, el
otro especifica sus dimensiones.
Option Explicit
Public WithEvents Chart1 As Chart
Private Sub Charti_Deactivate()
Dim Respuesta As String
+ cada vez que se desactiva el gréfico
‘ge pregunta si hay que guardar el libro
Respuesta = MsgBox ("ZGuardar los cambios?", vbYesNo)
If Respuesta = vbYes Then [Link]
End Sub
Private Sub Charti_Resize|)
Dim Grafico As Object
* Cada vez que cambia el tamafio del grafico
* se muestran la primera y la Gltima celda oculta
Set Grafico = Worksheets (2) .chartObjects (1)
MsgBox "Este gréfico oculta la celda: " _
& [Link] _
& Chr(13) & “hasta la celda: " _
& [Link] Address
End Sub
Etapa 3
DActive un médulo cualquiera y conecte el objeto declarado en el médulo de
clase con el objeto grafico incrustado para las siguientes instrucciones:
Dim NomVariable As New NowModuloDeClase
Sub NomProced ()
Set [Link] =
Worksheets (HojaDeGrafico) .
Chartobjects (NumeroDeGraf ico} .Chart
End sub
(© Eattions ENI- All rights reserved291
Administracién de eventos
Capitulo &
Elemplo
Para asociar los eventos al primer grGfico de la segunda hoja de calculo,
agregue el siguiente cédigo en el médulo Declaraciones.
Dim obj As New ObjGraficos
Sub InicializaGrafico()
Set obj.Chart1 = Worksheets (2) .ChartObjects (1) .Chart
End sub
Finalmente, llame al procedimiento InitMiAplicacion al abrir el libro (mébdulo
de clase ThisWorkbook).
Private Sub Workbook_Open()
InicializaGrafico
End Sub
Al abrir este libro, los procedimientos creados durante la etapa 2 se ejecutarén
autométicamente y se redimensionaré o se desactivard el grafico situado en la
segunda hoja de cdlculo. Estos procedimientos se desactivardn al cerrar el libro.
. Eventos del objeto Application
AfterCalculate
Ocurre después del recélculo de los formularios del libro.
NewWorkBook
Ocurre al crear un nuevo libro.
Protected ViewWindowActivate
Ocurre al activar una ventana protegida.
Protected ViewWindowBeforeClose
Ocurre inmediatamente antes de cerrar una ventana protegida o un libro
dentro de una ventana protegida.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.Administracién de eventos
Capitulo 8
293
SheetFollowHyperlink
Ocurre cuando el usuario hace clic en un hipervinculo en Microsoft Excel.
SheetPivotTableAfterValueChange
Ocurre cuando se modifica o recalcula una celda o rango de celdas de una
tabla dindmica.
Sheet Pivot TableBeforeAllocateChanges
Ocurre al actualizar cambios en una tabla dinamica.
SheetPivotTableBeforeCommitChanges
Ocurre antes de validar cambios en una tabla dinamica vinculados a un ori-
gen de datos OLAP.
SheetPivotTableBeforeDiscardChanges
Ocurre antes de descartar cambios en una tabla dinémica.
SheetPivotTableUpdate
Ocurre al actualizar la hoja de informe de una tabla dindmica.
SheetSelectionChange
Ocurre cuando cambia la seleccién en cualquier hoja de célculo (el eventono
ocurte si la selecci6n se hace sobre una hoja de grafico).
WindowActivate
Ocurre al activar una ventana de libro.
WindowDeactivate
Ocurre cuando se desactiva una ventana de libro.
WindowResize
Ocurre al cambiar el tamafio de una ventana de libro.294
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
WorkbookActivate
Ocurre cuando se activa un libro.
WorkbookAddinInstall
Ocurre cuando se instala un libro bajo la forma de una macro complemen-
taria.
WorkbookAddinUninstall
Ocurre cuando se desinstala una macro complementaria.
WorkbookAfterSave
Ocurre después de guardar un médulo de clase.
WorkbookAfterXMLExport
Ocurre después de exportar un archivo XML.
WorkbookAfterXMLImport
Ocurre después de importar un archivo XML.
WorkbookBeforeClose
Ocurre justo antes de cerrar un libro.
WorkbookBeforePrint
Ocurre antes de imprimir un libro abierto.
WorkbookBeforeSave
Ocurre antes de guardar un libro abierto.
WorkbookBeforeXMLExport
Ocurre antes de exportar un archivo XML.
WorkbookBeforeXMLImport
Ocurre antes de importar un archivo XML.
© Editions ENI- All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.303
Capitulo 9
Depuracién y administracién
de errores
. Diferentes tipos de error
Se distinguen diferentes tipos de error en el lenguaje VBA:
— Enores de sintaxis.
— Errores de compilacion.
— Errores de ejecuci6n.
~ Enrores de l6gica.
Errores de sintaxis
Los errores de sintaxis se detectan autométicamente a medida que se intro-
duce el cédigo en VBA.
Para activar la comprobacién de sintaxis, en el ment Herramientas, selec-
cione Opciones, luego seleccione la ficha Editor y marque la casilla Com-
probacién de sintaxis automatica.304 VBA Excel 2013
Programacién en Excel: macros y le!
ae ee OL oF
[Workbook =| [shectActivate =
Dim rag is Range
Nuestra un mensaje si 1s noja activa
es el resumen de ventas
on Error GoTo Erreur
If [Link] = "Resumen"
Misra
i Error de compliadén:
5 ‘Se esperabai Then 0 GoTo.
(] _ ons
bserva
Los errores de sintaxls no corregidos provocarén un error de compilacién, de
ahi el mensaje que aparece,
1.2 Errores de compilacién
Los errores de compilacién se detectan cuando Excel trata de compilar el cédi-
0.
El cédigo VBA puede compilarse de dos maneras:
- Bajo demanda, al seleccionar la opcidn Compilar VBAProject del ment
Depuracién. En este caso, el codigo se compila en su totalidad.
- Autométicamente al ejecutar el cédigo. En este caso, solamente se compi-
la el cédigo contenido en los procedimientos cuando se llaman por primera
vez. Los procedimientos que no se llaman, no se compilardn.
© Edtions ENT - All rights reservedDepuracién y administracién de errores
Capitulo 9
|Observacién
Se recomienda compilar el programa antes de ejecutarlo para ganar tiempo
enla actualizacién,
Elemplo
ese cused)
Private Sub Workbook Sheet Activate (ByVal $h As Object
Dim rag 4s Range
' Muestra un rensaje si la hoja activa
On Error GoTo Err@iaehega Ete
Tf [Link] = "Re:
HagBox "Resume:
Set rng = Vorkd
End It
On Error GoTo 0
Es posible anticipar los errores de ejecucién debidos a las variables no decla-
radas usando /a instruccién Option Explicit. Si trata de usar un nombre de va-
tlable no declarado, se produce un error durante la compllacién,
1.3 Errores de ejecucién
Los errores de ejecucién se detectan cuando Excel trata de ejecutar el cédigo.
Una instrucci6n, una operacion, una llamada a una funci6n, etc. invalidas,
provoca un error de ejecucion. Por ejemplo, el uso de un indice erréneo en una
coleccién o la asignacién de un valor no numérico a una variable numérica
puede provocar un error de ejecucin.306 VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
Private Sub Yorkbook SheetActivate (ByVal 8h As Object)
Dim rng as Range
{ Muestra un mensaje si la hoda activa
es el resumen de ventas
If [Link] = "Kesuen” Then
MsgBox "Resupen de todas las hojas ", vbExclemation
Set rng = Worksheets ("Enero") . Range ("A1:G11")
End Is
Bate Sub (oe
‘Se ha procucido ol ero en tiempo de ejecucn:
Subindice fuera det intervalo
Frake aa
1.4 Errores de légica
Los errores de logica tienen que ver con errores de razonamiento 0 con una
mala traduccién de un razonamiento en cédigo VBA. Por ejemplo, un algorit-
mo de célculo puede producir un error en el resultado sien su transcripcién a
VBA, se omite o se traduce mal una operacién o el algoritmo es erréneo.
Los errores de ldgica son los ms dificiles de detectar. En general, no producen
un error de ejecucién: pero producen un resultado distinto del esperado.
Para analizar este tipo de error, el entorno VBE dispone de herramientas de de-
puracién que permiten ejecutar el cddigo paso a paso y verificar el contenido
de las variables a medida que se desarrolla el programa.
© Editions ENI - All rights reserved308
VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA
3, Interrumpir (método abreviado de teclado [Ctrl] [Pausa]); interrumpe la
ejecucién del programa en curso y pasa al modo Interrupcién.
4, Restablecer: borra el contenido de las variables y reinicializa el proyecto.
5. Alternar punto de interrupcién (método abreviado de teclado [F9]): de-
fine o elimina un punto de interrupcién en la Ifnea actual; el cédigo se ejecu-
tard hasta el punto de interrupcién, y luego pasaré al modo depuracion,
6, Paso a paso por instrucciones (método abreviado de teclado [Fé]): ejecu-
ta el cédigo haciendo una interrupcién después de cada instruccién del pro-
cedimiento en curso y de los procedimientos llamados.
7, Paso a paso por procedimientos (método abreviado de teclado
[Mayds][F8]): ejecuta el cGdigo haciendo una interrupcién después de cada
instruccién del procedimiento en curso (las instrucciones de los procedimien-
tos Ilamados se ejecutan de manera continua).
8, Paso a paso para salir (método abreviado de teclado [Ctrl] [Mayas] [F8]):
ejecuta en forma continua las restantes Ifneas del procedimiento en curso.
9, Ventana Locales: muestra los valores de las variables locales del procedi-
miento.
10. Ventana Inmediato (método abreviado de teclado [Ctrl] G): muestra la
ventana Inmediato, que permite ejecutar una instruccién de forma interacti-
va.
11. Ventana Inspeccién: muestra la lista de las variables de una inspeccién.
12. Inspeccién rapida (método abreviado de teclado [Mayis] [F9]): muestra
el valor de la expresi6n seleccionada.
13. Pila de Ilamadas (método abreviado de teclado [Ctrl] L): muestra la lista
de Ilamadas de procedimiento cuya ejecucién estd en curso.
© Eattions ENI - All rights reservedaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.433
indice
A ce
manejar desde Excel, 327
Addins - coleccién, 98
API, 367
ejemplos de uso, 371
lista de funciones API Windows, 370
llamar a una funcién de la API Windows, 369
Application - objeto, 97
Véase también Objeto Application
Archivo
crear un archivo de texto, 403
Dir, 420
leer un archivo de texto, 402
nombre de un archivo, 420
Areas, 176
Argumentos con nombre, 57
AutoCorrect - objeto, 97
Automation, 315
funcién CreateObject, 317
funcién GetObject, 317
AutoRecover - objeto, 97
B Barra de herramientas de acceso répido
agregar un comando, 262
Barra de herramientas EstAndar, 42
Barras de comandos, 264
controles, 264
crear, 264
eliminar, 265
Barras de herramientas personalizadas, 262VBA Excel 2013
Programacién en Excel: macros y lenguaje VBA.
Biblioteca de objetos, 112, 315
Cardcter de continuacién, 92
Chart - objeto, 289
Véase también Objeto Chart
Charts - coleccién, 144
Ciclos
Véase Estructuras en ciclo
Cinta
cédigo VBA de personalizacién, 257
etiquetas XML, 241
ejemplo de cinta personalizada, 253
imagenes de la galeria de iconos de Microsoft Office, 249
personalizacién de la cinta, 236
personalizacién mediante la coleccién CommandBars, 261
Clases, 96
Cédigo VBA, 19
entorno Visual Basic Editor, 19
grabacién de macros, 19
Coleccién, 95, 100, 104
Addins, 98
ChartObjects, 161
Charts, 144
COMAddiIns, 98
CommandBars, 98, 144, 235
Comments, 161
CustomDocumentProperties, 144
CustomProperties, 161
CustomViews, 144
Dialogs, 98
FileExportConverters, 98
FormatConditions, 193
HPageBreaks, 161
© Eatons ENI- All rights reservedindice
435
Hyperlinks, 161
listObjects, 162
Names, 98, 144, 162
ODBCEnrrors, 98
OLEDBErrors, 99
OLEObjects, 162, 337
PivotFields, 193
FivotTables, 162, 193
QueryTables, 162
RecentFiles, 99
Scénarios, 162
Shapes, 162
SlicerCaches, 193
SmartArtColors, 99
SmartArtLayouts, 99
SmartArtQuickStyles, 99
SparklineGroups, 193
‘VPageBreaks, 162
Watches, 99
Windows, 99, 145
Workbooks, 99
Worksheets, 99, 145
Colecci6n Charts
evento, 289
COMAddins - coleccién, 98
Comentarios, 92
CommandBars, 235
CommandBars - coleccién, 98, 144
Comments - coleccién, 161
Condiciones
IE... Then, 77
IE... Then... Else... End If, 78
If... Then... Elself..., 79
Select Case, 80
Véase también Estructuras de decisionaa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.aa
You have either reached a page that is unavailable for viewing or reached your viewing limit for this
book.I ACe TRIAD CLR ICTATOCdS
Redes, sistemas, programacién, SGBDR, tecnologias Internet o intranet, informatica industrial... Los
Ambitos que abarca la informatica técnica siguen la evolucién de las tecnologias, siendo cada dia
ms variados y complejos. Esta evolucion amplia los campos de aprendizaje de los nuevos expertos e
impone alos profesionales una continua adaptacion de sus conocimientos,
Redactados por formadores profesionales y consultores, los libros de la coleccién Recursos
informaticos le aportan una ayuda eficaz para descubrir y aplicar diferentes técnicas. La presentacién
de los conceptos basicos, de numerosos ejemplos y los consejos de expertos garantizan la calidad y
riqueza de cada uno de estos libros.
VBA Excel 2013 Michele ANELOT
~ 7 Formadora y especialista en el de-
Programacién en Excel: Macros y lenguaje VBA sarrollo de aplicaciones ofimaticas,
Completo y, a la vez, simple y practico, este libro esta dirigido _Michéle AMELOT ayuda desde hace
més de quince afios a las empresas
a usuarios de eg ya desarrolladores que deseen crear aplica--- € sus proyectos tnformaticos, Es
ciones amigables, fiables y potentes este profundo conocimiento de las
Ademés de los elementos basicos del lenguaje VBA (estructura del __necesidades de los usuarios y de los
lenguaje y conceptos de programacién orientada a objetos) que _desarTelladores, lo que le permite,
permitirn automatizar el manejo de sus dates, aprenderd a crear @2V des lbros (VBA Excel y
formularios, a personalizar la interfaz de Excel, especialmente Citar el aprendizajey lapréctica on
la cinta de opciones, a comunicarse con las otras aplicaciones de {a prograracién en lengusje VBA
Office, a importar o publicar paginas web y archivos XML y a
aprovechar las funciones API de Windows.
En [Link]:
Cada capitulo incluye numerosos ejemplos. El libro concluye con Cédigo fuente de los
un ejercicio integrador que lo guiaré a través de la creacién com- ejemplos del libro.
pleta de una aplicacién Excel.
ISSN 1629-7458
Los ejemplos incluidos en este libro pueden descargarse desde la KSN2600-7458 |
web de Ediciones ENI, [Link].
EE
Presentacion + El lenguaje VBA + La programacién de objetos en Excel
Objetos de Excel - Cuadros de didlogo - Formularios « Mejoras en la in-
terfaz de usuario + Administracion de eventos « Depuracién y administra-
ion de errores » Comunicacién con las aplicaciones Office 2013 + Inter-
net + Progremacién Windows + Codigo de una miniaplicacion + Anexos
9" 782746 ! 083875
AS ee Tet)