Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Excel For Masters - Cesar Oceda Samaniego (FreeLibros)
Excel For Masters - Cesar Oceda Samaniego (FreeLibros)
for Masters
Macros y Aplicaciones VBA
Excel for Masters - Macros y Aplicaciones VBA
Autores: César Miguel Oceda Samaniego
ISBN Nº 978-612-304-007-9
Hecho el Depósito Legal en la Biblioteca Nacional del Perú N.° 2014-08982
Prohibida la reproducción parcial o total, por cualquier medio o método de este libro sin
previa autorización de la Empresa Editora Macro E.I.R.L.
CÉSAR MIGUEL OCEDA SAMANIEGO
Licenciado en Educación con mención en Informática por USIL, profesional Certificado en MCAS Microsoft
CertifiedApplicationSpecialist en Microsoft Office por Certiport. Autor de libros de Office 2003, Office
20007, Office 2010, Excel 2007, Excel 2010. Docente de: ISIL, SISTEMAS UNI, CEPS UNI COLEGIO LEON
PINELO.
Agradecimientos
Agradezco a mi amigo Herles Apari por la invitación y
colaboración de este libro.
Introducción
Microsoft Excel 2010, es una aplicación que está orientada a diversas áreas del conocimiento, cada vez
se incluye nuevas características de automatización para facilitar la labor y generar lo que Microsoft
denomina productividad, es decir manejar Excel con eficiencia produciendo libros con cuadros
estadísticos, gráficos, tablas dinámicas conectadas a servidores, formularios automatizados y al final
crear macros con programación Visual Basic ( VBA ).
Este es el objetivo del libro presentar al usuario, las herramientas, comandos y funciones avanzadas que
le permitan generar productividad.
Desde el primer capítulo, iniciamos con la automatización usando plantillas y controles de formularios,
seguimos con funciones avanzadas hasta pasar a la conexión de bases de datos, finalmente llegamos
a las macros, instrucciones simplificadas para crear funciones definidas por el usuario y controles con
programación Visual Basic.
Cerramos el libro con programación VBA Visual Basic for Application, con procedimientos y ventanas de
formularios
Cada capítulo presenta un laboratorio práctico para que pueda realizar casos prácticos con ejemplos y
plantillas.
Espero que esta publicación responda a las necesidades de usuarios que buscan información práctica y
avanzada
Atte
Los autores
Índice
Capítulo 1
CREANDO SOLUCIONES A MEDIDA .............................................................................................15
Plantillas ...........................................................................................................................................15
Crear plantillas personalizadas...................................................................................................21
Formularios y controles ...................................................................................................................23
Controles ....................................................................................................................................25
Formato de controles .................................................................................................................26
Laboratorio de práctica ....................................................................................................................30
Ejercicio 1: Crear plantillas personalizadas ................................................................................30
Ejercicio 2: Crear plantillas personalizadas ................................................................................35
Ejercicio 3: Crear formularios .....................................................................................................36
Ejercicio 4: Crear formularios .....................................................................................................40
Capítulo 2
HERRAMIENTAS DE ANÁLISIS ......................................................................................................45
Tabla de datos ..................................................................................................................................45
Tablas de datos de una entrada .................................................................................................45
Tabla de datos de dos variables..................................................................................................45
Cálculos de las tablas de datos ...................................................................................................46
Crear una tabla de datos de una variable ........................................................................................46
Agregar una fórmula a una tabla de datos de una variable.......................................................47
Crear una tabla de datos de dos variables .......................................................................................47
Acelerar los cálculos en una hoja de cálculo con tablas de datos...............................................48
Borrar una tabla de datos ..........................................................................................................49
Creación de tablas con expresiones o funciones de tipo XY ............................................................49
Buscar Objetivo ................................................................................................................................50
Uso de Buscar Objetivo con funciones ........................................................................................50
Uso de buscar objetivo en fórmulas ...........................................................................................52
Escenarios ........................................................................................................................................53
Crear escenarios ........................................................................................................................53
Informes de resumen de escenario .............................................................................................54
Crear un escenario......................................................................................................................54
Mostrar un escenario .................................................................................................................55
Crear un informe resumen de escenario.....................................................................................55
Informe de escenario ..................................................................................................................55
Herramienta Solver ..........................................................................................................................56
Cargar el complemento Solver ...................................................................................................56
Ejemplo de una evaluación de Solver .........................................................................................57
Definir un modelo de optimización .............................................................................................58
Celda objetivo .............................................................................................................................58
Celdas cambiantes ......................................................................................................................58
Restricciones ...............................................................................................................................58
Defina y solucione un problema .................................................................................................58
Agregar una restricción .............................................................................................................59
Laboratorio de práctica ....................................................................................................................61
Ejercicio 1: Creación de Tabla de 2 entradas ..............................................................................61
Ejercicio 2: Creación de Tabla en una expresión .........................................................................62
Ejercicio 3: Doblar Capital ..........................................................................................................63
Ejercicio 4: Solver Método Simplex .............................................................................................64
Capítulo 3
HERRAMIENTAS DE AUDITORÍA ..................................................................................................67
Evaluar fórmulas ..............................................................................................................................67
Buscador de Rangos ...................................................................................................................67
Evaluar fórmulas ........................................................................................................................68
Comentarios .....................................................................................................................................70
Insertar comentarios ..................................................................................................................70
Revisar sus comentarios .............................................................................................................71
Editar un comentario ..................................................................................................................72
Eliminar un comentario ..............................................................................................................72
Imprimir los comentarios............................................................................................................73
Auditoría de fórmulas ......................................................................................................................74
Rastrear precedentes..................................................................................................................74
Rastrear dependientes................................................................................................................75
Quitar flechas .............................................................................................................................75
Gestión de Errores ...........................................................................................................................75
Valores de error ..........................................................................................................................75
Autocorrección de errores ..........................................................................................................76
Corrección de errores .................................................................................................................76
Rastrear error .............................................................................................................................77
Activar o desactivar reglas de revisión de errores ......................................................................77
Laboratorio de práctica ....................................................................................................................78
Ejercicio 1: Evaluar fórmulas ......................................................................................................78
Ejercicio 2: Evaluar fórmulas ......................................................................................................79
Ejercicio 3: Comentarios .............................................................................................................80
Ejercicio 4: Auditoría de fórmulas...............................................................................................82
Ejercicio 5: Comprobar errores ...................................................................................................84
Capítulo 4
COLABORAR CON OTROS USUARIOS ..........................................................................................87
Protección de rangos, hojas y libros.................................................................................................87
Protección del libro .....................................................................................................................87
Marcar como final (Libro sólo de lectura) ..................................................................................88
Cifrar con contraseña (Contraseña para el libro) .......................................................................89
Proteger hoja actual (Proteger la hoja) ......................................................................................90
Proteger la estructura del libro (Proteger la estructura hoja y ventanas) ..................................93
Restringir permisos por personas (Permisos a personas) ...........................................................94
Compartir Libro ..........................................................................................................................97
Permitir que los usuarios modifiquen rangos por contraseña ....................................................98
Laboratorio de práctica ....................................................................................................................99
Ejercicio 1: Proteger Hoja ...........................................................................................................99
Ejercicio 2: Desbloquear los Sueldos ...........................................................................................100
Ejercicio 3: Ocultar las fórmulas .................................................................................................101
Ejercicio 4: Proteger con contraseña ..........................................................................................101
Capítulo 5
ACCESO A DATOS ...........................................................................................................................103
Utilizar Microsoft Query ...................................................................................................................103
Origen de Datos ..........................................................................................................................103
Obtener más información sobre Microsoft Query ......................................................................103
Tipos de bases de datos a los que se puede tener acceso ..........................................................104
Microsoft SQL Server Analysis Services.......................................................................................104
Proveedor OLAP ..........................................................................................................................104
Controladores ODBC .......................................................................................................................104
Seleccionar datos de una base de datos .....................................................................................104
Conectar con un origen de datos .....................................................................................................105
¿Qué es un origen de datos? ......................................................................................................105
Definir un origen de datos mediante Microsoft Query ....................................................................105
Asistente para consultas para definir una consulta .........................................................................108
Asistente para consultas .............................................................................................................108
Seleccionar datos específicos de un campo ................................................................................109
Abrir una consulta guardada desde Excel...................................................................................109
Trabajar con los datos en Excel ........................................................................................................109
Aplicar formato a los datos recuperados .........................................................................................110
Actualizar datos externos.................................................................................................................111
Laboratorio de práctica ....................................................................................................................112
Ejercicio 1: Acceso a una tabla de Access ...................................................................................112
Ejercicio 2: Actualizar los datos de la tabla ................................................................................113
Ejercicio 3: Consulta de campos específicos ...............................................................................114
Ejercicio 4: Crear una tabla dinámica .........................................................................................116
Ejercicio 5: Crear un gráfico de la tabla dinámica ......................................................................118
Capítulo 6
BASE DE DATOS .............................................................................................................................. 119
Tablas y Filtros ..................................................................................................................................119
Insertar una tabla .............................................................................................................................119
Filtros avanzados ..............................................................................................................................120
Criterios en una columna ............................................................................................................121
Criterios en varias columnas.......................................................................................................121
Criterios en varias columnas en las que debe cumplirse alguno de los criterios ........................121
Criterios en los que cada uno de los conjuntos incluye criterios para varias columnas ..............122
Criterios en los que cada conjunto incluye criterios para una columna ......................................122
Criterios para buscar valores de texto que incluyen algunos caracteres pero no otros..............122
Criterios creados como resultado de una fórmula ......................................................................123
Filtrar buscando valores superiores a la media de todos los valores incluidos en el rango ........123
Funciones de base de datos .............................................................................................................124
Ejemplo de la Función BDCONTAR ..............................................................................................124
Ejemplo de la Función BDSUMA .................................................................................................124
Laboratorio de práctica ....................................................................................................................126
Ejercicio 1: Convertir una lista de rango en una Tabla ................................................................126
Ejercicio 2: Activar Subtotales ....................................................................................................127
Ejercicio 3: Uso de Referencias especiales de Celda ...................................................................128
Ejercicio 4: Filtros Avanzados .....................................................................................................129
Ejercicio 5: Base de Datos ...........................................................................................................130
Capítulo 7
TABLAS Y GRÁFICOS DINÁMICOS ................................................................................................131
Tablas dinámicas ..............................................................................................................................131
Elementos de una tabla dinámica ..............................................................................................133
Insertar una Tabla Dinámica.............................................................................................................134
Distribuir los campos en la tabla dinámica.................................................................................135
Estilos de tabla y formatos de números......................................................................................150
Gráficos dinámicos .....................................................................................................................152
Laboratorio de práctica ....................................................................................................................155
Ejercicio 1: Crear tablas dinámicas simples ................................................................................155
Ejercicio 2: Crear tablas dinámicas simples ................................................................................156
Ejercicio 3: Crear tablas dinámicas simples ................................................................................156
Ejercicio 4: Aplicar formatos de números ...................................................................................157
Ejercicio 5: Agrupar fechas .........................................................................................................157
Ejercicio 6: Expandir y contraer ..................................................................................................159
Ejercicio 7: Modificar la distribución de las tablas......................................................................160
Ejercicio 8: Añadiendo segmentación de datos ..........................................................................161
Ejercicio 9: Añadiendo columna de porcentajes .........................................................................163
Ejercicio 9: Insertar gráficos .......................................................................................................164
Ejercicio 10: Insertar gráficos .....................................................................................................167
Capítulo 8
MACROS ..........................................................................................................................................169
Macros .............................................................................................................................................169
La ficha Programador .................................................................................................................170
Ámbito de las macros .................................................................................................................171
Grabar una macro ......................................................................................................................171
Ejecutar la macro .......................................................................................................................172
Guardar un libro con macros ......................................................................................................173
Referencias de celdas en una macro ................................................................................................174
Referencia absoluta ....................................................................................................................174
Referencia relativa......................................................................................................................174
Cambiar las referencias al grabar la macro ...............................................................................175
Ver la macro en su editor............................................................................................................175
Asociar las macros a objetos ............................................................................................................176
Asociar macros a autoformas o imágenes .................................................................................176
Asociar macros a controles de formulario ..................................................................................177
Asociar macros a comandos de la barra de acceso rápido .........................................................177
Crear Fichas, Grupos y Comandos para Macros .........................................................................179
Laboratorio de práctica ....................................................................................................................182
Ejercicio 1: Crear una macro sencilla de ámbito general............................................................182
Ejercicio 2: Crear una macro sencilla de ámbito general............................................................183
Ejercicio 3: Crear una macro para abrir una plantilla .................................................................184
Ejercicio 4: Crear una macro para abrir una plantilla .................................................................184
Ejercicio 5: Asignar macros a comandos ....................................................................................185
Ejercicio 6: Crear una macro sencilla de ámbito local ................................................................187
Ejercicio 7: Crear una macro sencilla de ámbito local ................................................................188
Ejercicio 8: Asignar macros a objetos .........................................................................................189
Ejercicio 9: Asignar macros a Inicio rápido .................................................................................189
Ejercicio 10: Grabar un libro habilitado para macros .................................................................190
Capítulo 9
MACROS Y APLICACIONES ............................................................................................................191
Laboratorio de práctica ....................................................................................................................191
Ejercicio 1: Macros y gráficos .....................................................................................................191
Ejercicio 2: Macros y subtotales .................................................................................................193
Ejercicio 3: Macros y Filtros avanzados ......................................................................................198
Capítulo 10
FUNCIONES DEFINIDAS POR EL USUARIO ..................................................................................203
El Editor de VBA ...............................................................................................................................203
Ingresar al editor ........................................................................................................................203
Elementos del editor ...................................................................................................................204
Administrar módulos ..................................................................................................................207
Personalizar el editor ..................................................................................................................209
Creación de funciones personalizadas .............................................................................................210
Crear una función personalizada ................................................................................................210
Sintaxis .......................................................................................................................................211
Empleando más de un argumento .............................................................................................213
Emplear rangos como argumentos ............................................................................................214
Usar argumentos opcionales ......................................................................................................215
Agregar descripción a las funciones ...........................................................................................217
Crear categorías y asignar categorías a funciones .....................................................................218
Laboratorio de práctica ....................................................................................................................220
Ejercicio 1: Reconocer el editor de VBA ......................................................................................220
Ejercicio 2: Agregar objetos al proyecto .....................................................................................221
Ejercicio 3: Grabar el libro con los objetos ..................................................................................222
Ejercicio 4: Crear funciones sencillas ..........................................................................................222
Ejercicio 5: Crear funciones con 2 o más argumentos ...............................................................224
Ejercicio 6: Crear funciones con rangos ......................................................................................226
Ejercicio 7: Crear funciones con argumentos opcionales ............................................................228
Ejercicio 8: Organizar sus funciones en Categorías ....................................................................229
Capítulo 11
COMPLEMENTOS ........................................................................................................................231
Complementos .................................................................................................................................231
Revisar los complementos disponibles .......................................................................................231
Cargar Complementos ................................................................................................................232
Crear complementos para funciones UDF ..................................................................................233
Distribuir un complemento .........................................................................................................234
Laboratorio de práctica ....................................................................................................................235
Ejercicio 1: Crear complementos ................................................................................................235
Ejercicio 2: Cargando el complemento .......................................................................................236
Ejercicio 3: Revisando el código ..................................................................................................237
Ejercicio 4: Distribuir complementos ..........................................................................................238
Capítulo 12
FUNDAMENTOS DE PROGRAMACIÓN ........................................................................................239
Insertando un Módulo Estándar ......................................................................................................239
Procedimientos ...............................................................................................................................239
Sintaxis .......................................................................................................................................239
Ejecutar un procedimiento .........................................................................................................241
Funciones .........................................................................................................................................241
Sintaxis .......................................................................................................................................242
Pasando argumentos a procedimientos ....................................................................................242
Cuadros de mensajes .......................................................................................................................244
MSGBOX .....................................................................................................................................244
INPUTBOX ...................................................................................................................................247
Variables, constantes y tipos de Datos .............................................................................................248
Variables .....................................................................................................................................248
Constantes ..................................................................................................................................250
Operadores ................................................................................................................................251
Tipos adicionales de variables..........................................................................................................252
Registros o Estructuras ...............................................................................................................252
Arreglos de Variables..................................................................................................................252
Arreglos Dinámicos.....................................................................................................................252
Sentencias Condicionales .................................................................................................................253
Sentencias If ...............................................................................................................................253
Sentencia If…Then…Else .............................................................................................................254
Sentencias Select Case ................................................................................................................255
Sentencias Repetitivas .....................................................................................................................257
Sentencias Do…Loop ...................................................................................................................257
Sentencia Do...Loop While/Until.................................................................................................258
Sentencia For...Next....................................................................................................................259
Laboratorio de práctica ....................................................................................................................261
Ejercicio 1: Crear procedimientos ...............................................................................................261
Ejercicio 2: Crear procedimientos con parámetros .....................................................................263
Ejercicio 3: Cuadros de mensaje .................................................................................................264
Ejercicio 4: Ingreso de datos .......................................................................................................268
Ejercicio 5: Sentencias Condicionales.........................................................................................271
Ejercicio 6: Estructuras repetitivas..............................................................................................275
Capítulo 13
MODELO DE OBJETOS ...................................................................................................................279
Modelo de objetos de Excel .............................................................................................................279
Trabajando con el objeto WORKBOOK .............................................................................................279
Abriendo Workbooks ..................................................................................................................279
Creando y Grabando libros de Trabajos .....................................................................................280
Cerrando los libros de trabajo ....................................................................................................281
Colección Worksheets ......................................................................................................................281
Objeto Worksheet .......................................................................................................................281
Trabajando con el Objeto RANGE.....................................................................................................282
Empleando Filas Numéricas e Índices de Columnas ..................................................................284
Utilizando la propiedad OFFSET..................................................................................................284
Eventos de Excel ...............................................................................................................................286
Eventos de libro ...............................................................................................................................287
Ejemplos de códigos asociados a eventos ..................................................................................287
Laboratorio de práctica ....................................................................................................................289
Ejercicio 1: Objeto Workbooks ....................................................................................................289
Ejercicio 2: Aplicación 1 ..............................................................................................................291
Ejercicio 3: WORKSHEETS ...........................................................................................................293
Ejercicio 4: Aplicación 2 ..............................................................................................................296
Ejercicio 5: Aplicación 3 ..............................................................................................................296
Ejercicio 6: RANGE ......................................................................................................................297
Ejercicio 7: CELLS y ACTIVECELL ..................................................................................................300
Ejercicio 8: Aplicación .................................................................................................................304
Ejercicio 9: Aplicación .................................................................................................................305
Capítulo 14
USERFORM .....................................................................................................................................307
UserForm .........................................................................................................................................307
Agregar un UserForm .................................................................................................................307
Métodos .....................................................................................................................................309
Controles ..........................................................................................................................................310
Control de Etiqueta (Label) ........................................................................................................310
Control Cuadro de Texto (TextBox)..............................................................................................311
Control Botón de Comando (CommandButton) ..........................................................................312
Casillas de Verificación (CheckBox) .............................................................................................312
Botones de Opción (OptionButton) ............................................................................................312
Marcos (Frame) ..........................................................................................................................313
Usar botones de opción dentro de un Marco .............................................................................313
Barras de desplazamiento .........................................................................................................314
Control Número ..........................................................................................................................314
Control Imagen (Image) .............................................................................................................315
Controles Cuadro Combinado y Cuadro de Listas (ComboBox / ListBox) ....................................315
Control Página Múltiple (MultiPage) ..........................................................................................316
Laboratorio de práctica ....................................................................................................................317
Ejercicio 1: Crear formularios básicos .........................................................................................317
Ejercicio 2: Crear formularios básicos .........................................................................................320
Ejercicio 3: Crear formularios básicos .........................................................................................322
Ejercicio 4: Aplicación .................................................................................................................325
Ejercicio 5: OLE AUTOMATION ....................................................................................................336
Capítulo 15
APLICACIONES CON BD .................................................................................................................339
Laboratorio de práctica ....................................................................................................................339
Ejercicio 1: Preparando el escenario ..........................................................................................339
CAP.
Creando soluciones
a medida 1
PLANTILLAS
Una plantilla es un modelo de libro que se crea y utiliza como base para crear otros libros similares.
Una plantilla puede incluir datos, formato, fórmulas e incluso macros.
Como ve en la figura, se tiene una plantilla de un Recibo por consumo (libro que ya tiene formatos y
fórmulas) en la cual usted invirtió tiempo y esfuerzo. Así, esta plantilla sirve de base para generar otros
Recibos por consumo para nuestros clientes.
15
Excel for Masters - Macros y Aplicaciones con VBA
Tipo Extensión
Plantilla de Excel *.xltx
Plantilla de Excel habilitada para macros. *.xltm
La plantilla es la mejor forma de estandarizar los diversos libros que emplea y permite reutilizar
soluciones que usted ya ha diseñado.
Puede emplear algunas de las plantillas con las que viene Excel 2010 y que están disponibles sin
necesidad de conexión a Internet, también descargar plantillas de Office.com para crear libros o incluso
crear sus propias plantillas y utilizarlas luego para generar nuevos libros.
1
3
La vista backstage oculta temporalmente su hoja de cálculo y muestra en una pantalla más grande los
grupos disponibles en los que se encuentran organizadas sus plantillas. Tiene 2 grupos para elegir:
• Plantillas disponibles
• Plantillas de Office.com
16
Capítulo 1: Creando soluciones a medida
En el grupo Plantillas disponibles, considere la siguiente tabla para elegir la plantilla adecuada:
Tipo Descripción
Plantillas de ejemplos
Las plantillas de ejemplos son grupos de plantillas que vienen al instalar Office. No es necesario
realizar ninguna instalación especial ni completar ningún proceso. En esta versión se manejan hasta
9 plantillas.
B
A
17
Excel for Masters - Macros y Aplicaciones con VBA
En las imágenes de la parte inferior, se muestran algunas de las plantillas del grupo Plantillas de
ejemplos.
Presupuesto Personal.xltx
Amortización de préstamo.xltx
Informes de gastos.xltx
18
Capítulo 1: Creando soluciones a medida
Mis Plantillas
Aquí se agrupan todas las plantillas descargadas del sitio Office.com. También muestra las plantillas
personalizadas generadas por un usuario.
B
A
19
Excel for Masters - Macros y Aplicaciones con VBA
Las plantillas de Office.com se muestran al crear un nuevo libro, en el grupo Plantillas de Office.com.
Los iconos que se muestran son categorías, es decir cada uno almacena más de una plantilla. Por
ejemplo, al seleccionar la categoría Facturas, se muestran todas las plantillas relacionadas a ese
tema:
20
Capítulo 1: Creando soluciones a medida
Recuerde que la plantilla se descarga en su equipo y abre automáticamente. La próxima vez que desea
crear otro libro basado en esa plantilla, ubíquela en el grupo Mis Plantillas.
La Ficha Mis plantillas contiene las plantillas que ha creado. Estas plantillas personalizadas se suelen
almacenar en la carpeta Plantillas, que normalmente se encuentra en:
En Windows XP:
C:\Documents and Settings\nombre_de_usuario\Datos de programa\Microsoft\
Grabar un libro como plantilla es un proceso tan simple como emplear un Guardar como; sin embargo,
debemos considerar que la plantilla a crear debe tener características que aseguren la performance y
utilidad real de la misma. Así, debe considerar los siguientes pasos:
1. Crear el libro.
2. Aplicar formatos.
3. Asegurar integridad de los datos.
4. Crear la plantilla.
En los siguientes temas se darán detalles de cada uno de los pasos a seguir.
21
Excel for Masters - Macros y Aplicaciones con VBA
Crear el libro
Esto incluye escribir el texto estándar a emplear, como títulos, encabezados de columnas y filas,
además de insertar las imágenes y objetos necesarios que mejoren la presentación.
En este paso también debe escribir las fórmulas que necesite aplicar.
Aplicar formatos
Una vez que se tiene el libro, debe aplicar todos los formatos que necesite: de celdas, de números y
condicionales. Por ejemplo, que los valores se muestren en millares con 2 decimales o que los totales
muestren el símbolo monetario.
22
Capítulo 1: Creando soluciones a medida
También debe validar que el usuario escriba datos correctos como fechas válidas o un número en un
rango determinado.
Crear la plantilla
Guardar el libro como plantilla asegura que esté disponible como modelo para crear otros basados en
él. Desde este paso puede personalizar la ubicación y clasificación de sus plantillas en su equipo.
FORMULARIOS Y CONTROLES
Un formulario es un libro diseñado con formato y estructura estándar que facilita la captura, la
organización, la edición de la información y puede ser asociado a celdas para tener fórmulas y funciones
que interactúen con ellas.
Los formularios contienen controles similares a los que encuentra en una ventana de Windows o de
una aplicación Web y que hacen más fácil el ingreso o edición de los datos, realizar una acción o
seleccionar una opción.
23
Excel for Masters - Macros y Aplicaciones con VBA
Entre los controles más comunes tenemos: los cuadros de lista, los botones de opción y los botones de
comando. Los controles también pueden ejecutar macros asignadas y responder a eventos, tales como
clics del mouse, mediante la ejecución de código de Visual Basic para Aplicaciones (VBA).
Para iniciar, es necesario saber dónde están los controles de formulario. Vamos a activar la ficha
Programador para ubicar dicha herramienta.
1. Haga clic en la Ficha Archivo y elija el comando Opciones.
2. Seleccione la opción Personalizar cinta de Opciones.
3. Active la ficha Programador.
Una vez activada la ficha Programador, realice el procedimiento para ver los controles disponibles:
1. Haga clic en la ficha Programador.
2. En el grupo Controles, despliegue las opciones del comando Insertar.
3. Ubique los elementos de Controles de formulario.
24
Capítulo 1: Creando soluciones a medida
CONTROLES
Vamos a conocer los principales controles que usted tiene para dibujar sus formularios. Es necesario
indicar que los controles ya cuentan con funcionalidad, es decir, si añade una casilla de verificación, este
control con un clic se activa y con otro se desactiva. Si añade un cuadro combinado, este desplegará sus
opciones al hacer clic sobre él.
Control Utilidad
En la imagen se muestran ejemplos de los controles Número, cuadro de Grupo, botón de opción,
cuadro de lista y casilla de verificación.
25
Excel for Masters - Macros y Aplicaciones con VBA
FORMATO DE CONTROLES
Como ya se indicó anteriormente, los controles tienen funcionalidad asociada. Un control reconoce el
clic que se hace sobre él y dependiendo del control puede ejecutar una macro, seleccionar una opción
o apagar una casilla.
Adicionalmente a esto, Excel permite modificar las propiedades de los controles y asociarlos a celdas
de su hoja de cálculo. Esto es muy importante ya que se pueden escribir fórmulas y emplear funciones
que trabajen con las celdas vinculadas a los controles, de esta manera al hacer clic sobre un control se
desencadenan cálculos y obtienen valores.
2. Modifique los valores necesarios. Con la opción Vincular con la celda relacione el control a una
celda.
Cada control tiene sus propias opciones de formato. En la imagen anterior se muestran las opciones
de un botón de opción.
26
Capítulo 1: Creando soluciones a medida
Si se vincula a una celda podrá ver cómo al hacer clic en el control, la celda vinculada cambiará.
En la imagen, la opción Mañana ha sido vinculada a la celda B9. Esta celda muestra el número 1 debido
a que está seleccionada la primera opción.
Así, podrá escribir una fórmula que permita identificar la opción seleccionada en el grupo de controles.
Por ejemplo, si el horario es Mañana se debe mostrar Auditorio y si es de Noche se debe mostrar
Salón de Charlas. La fórmula podrá ser:
=SI(B9=1;”Auditorío”;”Salón de Charlas”)
27
Excel for Masters - Macros y Aplicaciones con VBA
Al activar una casilla, la celda vinculada permite determinar si está activa (VERDADERO).
En caso de querer asignar un monto de 120 a los alumnos que NO provienen de la PRE, la fórmula
relacionada podría ser:
=SI(J12=VERDADERO;”Sin matrícula”; 120)
28
Capítulo 1: Creando soluciones a medida
Si se quiere mostrar el mes de entrevista de acuerdo a la opción elegida, puede emplear la función
INDICE y usar como fila la celda vinculada (celda F4):
=INDICE(J6:K9;F4;2)
En caso de tener un cuadro combinado, la diferencia es la forma de mostrar los elementos. En una lista
se muestran los elementos y en un cuadro combinado se tiene que hacer clic para mostrarlos.
En este caso puede emplear la celda vinculada (C2) y escribir una fórmula como:
=C2*2,5
El valor del Monto cambiará cada vez que se desplaza por la barra:
29
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
Se crearán libros que se grabarán como plantillas, generando soluciones que automaticen ciertas
operaciones y procesos en su organización.
Crear el libro
1. En un libro en blanco, escriba la siguiente hoja de cálculo, incluya la imagen.
2. También debe escribir las fórmulas. En nuestro caso se debe generar en la celda B13 el número de
control inicial y final de las credenciales generadas.
a. Del: Debe tener como prefijo la inicial del tipo de credencial y el número inicial ingresado en la
celda D7 (considerar 7 dígitos como mínimo). El resultado debe ser como E0001630. La fórmula
a emplear en la celda B13 será:
=IZQUIERDA(B7) & DERECHA(“0000000” & D7;7)
b. Al: Debe tener como prefijo la inicial del tipo de credencial y calcular el número final a partir del
número inicial (considerar 7 dígitos como mínimo). El resultado debe ser: E0001680. La fórmula
en la celda C13 será:
=IZQUIERDA(B7) & DERECHA(“000000” & (D7+C7);7)
3. Escriba las fórmulas similares en las celdas B14 y C14, en estos casos debe considerar como valores
para el cálculo las celdas C8 y D8.
30
Capítulo 1: Creando soluciones a medida
Aplicar formatos
1. Aplique los siguientes formatos:
B3: Formato de fuente: tamaño 16. Color Azul Énfasis 1, Oscuro 50%.
B6:D6 y B12:D12: Estilo de celda Total.
B7:B8 y B18: Color de relleno Azul Énfasis 1, Claro 60%. Negrita.
C7:D8; B13:C14 y C18:D18: Color de relleno Azul Énfasis 1, Claro 80%. Negrita.
B11: Estilo de celda Título 2.
2. También debemos lograr que las celdas B14:C14 se oculten cuando las celdas C8 y D8 no tengan
contenido. En este caso debe aplicar un formato condicional:
a. Seleccione las celdas B14:C14.
b. En la ficha Inicio, haga clic en el comando Formato condicional y elija Administrar reglas.
c. En esta ventana elija el botón Nuevo y seleccione la regla Utilice una fórmula que determine
las celdas para aplicar formato. Escriba como fórmula:
=O($C$8=0;$D$8=0)
e. Luego, haga clic en el botón Formato y elija como color de fuente Azul Énfasis 1, Claro 80%.
f. Acepte las ventanas. Para comprobar la utilidad, escriba 0 en la celda C8. Observe cómo las
celdas B14:C14 se ocultan.
31
Excel for Masters - Macros y Aplicaciones con VBA
c. En el cuadro Permitir elija Número entero. Indique como valor mínimo 0 y máximo 1000. Su
ventana debe ser:
2. Vamos a restringir el ingreso de datos para que el usuario sólo pueda modificar las celdas C7:D8.
a. Seleccione las celdas C7:D8.
b. Presione las teclas CTRL + 1.
c. En la ficha Proteger, apague la casilla Bloqueada.
32
Capítulo 1: Creando soluciones a medida
d. Ahora, vaya a la celda B13 y note que no se muestra la fórmula, ni en la celda ni en la barra de
fórmulas.
e. Si necesita hacer algún cambio al libro, vaya a la ficha Revisar y haga clic en el comando
Desproteger hoja.
Crear la plantilla
1. Finalmente, debe guardar el libro como Plantilla.
a. En la ficha Archivo, elija Guardar y enviar.
b. Seleccione Cambiar tipo de archivo y haga clic en Plantilla.
c. El nombre será Credenciales.
33
Excel for Masters - Macros y Aplicaciones con VBA
6. Genere otro libro basado en la plantilla Credenciales con los siguientes valores:
34
Capítulo 1: Creando soluciones a medida
Fórmula:
Fórmula:
Fórmula:
d. Frascos sobrantes: debe mostrar los frascos que no completan la caja a empacar. La fórmula en
este caso es:
Fórmula: =RESTO(D9;18)
e. Fecha de entrega: se puede empaquetar 100 frascos por día. La fórmula debe ser:
35
Excel for Masters - Macros y Aplicaciones con VBA
4. Valide que la celda F3 soporte sólo números entre 100 y 5000 kilos. Además, dicha celda se debe
mostrar como:
5. Realice el procedimiento para permitir sólo el ingreso en las celdas correspondientes a la Orden de
Pedido, los kilos a procesar y la fecha de ingreso. Además oculte las fórmulas creadas. Recuerde
que tiene que proteger el libro para ver la funcionalidad aplicada.
Preparar el libro
1. Abra el libro Cotiza_Autos de la carpeta Capítulo_1. En la hoja Contrato prepare la siguiente tabla
y aplique los formatos necesarios para obtener un resultado como el mostrado:
36
Capítulo 1: Creando soluciones a medida
37
Excel for Masters - Macros y Aplicaciones con VBA
b. Cambie las propiedades para tener valores entre 12 y 60. Además, vincule el control con la
celda C4.
5. Haga clic en los controles agregados. Observe cómo las celdas vinculadas cambian al manipular el
formulario:
Escribir fórmulas
1. Al seleccionar un modelo de auto, se debe mostrar el precio correspondiente. Emplee la celda K6
(vinculada con la lista de modelos) y el rango Modelos que contiene el precio del auto. En la celda
C15 escriba la fórmula:
=INDICE(PrecioAutos;K6;2)
2. La Cuota de entrega corresponde al 3% del Precio para la modalidad Entrega al año. Recuerde que
la celda K3 está vinculada a las opciones de modalidad. La fórmula en la celda C18 es:
=SI(K3=2; C15*3%;0)
38
Capítulo 1: Creando soluciones a medida
3. Para calcular el Total adicionales, debe considerar los Adicionales (Aire acondicionado a USA 450
y Aros de Aleación a USA 120). Recuerde que cada adicional está vinculado a las celdas K4 y K5,
respectivamente. En la celda E16 escriba la fórmula:
=SI(K4=VERDADERO;450;0) + SI(K5=VERDADERO;120;0)
4. El Precio Total es la suma del Precio más los adicionales. La fórmula de la celda C16 es:
=C15+E16
6. Para probar el formulario creado, cambie los valores como se ven en la imagen y compare los
resultados:
39
Excel for Masters - Macros y Aplicaciones con VBA
Se tiene una tabla con la información del consumo eléctrico de los clientes. Se necesita crear un
formulario que permita realizar una consulta de los consumos de los clientes en un determinado mes.
Esta consulta también debe mostrar un gráfico de los consumos.
Preparar el libro
1. Abra el libro ElectroSAC de la carpeta Capítulo_1 y vaya a la hoja Consulta.
2. Diseñe una tabla como la mostrada en la figura:
Nombre Rango
Consumo Consumos! A6:O30
Medidor Consumos! A6:A30
Cliente Clientes!A4:B28
MesConsulta Datos!B3:B14
40
Capítulo 1: Creando soluciones a medida
Fórmulas
1. En la celda B14 se debe mostrar el nombre del mes que se está consultando. La celda J3 permite
saber qué mes se ha seleccionado. Los nombres de mes se encuentran en el rango MesConsulta.
La fórmula será:
=INDICE(MesConsulta;J3)
2. En la celda B13 se debe mostrar el mes anterior al seleccionado. En este caso debe considerar que
si elige Enero, el mes anterior será Diciembre. La fórmula es:
=SI(J3=1;”Diciembre”;INDICE(MesConsulta;J3-1))
41
Excel for Masters - Macros y Aplicaciones con VBA
3. En la celda B15 se debe mostrar el mes siguiente al seleccionado. En este caso debe considerar que
si elige Diciembre, el mes siguiente será Enero. La fórmula es:
=SI(J3=12;”Enero”;INDICE(MesConsulta;J3+1))
4. La celda C14 debe tener el consumo del mes seleccionado. Debe considerar que los datos están en
el rango Consumo y que el medidor está relacionado a la celda J5. El número de columna a ubicar
está en función al mes seleccionado. Por ejemplo si elige Enero, la columna en el rango Consumo
será la tercera columna (columna 1 tiene el medidor, columna 2 es de diciembre del año anterior
y recién la columna 3 corresponde a enero). La fórmula será:
=INDICE(Consumo;J5;J3+2)
5. La celda C13 debe tener el consumo del mes anterior al seleccionado. Además sólo se debe mostrar
si el tipo de consulta es Comparativa (relacionada a la celda J4). La fórmula será:
=SI(J4=2;INDICE(Consumo;J5;J3+1);0)
6. La celda C15 debe tener el consumo del mes siguiente al seleccionado (sólo para las consultas
Comparativas). La fórmula será:
=SI(J4=2;INDICE(Consumo;J5;J3+3);0)
7. La celda B19 debe mostrar el nombre del cliente de acuerdo al número de medidor seleccionado.
La fórmula:
=INDICE(Cliente;J5;2)
8. Para comprobar las fórmulas, elija los valores de la imagen y compare los resultados:
42
Capítulo 1: Creando soluciones a medida
Gráficos
1. Finalmente, debe crear un gráfico que compare los consumos del mes seleccionado contra el mes
anterior y siguiente.
a. Seleccione las celdas B13:C15.
b. Inserte un gráfico de columnas.
c. Modifique el gráfico para que se muestre:
43
CAP.
Herramientas
de análisis 2
TABLA DE DATOS
Las tablas de datos forman parte de una serie de comandos a veces denominados herramientas de
análisis. Una tabla de datos es un rango de celdas que muestra cómo afecta el cambio de algunos
valores de las fórmulas a los resultados de las mismas. Las tablas de datos constituyen un método
abreviado para calcular varias versiones en una sola operación, así como una manera de ver y comparar
los resultados de todas las variaciones distintas en la hoja de cálculo.
Puede crear tablas de datos de una o dos entradas, dependiendo del número de variantes que desee
probar.
En el siguiente ejemplo:
La celda F3 contiene la fórmula de pago: =PAGO(B3;B4;-B5)
Hace referencia a la celda de entrada B3.
En el siguiente ejemplo:
La celda E3 contiene la fórmula de pago: =PAGO(B3;B4;-B5)
Utiliza dos celdas variables, B3 y B4.
45
Excel for Masters - Macros y Aplicaciones con VBA
Procedimiento:
1. Escriba la lista de valores que desea cambiar. En el ejemplo (B22:B36).
2. Escriba la fórmula en la fila situada encima del primer valor. En el ejemplo (C22):
=PAGO(B17,B18,-B16)
4. En la ficha Datos, en el grupo Herramientas de datos, haga clic en Análisis Y si y, después, en Tabla
de datos.
46
Capítulo 2: Herramientas de análisis
47
Excel for Masters - Macros y Aplicaciones con VBA
Procedimiento:
1. En una celda de la hoja de cálculo, escriba la fórmula que haga referencia a las dos celdas de entrada.
2. En el ejemplo siguiente, en el que los valores iniciales de la fórmula:
1. Haga clic en la ficha Archivo, luego clic en Opciones de Excel y, a continuación, haga clic en la
categoría Fórmulas.
2. En la sección Opciones de cálculo, bajo Cálculo de libro, haga clic en Automático excepto para
tablas de datos.
Como alternativa, en la ficha Fórmulas, en el grupo Cálculo, haga clic en la flecha de Opciones para el
cálculo y, a continuación, haga clic en Automático excepto en las tablas de datos.
48
Capítulo 2: Herramientas de análisis
Ejemplo:
De la fórmula anterior, se desea saber los resultados de la función f(x,y), para los valores de
x=0,1,2,3,4,5,6,7 y de y = 1,2,3,4,5.
49
Excel for Masters - Macros y Aplicaciones con VBA
Procedimiento:
1. En la celda C6 y C9 se encuentra la fórmula de la función f(x,y)
F(x,y) =4*C4*E4^3+5*E4*C4^3-2*C4*E4^2+E4*C4^2+6*C4*E4+1
Recuerde que los datos de X están en columna y los datos de Y están en filas.
BUSCAR OBJETIVO
Buscar objetivo es una herramienta dentro de las opciones avanzadas denominados herramientas de
análisis Y sí. En el caso de que conozca el resultado deseado de una fórmula sencilla, pero no la variable
que determina el resultado, podrá utilizar la función Buscar objetivo haciendo uso de Buscar objetivo.
Al realizar una búsqueda de objetivo, Microsoft Excel varía el valor de celda específica hasta que una
fórmula dependiente de dicha celda devuelve el resultado deseado.
Sin embargo, el cliente le indica al banco que tiene una capacidad de pago mayor y puede pagar
S/. 2,000.00 mensual. ¿Cuánto de préstamo puede otorgarle al banco?
50
Capítulo 2: Herramientas de análisis
De acuerdo al cuadro anterior, se debe buscar como objetivo el pago de S/. 2,000.00, (celda B6). Esta
celda presenta la fórmula:
=PAGO(tasa;NumPeriodos;-Prestamo)
El segundo punto sería cambiar el préstamo para lograr dicho objetivo (celda B3).
Procedimiento:
1. Ir a la ficha Datos.
2. En el grupo herramientas de datos, elegir el botón Análisis Y si.
3. Ahora, en la opción buscar objetivo se despliega la ventana.
Observaciones:
1. La celda objetivo debe contener una fórmula expresada en celdas o funciones.
2. La celda a cambiar debe ser una celda que contenga un número.
51
Excel for Masters - Macros y Aplicaciones con VBA
Se sabe que con una venta de S/.15,600.00 se obtiene una ganancia de S/. 4,160.00.
¿Qué monto de venta se debe tener para que nuestra ganancia sea de 6,000?
Ventas * 85%
52
Capítulo 2: Herramientas de análisis
ESCENARIOS
Los escenarios forman parte de una serie de comandos a veces denominados herramientas de Análisis
Y sí. Un escenario es un conjunto de valores que Microsoft Office Excel guarda y puede sustituir
automáticamente en la hoja de cálculo.
Puede utilizar los escenarios para prever el resultado de un modelo de hoja de cálculo. Puede crear y
guardar diferentes grupos de valores en una hoja de cálculo y, a continuación, pasar a cualquiera de
estos nuevos escenarios para ver distintos resultados.
CREAR ESCENARIOS
Por ejemplo, usted podría utilizar un escenario si quisiera preparar un presupuesto, pero no supiera
con exactitud sus ingresos. En este caso, con un escenario podría definir valores diferentes para dichos
ingresos y, seguidamente, pasar de un escenario a otro para realizar un análisis Y sí.
En el ejemplo anterior, cuyo escenario podría denominarse Peor opción, establezca el valor de la celda
B1 como 50.000 $ y el de la celda B2 como 13.200 $.
Al segundo escenario podría denominarlo Mejor opción y cambiar los valores de B1 a 150.000 $ y de
B2 a 26.000 $.
53
Excel for Masters - Macros y Aplicaciones con VBA
CREAR UN ESCENARIO
1. En la ficha Datos, en el grupo Herramientas de datos, haga clic en Análisis Y si y, después, en
Administrador de escenarios.
2. Haga clic en Agregar.
3. En el cuadro Nombre del escenario, escriba un nombre para el escenario, que es un conjunto de
valores de entrada al que se ha asignado un nombre, que puede sustituirse en un modelo de hoja
de cálculo.
4. En el cuadro Celdas cambiantes, especifique las referencias de las celdas que desee cambiar.
Para preservar los valores originales de las celdas cambiantes, cree un escenario que utilice los valores
originales de las celdas antes de crear escenarios que cambien los valores.
1. En Proteger, seleccione las opciones que desee.
2. Haga clic en Aceptar.
3. En el cuadro de diálogo Valores del escenario, introduzca los valores que desee para las celdas
cambiantes.
4. Para crear el escenario, haga clic en Aceptar.
5. Si desea crear escenarios adicionales, repita los pasos 2 a 8. Cuando termine de crearlos, haga clic
en Aceptar y en Cerrar en el cuadro de diálogo Administrador de escenarios.
54
Capítulo 2: Herramientas de análisis
MOSTRAR UN ESCENARIO
Cuando se muestra un escenario se cambian los valores de las celdas que se guardan como parte de
ese escenario.
1. En la ficha Datos, en el grupo Herramientas de datos, haga clic en Análisis Y si y, después, en
Administrador de escenarios.
2. Haga clic en el nombre del escenario que desee mostrar.
3. Haga clic en Mostrar.
INFORME DE ESCENARIO
55
Excel for Masters - Macros y Aplicaciones con VBA
HERRAMIENTA SOLVER
Solver forma parte de una serie de comandos a veces denominados herramientas de análisis Y sí. Con
Solver, puede buscarse el valor óptimo para una fórmula de una celda, denominada celda objetivo,
en una hoja de cálculo. Solver trabaja con el grupo de celdas que estén relacionadas, directa o
indirectamente, con la fórmula de la celda objetivo.
Utilice Solver para determinar el valor máximo o mínimo de una celda cambiando otras celdas. Por
ejemplo, puede cambiar el importe del presupuesto previsto para publicidad y ver el efecto sobre el
margen de beneficio.
Si Complemento Solver no aparece en la lista del cuadro Complementos disponibles, haga clic en
Examinar para buscar el complemento.
Si se le indica que el complemento Solver no está instalado actualmente en el equipo, haga clic en Sí
para instalarlo.
56
Capítulo 2: Herramientas de análisis
Una vez cargado el complemento Solver, el comando Solver estará disponible en el grupo Análisis de
la ficha Datos.
1. Celdas ajustables
2. Celda restringida
3. Celda objetivo
Una vez ejecutado Solver, los nuevos valores son los siguientes:
57
Excel for Masters - Macros y Aplicaciones con VBA
CELDA OBJETIVO
La celda objetivo representa el objetivo. Queremos reducir o aumentar la celda objetivo. En el ejemplo
de una mezcla de productos de una empresa farmacéutica, el director de planta querrá probablemente
aumentar la rentabilidad de la planta cada mes. La celda que mide la rentabilidad será la celda objetivo.
CELDAS CAMBIANTES
Las celdas cambiantes son las celdas de la hoja de cálculo que podemos cambiar o ajustar para
optimizar la celda objetivo. En el ejemplo de la empresa farmacéutica, el director de la planta puede
ajustar la cantidad producida de cada producto durante un mes. Las celdas en las que se registran estas
cantidades son las celdas cambiantes de este modelo.
RESTRICCIONES
Las restricciones son delimitaciones que se aplican a las celdas cambiantes. En nuestro ejemplo de
mezcla de productos, en la mezcla de productos no se puede utilizar más cantidad de cualquiera de
los recursos disponibles (por ejemplo, materia prima y mano de obra) que la cantidad del recurso
disponible. Además, no deberíamos producir más cantidad de un producto que la que los compradores
estarían dispuestos a adquirir. En la mayoría de los modelos de Solver, hay una restricción implícita que
establece que ninguna de las celdas cambiantes debe tener un valor negativo.
Básicamente, Solver busca todas las soluciones viables y encuentra aquélla que tiene el ‘mejor’ valor
en la celda objetivo (el valor mayor para la optimización máxima y el menor para la optimización
mínima). Esta solución se denomina una solución óptima. Algunos modelos de Solver no tienen
ninguna solución óptima y otros tienen una solución única. Otros modelos de Solver tienen varias (e
incluso infinitas) soluciones óptimas.
Procedimiento:
1. Haga clic en el Menú Archivo, Opciones y,a continuación, en la categoría Complementos.
2. En el cuadro Administrar, haga clic en Complementos de Excel y, a continuación, en Ir.
3. En el cuadro Complementos disponibles, active la casilla de verificación Complemento Solver y, a
continuación, haga clic en Aceptar.
4. En el cuadro Celda objetivo, escriba una referencia de celda o un nombre para la celda objetivo. La
celda objetivo debe contener una fórmula.
58
Capítulo 2: Herramientas de análisis
59
Excel for Masters - Macros y Aplicaciones con VBA
3. Haga clic en la relación (<=, =, >=, int o bin) que desee que haya entre la celda a la que se hace
referencia y la restricción. En el cuadro Restricción, escriba un número, una referencia de celda, un
nombre o una fórmula.
Las restricciones son limitaciones aplicadas a un problema de Solver. Puede aplicar restricciones a
celdas ajustables, la celda de destino u otras celdas que estén directa o indirectamente relacionadas
con la celda de destino.
60
Capítulo 2: Herramientas de análisis
LABORATORIO DE PRÁCTICA
En estos ejercicios se emplearán libros ubicados en la carpeta Capítulo_2 de su carpeta de prácticas.
Resultado esperado:
61
Excel for Masters - Macros y Aplicaciones con VBA
Resultado esperado:
62
Capítulo 2: Herramientas de análisis
Resultado:
63
Excel for Masters - Macros y Aplicaciones con VBA
Sujeto a: 2x1 + x2 ≤ 18 x1 ≥ 0 , x2 ≥ 0
2x1 + 3x2 ≤ 42
3x1 + x2 ≤ 24
Solución:
1. Ingresar los datos en la hoja de Cálculo.
64
Capítulo 2: Herramientas de análisis
65
CAP.
Herramientas
de Auditoría 3
EVALUAR FÓRMULAS
Microsoft Office Excel, desde versiones anteriores y tan antiguas como Excel 97 y Excel 2000, trae
herramientas que usted quizás no note, pero que lo ayudan en su trabajo diario con una hoja de
cálculo. Existe un par de herramientas que recomendamos preste especial atención: el Buscador de
rangos y la Evaluación de fórmulas.
BUSCADOR DE RANGOS
Proporciona en forma gráfica y mediante bordes de colores qué celdas y qué rangos se emplean en
una fórmula.
Así, usted podrá conocer exactamente de dónde provienen los datos de su fórmula, simplemente
siguiendo su color. El Buscador de Rangos actúa en forma inmediata al editar una celda que contiene
una fórmula o función.
67
Excel for Masters - Macros y Aplicaciones con VBA
EVALUAR FÓRMULAS
Si usted desea ver cómo una fórmula compleja va calculando sus resultados intermedios, puede
emplear la herramienta Evaluar fórmulas. Así, puede ver los resultados parciales de las distintas partes
de una fórmula anidada evaluadas en el orden en el que se calcula la fórmula.
Excel muestra los valores intermedios de la fórmula. Por ejemplo, considerando la siguiente hoja de
cálculo:
68
Capítulo 3: Herramientas de Auditoría
El evaluar dicha fórmula se subrayan las expresiones a calcularse y tiene el botón Evaluar para iniciar
dicha tarea…
… mostrando valores que le ayudarán a ver si la fórmula está trabajando como espera...
69
Excel for Masters - Macros y Aplicaciones con VBA
COMENTARIOS
Puede emplear comentarios si necesita dejar anotaciones para el ingreso de datos a una celda o tener
una descripción más detallada acerca de una celda o un rango.
Si ha insertado comentarios, puede imprimirlos junto con su hoja de cálculo o en una lista al final de
su tabla.
INSERTAR COMENTARIOS
Podrá incorporar un texto o un mensaje en una celda que necesite de una explicación detallada o en
una celda que necesite documentar para consultas posteriores.
70
Capítulo 3: Herramientas de Auditoría
3. Se muestra un cuadro con el nombre del usuario del equipo. Escriba el texto.
6. El comentario se muestra cada vez que lleva el cursor sobre la celda, si mueve el cursor a otra
posición el comentario se oculta.
3. Haga clic en los botones Siguiente y Anterior para revisar los comentarios uno por uno.
71
Excel for Masters - Macros y Aplicaciones con VBA
4. Si desea ver todos los comentarios, haga clic en Mostrar todos los comentarios.
EDITAR UN COMENTARIO
Puede modificar el contenido del comentario insertado.
1. Lleve el indicador sobre la celda que contiene el comentario.
2. Haga clic en el comando Modificar Comentario de la ficha Revisar.
ELIMINAR UN COMENTARIO
Para eliminar el comentario:
1. Lleve el indicador sobre la celda que contiene el comentario.
2. Haga clic en el comando Eliminar de la ficha Revisar.
72
Capítulo 3: Herramientas de Auditoría
5. Si elige Al final de la hoja, se muestra una tabla con detalles de los comentarios insertados.
73
Excel for Masters - Macros y Aplicaciones con VBA
AUDITORÍA DE FÓRMULAS
La Auditoria es el método más sencillo y rápido de seguir el flujo de cálculos en su hoja de cálculo.
Mediante esta herramienta puede examinar las relaciones entre las celdas y las fórmulas de su hoja,
así como identificar las celdas que causan errores. Con flechas puede ver qué celdas se emplean en
una fórmula o cuáles causan error.
RASTREAR PRECEDENTES
Este comando dibuja flechas de rastreo de color azul en las celdas a las que se refiere directamente la
fórmula seleccionada. Es decir, señala las celdas que proporcionan datos para nuestra fórmula.
1. Lleve el puntero a la celda que contiene una fórmula.
2. Haga clic en el botón Rastrear precedentes.
3. Se visualizan las flechas de rastreo.
4. La imagen de arriba se interpreta como que la fórmula de la celda C9 emplea valores de las celdas
C5:C7 y de la celda E5. Observe la dirección de las flechas.
5. SI hace clic en el mismo comando, se muestra un segundo nivel de celdas precedentes.
74
Capítulo 3: Herramientas de Auditoría
RASTREAR DEPENDIENTES
Esta herramienta dibuja flechas de rastreo en todas las celdas que dependen de la celda activa. Así
podrá conocer que celdas que contienen fórmulas emplean esta celda para sus cálculos.
1. Lleve el puntero a una celda.
2. Haga clic en el botón Rastrear dependientes.
3. Se visualizan las flechas de rastreo.
4. Por ejemplo, si el cursor está en la celda C6, podemos notar
en la imagen que dicha celda (que es la que deseamos
evaluar) se emplea en una fórmula de la celda C9.
QUITAR FLECHAS
Si rastrea celdas precedentes o dependientes se muestran flechas de rastreo. Estas flechas se pueden
eliminar:
1. Vaya a la ficha Fórmula.
2. Haga clic en el botón Quitar flechas.
3. Las flechas se ocultan.
GESTIÓN DE ERRORES
VALORES DE ERROR
Si una fórmula no puede evaluar correctamente un resultado, Excel muestra un valor de error, como
#####, #¡DIV/0!, #N/A, #¿NOMBRE?, #¡NULO!, #¡NÚM!, #¡REF! y #¡VALOR! Cada tipo de error tiene
diversas causas y soluciones diferentes.
Los errores se marcan en su hoja de cálculo con un triángulo verde en la esquina superior derecha de
la celda cuando se detecta un error.
75
Excel for Masters - Macros y Aplicaciones con VBA
AUTOCORRECCIÓN DE ERRORES
Cuando hace clic sobre una celda que contiene algún tipo de error, Excel muestra una etiqueta de
comprobación de errores con una descripción del error y sugerencias para resolverlo. Esta descripción
y las sugerencias cambian de acuerdo al tipo de error encontrado (vea la tabla de tipos de errores para
más detalles).
Puede resolver un error mediante las opciones que Excel muestra, o puede pasar por alto el error
haciendo clic en Omitir error.
CORRECCIÓN DE ERRORES
No siempre podrá corregir los errores con las sugerencias que muestra la etiqueta de comprobación
de errores de Excel. En este caso, veremos las herramientas disponibles para hacer seguimiento a los
errores y marcarlos en su hoja de cálculo.
Comprobación de errores
Útil para revisión de los errores de su hoja de cálculo.
1. Seleccione la hoja de cálculo cuyos errores desea revisar.
2. En el grupo Auditoría de fórmulas de la ficha Fórmulas, haga clic en el botón Comprobación de
errores.
76
Capítulo 3: Herramientas de Auditoría
RASTREAR ERROR
Esta herramienta marca las celdas o rangos que generan el error.
1. Haga clic en la celda que contenga algún tipo de error.
2. En el grupo Auditoría de fórmulas de la ficha Fórmulas, haga clic en el botón Comprobación de
errores.
3. Haga clic en el comando Rastrear error. Excel muestra las celdas que generan el error.
77
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
En estos ejercicios se emplearán libros ubicados en la carpeta Capítulo_2 de su carpeta de
prácticas.
Escribir fórmulas
a. % Fallas: Debe obtener el porcentaje de fallas por orden de producción, que es una relación
entre las fallas y el total de producción por orden. La fórmula en la celda G6 será:
=F6/SUMA(C6:E6)
b. Totales por línea: Debe obtener el total por línea. La fórmula en la celda C21 debe ser:
=SUMA(C6:C19)
Evaluar fórmulas
Valor: ............................................................................................................................................
Valor: ............................................................................................................................................
78
Capítulo 3: Herramientas de Auditoría
Buscador de rangos
1. Vaya a la hoja Prod y lleve el indicador de celdas a G6.
2. Presione la tecla F2 para ver el buscador de rangos.
a. Responda las siguientes preguntas:
Rango o celda: ..............................................................................................................................
Color: ............................................................................................................................................
79
Excel for Masters - Macros y Aplicaciones con VBA
EJERCICIO 3: COMENTARIOS
Insertar Comentarios
1. Vaya a la celda G6 y realice el siguiente procedimiento:
a. Vaya a la ficha Revisar.
80
Capítulo 3: Herramientas de Auditoría
Revisar comentarios
1. Vaya a la hoja Pasajeros.
2. En la ficha Revisar, use los botones Anterior o Siguiente para ver los comentarios insertados en la
hoja de cálculo.
3. Anote los comentarios ubicados:
Celda Comentarios
81
Excel for Masters - Macros y Aplicaciones con VBA
Editar un comentario
1. Vaya a la hoja Prod.
2. En la ficha Revisar use los botones Anterior o Siguiente para ver los comentarios insertados.
3. Vaya al comentario de la celda F21 y haga clic en el comando Modificar comentario de la ficha
Revisar. El comentario debe ser:
Notificar a Control de Calidad y Operaciones si excede a 50 fallas.
4. En este caso observe el icono característico de los precedentes de la celda B4, lo cual indica que ese
valor proviene de otra hoja.
82
Capítulo 3: Herramientas de Auditoría
Quitar flechas
1. Ubique el comando Quitar flechas de la ficha Fórmula.
2. Haga clic en dicho comando para borrar las flechas obtenidas en el ejercicio anterior.
Mostrar dependientes
1. Vaya a la celda C6 de la hoja Prod.
2. En la ficha Fórmula, haga clic en el comando Mostrar dependientes. El resultado debe ser:
3. Las flechas indican que la celda C6 se emplea en las fórmulas de las celdas G6 y en C21.
4. Vaya a la celda C21 y muestre los dependientes.
5. Recuerde que en este caso, el icono indica que la celda C21 se emplea en una fórmula de otra hoja.
6. Borre todas las flechas.
83
Excel for Masters - Macros y Aplicaciones con VBA
Celda Comentarios
Comprobar errores
1. Vaya a la hoja Exporta.
2. En la ficha Fórmula, despliegue el comando Comprobación de errores y elija Comprobación de
errores.
Celda Comentarios
84
Capítulo 3: Herramientas de Auditoría
Corregir errores
1. Vaya a la celda C12. De acuerdo a lo visto en el ejercicio anterior, la fórmula no considera todas las
celdas del rango a sumar.
2. Despliegue las opciones de la etiqueta Comprobar error.
3. Elija Actualizar fórmula para incluir celdas. Observe que Excel automáticamente corrige dicho tipo
de error.
4. Ahora, vaya a la celda E6 y haga clic en el botón Comprobación de errores.
5. Haga clic en el comando Rastrear error. Excel muestra las celdas que generan el error. Observe que
la celda B16 está vacía.
6. Vaya a la celda B16 y escriba 50. Observe que ahora todo está correcto.
7. Guarde los cambios y cierre su libro de trabajo.
85
CAP.
Colaborar con otros
usuarios 4
PROTECCIÓN DE RANGOS, HOJAS Y LIBROS
Cuando comparte una hoja de cálculo con otros usuarios, es posible que desee proteger los datos en
elementos específicos de la hoja de cálculo o libro para evitar que sean modificados. También puede
especificar una contraseña que los usuarios deberán ingresar para modificar elementos específicos de
la hoja de cálculo o libro protegidos. Además, puede evitar que los usuarios cambien la estructura de
una hoja de cálculo.
87
Excel for Masters - Macros y Aplicaciones con VBA
Procedimiento:
1. En la ficha Archivo, abra la vista Backstage.
2. En la vista Backstage, haga clic en Información.
3. En Permisos, haga clic en Proteger libro. Aparecen las siguientes opciones:
88
Capítulo 4: Colaborar con otros usuarios
Observación
Cuando se abre un libro marcado como final se muestra un mensaje de alerta que indica el estado del
libro.
Establezca una contraseña para el libro, cuando seleccione Cifrar con contraseña aparece el cuadro de
diálogo Cifrar documento. En el cuadro Contraseña, escriba una contraseña. Importante: Microsoft no
puede recuperar contraseñas olvidadas o perdidas, así que mantenga una lista de las contraseñas y
nombres de archivo correspondientes en un lugar seguro.
Procedimiento:
1. En la ficha Archivo, abra la vista Backstage.
2. En la vista Backstage, haga clic en Información.
3. En Permisos, haga clic en Proteger libro. Aparecen las siguientes opciones:
Se le pedirá que vuelva a añadir la contraseña para confirmar, cierre el libro para finalizar.
89
Excel for Masters - Macros y Aplicaciones con VBA
90
Capítulo 4: Colaborar con otros usuarios
91
Excel for Masters - Macros y Aplicaciones con VBA
Proteger hoja
1. En la ficha Archivo, abra la vista Backstage.
2. En la vista Backstage, haga clic en Información.
3. En Permisos, haga clic en Proteger libro.
4. Seleccione Proteger hoja actual y establezca la contraseña.
Procedimiento:
1. En la ficha Archivo, abra la vista Backstage.
2. En la vista Backstage, haga clic en Información.
3. En Permisos, haga clic en Proteger libro.
4. Seleccione Proteger hoja actual, desactive las 2 casillas de verificación:
Seleccionar celdas boqueadas.
Seleccionar celdas desbloqueadas.
92
Capítulo 4: Colaborar con otros usuarios
Proteger la hoja, limitar su acceso a rangos y ocultar el contenido de las celdas desbloqueadas.
En ocasiones resulta importante ocultar las fórmulas de las celdas para que no aparezcan en la barra
de fórmulas.
Procedimiento:
Desbloquear y ocultar rangos
1. Seleccionar el rango de bonificaciones.
2. Ir a la ficha Inicio, en el grupo número, active la ventana de diálogo formato de celdas.
3. En la ficha Proteger, activar la casilla de verificación: Oculta. Aceptar.
Procedimiento:
1. En la ficha Archivo, abrir la vista Backstage.
2. En la vista Backstage, haga clic en Información.
93
Excel for Masters - Macros y Aplicaciones con VBA
94
Capítulo 4: Colaborar con otros usuarios
95
Excel for Masters - Macros y Aplicaciones con VBA
Finalizar la configuración.
El usuario propietario del libro puede compartir y dar acceso de lectura o de cambio a otros
usuarios inscritos en un correo.
96
Capítulo 4: Colaborar con otros usuarios
COMPARTIR LIBRO
Puede crear un libro compartido y colocarlo en una ubicación de red donde varias personas puedan
editar el contenido al mismo tiempo. Por ejemplo, si las personas de su grupo de trabajo se encargan
de varios proyectos y desea conocer el estado de los proyectos de sus compañeros, el grupo puede
usar un libro compartido para realizar un seguimiento del estado de los proyectos y actualizar
información.
Procedimiento
1. En el grupo Cambios de la ficha Revisar, haga clic en Compartir libro.
2. En la ficha Modificación del cuadro de diálogo Compartir libro, active la casilla Permitir la
modificación por varios usuarios a la vez. Esto también permite combinar libros.
3. En la ficha Uso avanzado, seleccione las opciones que desea usar para realizar un control de los
cambios y actualizarlos y, a continuación, haga clic en Aceptar.
97
Excel for Masters - Macros y Aplicaciones con VBA
Por ejemplo, en la hoja anterior para dar una contraseña de acceso a las celdas que están de color
sombreado realizamos lo siguiente:
Procedimiento:
1. Seleccionar los rangos a considerar la contraseña.
2. En la ficha Revisar, seleccione del grupo Cambios el botón Permitir que los usuarios modifiquen
rangos.
3. Con el botón nuevo añada el título para la selección.
4. Finalmente, hacer clic en el botón Proteger hoja…
98
Capítulo 4: Colaborar con otros usuarios
LABORATORIO DE PRÁCTICA
En estos ejercicios se emplearán libros ubicados en la carpeta Capítulo_4 de su carpeta de prácticas.
99
Excel for Masters - Macros y Aplicaciones con VBA
100
Capítulo 4: Colaborar con otros usuarios
101
Excel for Masters - Macros y Aplicaciones con VBA
102
CAP.
Acceso a Datos
5
UTILIZAR MICROSOFT QUERY
Puede utilizar Microsoft Query para recuperar datos de orígenes externos. Si utiliza Microsoft Query
para recuperar datos de las bases de datos y de los archivos corporativos, no es necesario que vuelva
a escribir los datos que desea analizar en Excel. También puede actualizar los informes y resúmenes de
Excel automáticamente de la base de datos de origen inicial, siempre que la base de datos se actualice
con información nueva.
ORIGEN DE DATOS
Conjunto almacenado de información de ‘origen’ utilizado para conectarse a una base de datos. Un
origen de datos puede incluir el nombre y la ubicación del servidor de la base de datos, el nombre
del controlador de la base de datos e información que necesita la base de datos cuando se inicia una
sesión.
103
Excel for Masters - Macros y Aplicaciones con VBA
Microsoft Office facilita controladores que pueden utilizarse para recuperar datos de los siguientes
orígenes de datos:
PROVEEDOR OLAP
Conjunto de software que proporciona acceso a un tipo concreto de base de datos OLAP. Este software
puede incluir un controlador de origen de datos y otro software de cliente necesario para conectarse
a una base de datos.
• Microsoft Office Access
• dBASE
• Microsoft FoxPro
• Microsoft Office Excel
• Oracle
• Paradox
• Bases de datos de archivos de texto
CONTROLADORES ODBC
Conectividad abierta de bases de datos. Archivo de programa utilizado para conectarse a una base de
datos concreta. Cada programa de base de datos, como Access o dBASE, o sistema de administración
de bases de datos, como SQL Server, requiere un controlador diferente. O controladores de origen de
datos de otros fabricantes para recuperar información de orígenes de datos que no figuran en esta
lista, incluidos otros tipos de bases de datos OLAP.
Un controlador de origen de datos es un archivo de programa utilizado para conectarse a una base
de datos específica. Cada programa o sistema de administración de bases de datos requiere un
controlador diferente.
Para importar datos externos en Excel con Microsoft Query, siga estos pasos básicos, cada uno de los
cuales se describe con más detalle en las secciones siguientes.
• Conectar con un origen de datos.
• Utilizar el Asistente para consultas para definir una consulta.
• Trabajar con los datos en Excel.
104
Capítulo 5: Acceso a Datos
1. En la ficha Datos, en el grupo Obtener datos externos, haga clic en De otras fuentes y luego en
Desde Microsoft Query.
2. Para especificar un origen de datos para una base de datos, un archivo de texto o un libro de Excel,
haga clic en la ficha Bases de datos.
3. Haga doble clic en <Nuevo origen de datos>.
105
Excel for Masters - Macros y Aplicaciones con VBA
Si la base de datos externa a la que desea obtener acceso no es compatible con los controladores ODBC
instalados con Microsoft Query, deberá conseguir e instalar un controlador ODBC que sea compatible
con Microsoft Office de otro proveedor, como el fabricante de la base de datos. Póngase en contacto
con el proveedor de la base de datos para obtener instrucciones sobre la instalación.
Las bases de datos OLAP no requieren controladores ODBC. Cuando se instala Microsoft Query,
se instalan los controladores de las bases de datos que se crearon mediante Microsoft SQL Server
Analysis Services. Para conectarse a otras bases de datos OLAP, deberá instalar un controlador
de origen de datos y un software cliente.
106
Capítulo 5: Acceso a Datos
Para las bases de datos, los libros de Excel y los archivos de texto, la información proporcionada
dependerá del tipo de origen de datos que haya seleccionado. Es posible que se pida un nombre de
conexión, una contraseña, la versión de la base de datos que utiliza, la ubicación de la base de datos e
información adicional específica para el tipo de base de datos.
Tras especificar la información necesaria, haga clic en Aceptar o Finalizar para volver al cuadro de
diálogo Crear nuevo origen de datos.
107
Excel for Masters - Macros y Aplicaciones con VBA
Asimismo, puede utilizar el asistente para ordenar el conjunto de resultados y realizar una operación
de filtrado sencillo. En el último paso del asistente, podrá elegir devolver los datos a Excel o depurar
la consulta en Microsoft Query. Una vez creada la consulta, podrá ejecutarla en Excel o en Microsoft
Query.
108
Capítulo 5: Acceso a Datos
Los criterios son condiciones que se especifican para limitar los registros que se incluyen en el conjunto
de resultados de una consulta o un filtro.
Si desea abrir una consulta guardada y Microsoft Query ya está abierto, haga clic en el menú Archivo
de Microsoft Query y luego en Abrir.
Si hace doble clic en un archivo .dqy, Excel abre y ejecuta la consulta y, después, inserta los resultados
en una nueva hoja de cálculo.
Una vez seleccionado los campos de la base de datos, continuamos con el botón siguiente, hasta
finalizar.
109
Excel for Masters - Macros y Aplicaciones con VBA
Excel puede aplicar formato automáticamente a los nuevos datos que escriba al final de un rango para
igualar esos datos con los de las filas precedentes. También puede copiar fórmulas que se repitan en
las filas precedentes y extenderlas a las filas adicionales.
Para que el formato y las fórmulas se extiendan a las nuevas filas del rango, éstos deben aparecer
en al menos tres de las cinco filas anteriores.
110
Capítulo 5: Acceso a Datos
Puede continuar trabajando en Excel mientras los datos se están actualizando, y también puede
comprobar el estado mientras se actualizan los datos, puede actualizar automáticamente en la ventana
de propiedades.
111
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
En estos ejercicios se emplearán libros ubicados en la carpeta Capítulo_5 de su carpeta de prácticas.
112
Capítulo 5: Acceso a Datos
113
Excel for Masters - Macros y Aplicaciones con VBA
4. Aceptar.
En este punto debe mostrarse la relación de tablas y campos para seleccionar (ver figura).
114
Capítulo 5: Acceso a Datos
Tabla Campos
Pedidos IdPedido
FechaPedido
Empleados Nombre
Cliente NombreCompañía
Detalles de Pedido Cantidad
115
Excel for Masters - Macros y Aplicaciones con VBA
116
Capítulo 5: Acceso a Datos
117
Excel for Masters - Macros y Aplicaciones con VBA
118
CAP.
Base de datos
6
TABLAS Y FILTROS
Cuando se crea una tabla (antes denominada lista) en una hoja de Microsoft Excel, los datos se pueden
administrar y analizar independientemente de la información que haya fuera de la tabla. Por ejemplo,
puede filtrar las columnas de la tabla, agregar una fila para totales, aplicar un formato a la tabla y
publicar la tabla en un servidor que ejecute Windows SharePoint Services 3.0 o Microsoft SharePoint
Foundation 2010.
Si ya no desea trabajar con los datos de una tabla, convierta la tabla en un rango de datos normal
manteniendo cualquier formato de estilo de tabla que haya aplicado. Cuando ya no necesite la tabla ni
los datos contenidos en ella, puede eliminarla.
1. En una hoja de cálculo, seleccione el rango de celdas que desea incluir en la tabla. Las celdas
pueden estar vacías o contener datos.
2. En el grupo Tablas de la ficha Insertar, haga clic en Tabla.
3. Si el rango seleccionado incluye datos que desea mostrar como encabezados de tabla, active la
casilla de verificación La tabla tiene encabezados.
119
Excel for Masters - Macros y Aplicaciones con VBA
FILTROS AVANZADOS
Para filtrar un rango de celdas utilizando criterios complejos, para lo cual debe usar el comando
Avanzadas del grupo Ordenar y filtrar de la ficha Datos. El comando Avanzadas funciona de forma
diferente desde el comando Filtrar en varios aspectos importantes.
Procedimiento:
1. Crear 3 nombres de rango. Se recomienda usar nombres.
2. Desde la lista, ir a la ficha Datos, seleccionar Avanzadas.
3. Active la opción Copiar a otro lugar.
4. Ingrese los 3 nombres creados.
5. Aceptar.
120
Capítulo 6: Base de datos
Para buscar las filas que cumplen varios criterios de una columna, escriba los criterios directamente
debajo de los otros en distintas filas del rango de criterios.
El rango de criterios (B1:B3) muestra las filas que contienen ‘Davolio’ o ‘Buchanan’.
A B C
1 Tipo Vendedor Ventas
2 =Davolio
3 =Buchanan
Para buscar las filas que cumplen varios criterios en varias columnas, escriba todos los criterios en la
misma fila del rango de criterios.
El rango de criterios (A1:C2) muestra todos los productos que contienen ‘Alimentos’ en la columna
Tipo y un valor superior a 1.000 $ en la columna Ventas.
A B C
1 Tipo Vendedor Ventas
2 =Alimentos >1000
3 Alimentos Davolio 6544 $
Para buscar las filas que cumplen varios criterios en varias columnas en las que puede cumplirse
cualquier criterio, escriba los criterios en filas diferentes del rango de criterios.
El rango de criterios (A1:B3) presenta todas las filas que contienen ‘Alimentos’ en la columna ‘Tipo’ o
‘Davolio’ en la columna Vendedor.
A B C
1 Tipo Vendedor Ventas
2 =Alimentos
3 =Davolio
121
Excel for Masters - Macros y Aplicaciones con VBA
CRITERIOS EN LOS QUE CADA UNO DE LOS CONJUNTOS INCLUYE CRITERIOS PARA
VARIAS COLUMNAS
Lógica booleana: ( (Vendedor = "Davolio" Y Ventas >3000) O (Vendedor = "Buchanan" Y Ventas > 1500) )
Para buscar las filas que cumplen varios conjuntos de criterios, en los que cada conjunto incluye
criterios para varias columnas, escriba cada conjunto de criterios en filas distintas.
El rango de criterios (B1:C3) muestra las filas que contienen ‘Davolio’ en la columna Vendedor y un
valor superior a 3000 $ en la columna Ventas, o bien, presenta las filas que contienen ‘Buchanan’ en la
columna Vendedor y un valor superior a 1500 $ en la columna Ventas.
A B C
1 Tipo Vendedor Ventas
2 =Davolio >3000
3 =Buchanan >1500
CRITERIOS EN LOS QUE CADA CONJUNTO INCLUYE CRITERIOS PARA UNA COLUMNA
Lógica booleana: ( (Ventas > 6000 Y Ventas < 6500 ) O (Ventas < 500) )
Para buscar las filas que cumplen varios conjuntos de criterios, en los que cada conjunto incluye
criterios para una columna, incluyendo varias columnas con el mismo encabezado de columna.
El rango de criterios (C1:D3) muestra las filas que contienen valores comprendidos entre 5000 y 8000,
y valores inferiores a 500 en la columna Ventas.
A B C D
1 Tipo Vendedor Ventas Ventas
2 >6000 <6500
3 <500
122
Capítulo 6: Base de datos
El rango de criterios (A1:B3) muestra las filas cuyos primeros caracteres son ‘Ca’ en la columna Tipo o
las filas cuyo segundo carácter sea ‘u’ en la columna Vendedor.
A B C
1 Tipo Vendedor Ventas
2 Ca
3 =?u*
A B C D
1 Tipo Vendedor Ventas Promedio calculado
2 =C7>PROMEDIO($C$7:$C$10)
3
4
5
6 Tipo Vendedor Ventas
7 Bebidas Suyama 5122 $
8 Carnes Davolio 450 $
9 Alimentos Buchanan 6328 $
10 Alimentos Davolio 6544 $
123
Excel for Masters - Macros y Aplicaciones con VBA
124
Capítulo 6: Base de datos
Función Descripción
BDPROMEDIO Devuelve el promedio de las entradas seleccionadas en
la base de datos.
BDCONTAR Cuenta el número de celdas que contienen números en
la base de datos.
BDCONTARA Cuenta el número de celdas no vacías de la base de
datos.
BDEXTRAER Extrae de la base de datos un único registro que cumple
los criterios especificados.
BDMAX Devuelve el valor máximo de las entradas seleccionadas
de la base de datos.
BDMIN Devuelve el valor mínimo de las entradas seleccionadas
de la base de datos.
BDPRODUCTO Multiplica los valores de un campo concreto de
registros de la base de datos que cumplen los criterios
especificados.
BDDESVEST Calcula la desviación estándar a partir de una muestra
de entradas seleccionadas de la base de datos.
BDDESVESTP Calcula la desviación estándar en función de la
población total de las entradas seleccionadas de la
base de datos.
BDSUMA Agrega los números de la columna de campo de los
registros de la base de datos que cumplen los criterios.
BDVAR Calcula la varianza a partir de una muestra de entradas
seleccionadas de la base de datos.
BDVARP Calcula la varianza a partir de la población total de
entradas seleccionadas de la base de datos.
125
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
En estos ejercicios se emplearán libros ubicados en la carpeta Capítulo_6 de su carpeta de prácticas.
4. Aceptar.
5. La tabla presenta un estilo de formato de tabla que se puede modificar con la ficha Diseño.
126
Capítulo 6: Base de datos
Los subtotales se aplican a los filtros en forma automática, para cualquier filtro se obtendrá el
subtotal. También se puede subtotalizar en otras columnas de la última fila.
127
Excel for Masters - Macros y Aplicaciones con VBA
Ingresa la referencia de fórmula: =[. Apenas se ingresa el corchete aparecen los campos.
128
Capítulo 6: Base de datos
Nombre Rango
Lista $A$5:$D$505
Criterio $F$1:$F$2
Salida $F$5:$H$5
129
Excel for Masters - Macros y Aplicaciones con VBA
6. Aceptar.
Lo importante en los filtros avanzados se encuentra en los criterios. Por otro lado, los títulos de
los campos deben ser iguales en los rangos, de lo contrario genera un error.
La lista tiene 3 columnas, esta numeración nos servirá para indicar el campo para la función.
Celda Función
En la celda F8 Ingresa; Número de Pedidos
=BDCONTARA(Lista,2,criterio)
Completa
En la celda F10 Ingresa:
En la celda F12 Ingresa:
130
CAP.
Tablas y Gráficos
Dinámicos 7
TABLAS DINÁMICAS
Una tabla dinámica combina lo mejor de una Consolidación y de Subtotales, para presentar los datos
de una forma simple y con un formato y presentación flexible.
Es una forma interactiva de resumir grandes volúmenes de datos y que permite responder a preguntas
acerca de estos ayudando en la toma de decisiones de una organización.
Sus preguntas sobre ¿cuál es el monto mensual de ventas? ¿el total de ventas por local? ¿cuál es el
monto anual de ventas por Cliente?, etc.,se podrán responder sea con tablas o gráficos interactivos.
131
Excel for Masters - Macros y Aplicaciones con VBA
En la imagen se tiene un listado con información sobre una determinada actividad. Observe que la
tabla dinámica resume dicha información de acuerdo a criterios como años y categorías.
• Mover filas a columnas y columnas a filas para ver diferentes resúmenes de los datos de origen.
• Agregar segmentación de datos que permiten filtrar los datos de manera rápida y sencilla, y de
modo interactivo.
132
Capítulo 7: Tablas y Gráficos Dinámicos
1 3
133
Excel for Masters - Macros y Aplicaciones con VBA
Los pasos para insertar una tabla dinámica basada en una lista de Excel son:
1. Lleve el indicador de celdas dentro de la lista.
2. Haga clic en la ficha Insertar.
3. Despliegue el comando Tabla dinámica y elija la opción Tabla dinámica.
4. Excel detecta automáticamente la lista donde dejó el indicador de celda. Elija Nueva hoja de
cálculo y haga clic en Aceptar.
5. Se muestra una Lista de campos (en el gráfico a la derecha) y el área donde se inserta la tabla
dinámica (en el gráfico a la izquierda).
134
Capítulo 7: Tablas y Gráficos Dinámicos
135
Excel for Masters - Macros y Aplicaciones con VBA
Campo agrupado en
la etiqueta de fila
En el caso de tener fechas como etiquetas de filas puede agruparlas por año, trimestre o mes.
136
Capítulo 7: Tablas y Gráficos Dinámicos
Excel asume como función de resumen la SUMA y en el caso de ser campos de tipo texto, el CONTAR.
137
Excel for Masters - Macros y Aplicaciones con VBA
Si ya tiene campos en filas, al agregar columnas se tienen 2 criterios para resumir y totalizar sus datos:
Si elige un elemento del filtro, la tabla dinámica muestra sólo los registros de dicho criterio.
138
Capítulo 7: Tablas y Gráficos Dinámicos
Segmentación de datos
Este elemento permite filtrar los datos de las tablas dinámicas de una manera visual. A través de
botones, que pueden desplegarse vertical u horizontalmente, puede aplicar filtros con un solo clic.
Además del filtrado rápido, la segmentación de datos también indica el estado actual de filtrado, lo cual
facilita el entendimiento de lo que se muestra exactamente en un informe de tabla dinámica filtrado.
En la imagen de abajo, observe que el texto Europa se muestra de un color diferente, esto indica que
la tabla sólo muestra los registros que cumplan con dicho criterio.
Puede agregar más de un segmento de datos y distribuirlos en las columnas que necesita.
139
Excel for Masters - Macros y Aplicaciones con VBA
3. Despliegue las opciones del comando Insertar Segmentación de datos y elija Insertar segmentación
de datos.
140
Capítulo 7: Tablas y Gráficos Dinámicos
141
Excel for Masters - Macros y Aplicaciones con VBA
3. El cuadro se distribuye:
142
Capítulo 7: Tablas y Gráficos Dinámicos
Agrupar fechas
Si usted tiene fechas y las inserta en su rótulo de filas o columnas, estos datos se muestran por día.
143
Excel for Masters - Macros y Aplicaciones con VBA
6. Los campos agrupados se muestran en la lista de campos para que pueda emplearlos en otras
secciones de la tabla dinámica.
Agrupar campos
Excel también permite agrupar filas o columnas empleando un criterio personalizado. Por ejemplo,
puede seleccionar 3 ó 4 países y crear un grupo. Luego puede cambiar el nombre al grupo y expandir
y contraer sus elementos.
144
Capítulo 7: Tablas y Gráficos Dinámicos
Para agrupar:
1. Seleccione las filas o columnas que desea agrupar.
2. Use el botón derecho del mouse y elija la opción Agrupar.
Contraer y expandir
Cuando se generan grupos, sean personalizados o de fechas, se generan niveles para mostrar y ocultar
los detalles del grupo.
Los grupos muestran botones para expandir o contraer los detalles de los grupos:
Botones para
expandir y contraer.
145
Excel for Masters - Macros y Aplicaciones con VBA
Diseño de informes
Otra de las características que se pueden aplicar al tener grupos, es de modificar el diseño del
informe:
Diseño Tabular
146
Capítulo 7: Tablas y Gráficos Dinámicos
Por defecto, al crear una tabla dinámica el diseño que se adopta es el compacto. Para cambiar el
diseño:
1. Vaya a la ficha Diseño de las Herramientas de Tablas dinámicas.
2. Despliegue las opciones del comando Diseño de Informe.
3. Seleccione uno de los diseños mostrados:
Valores en porcentajes
En lugar de mostrar las sumatorias de las filas, puede obtener el porcentaje que representa cada fila
en relación al total general.
También puede acompañar los totales hallados con una columna adicional que muestre el porcentaje
que representa dicho valor con respecto al total.
147
Excel for Masters - Macros y Aplicaciones con VBA
El resultado es:
Si tiene 2 o más niveles de grupo, debe elegir la opción % del total de filas principales.
Para mostrar el total y la columna de porcentaje, debe tener 2 veces el campo a resumir en la sección
Valores:
148
Capítulo 7: Tablas y Gráficos Dinámicos
Campos calculados
Puede crear sus propios campos que luego puede añadir a la tabla dinámica. Los campos calculados se
obtienen de fórmulas que usted escriba y que personalice.
149
Excel for Masters - Macros y Aplicaciones con VBA
Formato de Números
Permite cambiar la apariencia de los valores de resumen, así podrá aplicar formatos de millares, de
moneda, etc.
1. Haga clic en alguna celda del campo que desea formatear.
2. En la ficha Opciones de Herramientas de tablas dinámicas, ubique el grupo Campoactivo y haga
clic en el comando Configuración de campo.
150
Capítulo 7: Tablas y Gráficos Dinámicos
Estilos de tabla
Esta herramienta permite aplicar un estilo (bordes, sombreados, fuentes, etc.) a las secciones de su
tabla dinámica. Excel tiene más de 80 estilos diferentes para aplicar e incluso puede crear y aplicar un
estilo personalizado.
1. Haga clic en alguna celda de la tabla dinámica.
2. En la ficha Diseño de Herramientas de tablas dinámicas, ubique el grupo Estilos.
3. Despliegue los estilos disponibles con el botón Más.
4. Seleccione el estilo a aplicar. En la imagen de abajo, se muestran estilos aplicados a una tabla
dinámica.
151
Excel for Masters - Macros y Aplicaciones con VBA
GRÁFICOS DINÁMICOS
Los gráficos dinámicos pueden ser creados basados en una tabla dinámica existente o crearse
directamente como tales desde su lista de datos.
Con respecto a su diseño, formato y manipulación, tienen las mismas características que un gráfico
simple. Puede mostrar leyendas, rótulo de datos y títulos, cambiar el tipo de gráfico y aplicar un estilo
más personalizado, etc.
Los gráficos dinámicos se comportan como una tabla dinámica, se pueden aplicar filtros, tener campos
de leyendas (en una tabla dinámica es el rótulo de columnas) e incluso puede crear segmentación de
datos.
4. Excel detecta automáticamente la lista donde dejó el indicador de celda. Elija Nueva hoja de cálculo
y haga clic en Aceptar.
152
Capítulo 7: Tablas y Gráficos Dinámicos
5. Se muestra una Lista de campos, que en este caso tiene Campos de Leyenda (etiqueta de columnas)
y Campos de Eje (etiqueta de fila).
6. Al arrastrar los campos a las respectivas secciones, puede generar un gráfico y personalizarlo.
153
Excel for Masters - Macros y Aplicaciones con VBA
En el gráfico, puede emplear los filtros para ver información más específica, ya sea con los filtros de
gráfico (en el área de continente, por ejemplo) como en el eje de categorías (eligiendo algunos datos
en Trámite).
154
Capítulo 7: Tablas y Gráficos Dinámicos
LABORATORIO DE PRÁCTICA
155
Excel for Masters - Macros y Aplicaciones con VBA
156
Capítulo 7: Tablas y Gráficos Dinámicos
d. El resultado será:
2. Aplique el mismo formato a las tablas dinámicas de las hojas Tabla2 y Tabla3.
157
Excel for Masters - Macros y Aplicaciones con VBA
158
Capítulo 7: Tablas y Gráficos Dinámicos
159
Excel for Masters - Macros y Aplicaciones con VBA
160
Capítulo 7: Tablas y Gráficos Dinámicos
4. Cambie la distribución para que ahora sea Años el campo empleado como filtro.
5. Guarde los cambios efectuados.
161
Excel for Masters - Macros y Aplicaciones con VBA
162
Capítulo 7: Tablas y Gráficos Dinámicos
5. Añada otro campo de segmentación a la tabla de la hoja Tabla4. Luego modifique su apariencia
para obtener:
163
Excel for Masters - Macros y Aplicaciones con VBA
164
Capítulo 7: Tablas y Gráficos Dinámicos
3. Ahora, veremos lo importante que resulta tener gráficos dinámicos junto a la segmentación de
datos. Por ejemplo, necesitamos ver específicamente los ingresos obtenidos por Expedición de DNI
en el año 2009 en América.
a. En el filtro de la tabla dinámica, seleccione 2009.
b. En el segmento de datos, haga clic en América. Luego, en el segmento de datos por Trámite,
elija Expedición de DNI.
165
Excel for Masters - Macros y Aplicaciones con VBA
Resultado Análisis
Año 2010 en
Europa por
Expedición de
pasaportes
Año 2009 en
América por Visa
de estudiante
166
Capítulo 7: Tablas y Gráficos Dinámicos
167
CAP.
Macros
8
MACROS
Una Macro es una serie de pasos que se almacenan y se pueden activar con alguna tecla de control y
una letra, un botón o manualmente.
Por ejemplo, si repetidamente se emplea una serie de pasos como: configurar la página, cambiar el
color de Fuente, aplicar un estilo de celdas personalizado, etc., para no repetir estos pasos se pueden
almacenar en una macro y ésta se ejecutará las veces que se desee.
En resumen, una macro consiste en una serie de comandos y funciones que se almacenan en un
módulo de Microsoft Visual Basic (VBA) y que puede ejecutarse siempre que sea necesario realizar la
tarea.
Grabadora de macros
Para crear una macro puede emplear la grabadora de macros. Esta grabadora almacena información
sobre cada paso dado cuando se ejecuta una serie de comandos. A continuación, se ejecuta la macro
para que repita dichos comandos. Si se comete algún error mientras se graba la macro, también se
graban las correcciones que se realicen.
Debe considerar que al emplear la grabadora de macros, dichas macros son consideradas como
Procedimientos y se puede revisar el código VBA generado.
En cualquier caso, las macros se guardan en Módulos. Estos módulos se generan automáticamente al
grabar macros y contienen el código VBA de la macro y los procedimientos escritos directamente en
el editor de VBA.
Los módulos no se guardan en un libro común y corriente de Excel. Hasta la versión 2003 los módulos
se guardaban junto al libro, pero con la llegada del soporte XML para Office, surgido a partir de la
versión 2007, se dispone de nuevos tipos de libro cuyo objetivo es guardar el libro y los módulos en un
único archivo. Estos tipos son: Libro de Excel habilitado para macros y Plantillas con macros.
169
Excel for Masters - Macros y Aplicaciones con VBA
LA FICHA PROGRAMADOR
Los comandos que tienen que ver con Macros y procedimientos VBA se encuentran ubicados en la
ficha Programador. Esta ficha puede estar oculta, así que se explicará la forma para mostrarla en su
cinta de opciones.
1. Haga clic en la ficha Archivo y elija Opciones.
2. Elija Personalizar cinta de opciones.
3. Ubique la casilla Fichas principales y active la ficha Programador.
170
Capítulo 8: Macros
4. Clic en Aceptar. A partir de este momento se graba toda acción que usted realice.
171
Excel for Masters - Macros y Aplicaciones con VBA
EJECUTAR LA MACRO
Cuando ejecuta la macro, todos los comandos y acciones grabadas en ella se ejecutan. Excel dispone
de varias formas de ejecutar la macro. Puede hacerlo con el método abreviado (la combinación de
teclas que usted asignó al grabar la macro) o desde la ventana de Macros.
Como verá, en esa ventana puede eliminar la macro creada, ver el código generado (botón Modificar)
y si no lo hizo, asignar el método abreviado (botón Opciones).
172
Capítulo 8: Macros
Así, Excel también puede guardar los módulos en Plantillas de Excel habilitadas para macros, con
extensión .xltm.
En el caso de plantillas:
1. Clic en la ficha Archivo y elija Guardar como.
2. Cambie el Tipo de archivo a Plantilla de Excel habilitada para macros.
3. Haga clic en Guardar.
1. Haga clic en Habilitar contenido, de este modo podrá ejecutar las macros del libro.
173
Excel for Masters - Macros y Aplicaciones con VBA
REFERENCIA ABSOLUTA
En la grabación de macros, las referencias de celdas son absolutas. Al hacer clic en una celda, al cambiar
el formato o escribir sobre ella, Excel considerará en la macro a dicha celda.
Por ejemplo, si en un libro de Excel se tiene el número de factura en la celda E5 y tenemos una macro
que incremente ese número en 1, la referencia absoluta de la macro indica que el incremento será
siempre en dicha celda.
La fecha está en la celda E7, así que la macro deberá, por ejemplo, actualizar esa fecha en la celda E7
siempre.
REFERENCIA RELATIVA
Puede emplear referencias relativas para no trabajar con una celda o un rango fijo, sino que cambie
de acuerdo a la posición del cursor. Por ejemplo, si usted necesita saber la última fila de una lista de
clientes, esto podrá cambiar dependiendo de los registros ingresados.
Por ejemplo, se desea crear una macro que permita ir a la última celda de la columna Guía:
En este caso, se debe emplear una referencia relativa, ya que no sabemos cuál es la última celda de
la columna Guía. Quizás, en algún momento es la celda A12, pero al ingresar más registros, esta celda
podría ser A34 o A50 (último registro ingresado).
174
Capítulo 8: Macros
2. Active este botón cuando necesite la referencia relativa y cámbielo para la referencia absoluta.
175
Excel for Masters - Macros y Aplicaciones con VBA
Excel permite que las macros se asignen a diferentes objetos, de tal manera que para ejecutar la macro
bastaría con hacer clic sobre el objeto.
176
Capítulo 8: Macros
177
Excel for Masters - Macros y Aplicaciones con VBA
4. Haga clic en Aceptar para finalizar los cambios. La barra de acceso rápido muestra el botón asociado
a la macro y el nombre definido:
178
Capítulo 8: Macros
A
A Fichas
B Grupos
C
C Comandos
B
Todos los elementos nombrados se crean desde la opción Personalizar cinta de Opciones.
1. Haga clic en el botón Archivo y elija Opciones.
2. Haga clic en Personalizar cinta de opciones.
3. Excel muestra la ventana:
Para crear fichas y grupos y personalizar las opciones de ellos, se va a trabajar con los botones que se
encuentran en la parte inferior:
179
Excel for Masters - Macros y Aplicaciones con VBA
Crear la ficha
1. Haga clic en el botón Nueva Ficha. Se agrega una ficha llamada Nueva ficha.
Crear el grupo
1. Seleccione la ficha para agregar el grupo.
2. Haga clic en el botón Nuevo grupo. Se agrega el grupo Nuevo grupo.
Agregar el comando
Usted puede agregar a su grupo alguno de los comandos que ya existen, como Ordenar, Sumatoria,
Guardar, Imprimir, etc. También puede crear comandos basados en Macros.
3. Haga clic en una macro, luego seleccione la ficha a la que desea agregar el comando.
4. Presione el botón Agregar.
180
Capítulo 8: Macros
Creando fichas, grupos y comandos podemos generar interfaces más amigables para los usuarios:
181
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
2. Recuerde que antes de grabar una macro debe saber qué pasos y comandos intervienen en la tarea
a automatizar. Los pasos para realizar la tarea son:
a. Ficha Diseño de página, comando Orientación.
b. Comando Márgenes, Márgenes personalizados y asignar los valores solicitados.
c. Escriba el nombre de la macro. En nuestro caso será PrepararHoja. Incluya un método abreviado
de teclado (CTRL + SHIFT + P). Complete la ventana como en la figura:
d. Clic en Aceptar, a partir de este momento se graba toda acción que usted realice:
i. Vaya a la ficha Diseño de página y haga clic en el comando Orientación. Seleccione
Horizontal.
ii. Luego, en el comando Márgenes, haga clic en Márgenes personalizados y asigne como
márgenes 1 cm. Clic en Aceptar.
182
Capítulo 8: Macros
2. Antes de grabar la macro, anote los pasos necesarios para aplicar los cambios solicitados:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
3. En la hoja Resumen, realice el procedimiento para grabar la macro como Imprimir Resumen.
183
Excel for Masters - Macros y Aplicaciones con VBA
3. La plantilla creada es muy útil, pero realizar el paso 2 para emplearla resulta un proceso tedioso,
manual y repetitivo. Así, se pide crear una macro que permita automatizar dicho proceso:
a. Clic en la ficha Programador.
b. Ubique el grupo Código y haga clic en el comando Grabar macro.
c. Escriba el nombre de la macro. En nuestro caso será Abrir Simulador.
d. Realice el procedimiento descrito en el paso 2.
e. Luego, detenga la macro. Cierre todos los libros.
2. Realice el procedimiento necesario para crear una macro que abra la plantilla creada. El nombre de
la macro será CrearFactura.
184
Capítulo 8: Macros
Primero deberá crear una ficha y luego un grupo de comandos. Finalmente, debe asignar las macros
a comandos.
1. Para crear una ficha y un grupo, vaya a Archivo, Opciones. Elija Personalizar cinta de Opciones.
Luego, realice el siguiente procedimiento:
a. Haga clic en el botón Nueva Ficha. Se agrega una ficha llamada Nueva ficha.
b. Para cambiar el nombre, seleccione la ficha insertada y haga clic en Cambiar nombre. El nombre
debe ser Desarrollo.
185
Excel for Masters - Macros y Aplicaciones con VBA
b. Seleccione la macro Abrir Simulador, luego seleccione el grupo Soluciones y haga clic en Agregar.
c. Para cambiar el nombre, seleccione el comando creado y haga clic en Cambiar nombre.
d. Escriba el nuevo nombre y elija un icono que lo represente:
4. Agregue las demás macros a los grupos Soluciones y Preparar. El resultado debe ser:
186
Capítulo 8: Macros
c. Escriba el nombre de la macro. En nuestro caso será BorrarIngreso. En Guardar macro en, elija
Este libro. Su ventana debe quedar como:
d. Clic en Aceptar, a partir de este momento se graba toda acción que usted realice:
i. Seleccione el rango C7:D8 y pulse la tecla Suprimir.
ii. Haga clic en la celda C7.
e. Para finalizar la macro: ubique el botón Detener de la barra de estado de Excel.
187
Excel for Masters - Macros y Aplicaciones con VBA
d. Ejecute la macro.
¿Qué cambios nota? .....................................................................................................................
e. Guarde los cambios efectuados.
188
Capítulo 8: Macros
189
Excel for Masters - Macros y Aplicaciones con VBA
190
CAP.
Macros y Aplicaciones
9
LABORATORIO DE PRÁCTICA
Revisando el caso
1. Vaya a la hoja Consulta.
2. Seleccione un mes, por ejemplo Marzo y elija un número de medidor, en este caso el número
IND-3534.
3. Su hoja se debe mostrar como:
Creando la macro
1. Se necesita crear una macro que permita cambiar el tipo de gráfico a uno de líneas.
a. Clic en la ficha Programador.
b. Ubique el grupo Código y haga clic en el comando Grabar macro.
191
Excel for Masters - Macros y Aplicaciones con VBA
c. Escriba el nombre de la macro. En nuestro caso será Líneas. En Guardar macro en, elija Este
libro. Su ventana debe quedar como:
d. Clic en Aceptar. A partir de este momento se graba toda acción que usted realice:
i. Haga clic en el gráfico creado.
ii. Vaya a la ficha Diseño de las Herramientas para gráficos.
iii. Haga clic en el comando Cambiar tipo de gráfico.
iv. Elija un gráfico de líneas y haga clic en Aceptar.
v. Haga clic en la celda B20 de su hoja de cálculo.
e. Para finalizar la macro: ubique el botón Detener de la barra de estado de Excel.
192
Capítulo 9: Macros y Aplicaciones
Antes de realizar las macros para subtotales, es necesario recordar cómo se generan estos valores:
• Se ordena la lista por el campo a emplear para los subtotales.
• Clic en la ficha Datos, Subtotal.
• Se elige el campo de subtotal, la función y el campo a calcular.
Ahora que ya sabemos en líneas generales como se aplican subtotales, se relacionarán estos con las
macros a generar.
193
Excel for Masters - Macros y Aplicaciones con VBA
c. Escriba el nombre de la macro. En nuestro caso será PorContinente. En Guardar macro en, elija
Este libro. Su ventana debe quedar como:
d. Clic en Aceptar. A partir de este momento se graba toda acción que usted realice:
i. Haga clic en alguna celda de la columna Continente.
ii. Use el botón Orden ascendente. La lista se ordena por el nombre del continente.
iii. Luego, vaya a la ficha Datos, Subtotal.
iv. Cambie esta ventana de acuerdo a:
194
Capítulo 9: Macros y Aplicaciones
f. El resultado es:
195
Excel for Masters - Macros y Aplicaciones con VBA
2. En este ejercicio se modificarán las macros para que ejecuten primero el procedimiento Quitar
todos y de esta manera asegurar que las macros trabajen correctamente, tal como lo vio en el
paso ‘b’.
a. Entre al editor de VBA pulsando las teclas ALT + F11.
b. En el Explorador de proyectos, haga doble clic sobre el objeto Módulo1.
196
Capítulo 9: Macros y Aplicaciones
c. Ubique la macro Por Continente y escriba la instrucción CALL Quitar SubTotal al inicio del
procedimiento. Observe cómo debe quedar su código:
Mejorando la performance
Si usted ya probó las macros creadas, todas ellas trabajan correctamente pero hay un inconveniente,
el refresco o parpadeo de la pantalla mientras se ejecutan las macros es molesto.
1. Vamos a desactivar el refresco de pantalla:
a. Entre al editor de VBA.
b. Ubique la macro Quitar SubTotal.
c. Agregue el comando Application.ScreenUpdating = False al inicio del procedimiento. El código
debe quedar:
197
Excel for Masters - Macros y Aplicaciones con VBA
Revisando el caso
1. Vaya a la hoja General.
2. Complete el cuadro de acuerdo:
a. En la celda B4 escriba:
=SUBTOTALES(3;A10:A5008)
b. En la celda B5 escriba:
=SUBTOTALES(3;I10:I5008)
Creando la macro
Se necesita crear una macro que aplique filtros avanzados, empleando una fila de criterios.
1. El rango de criterios va a ser de una sola fila.
a. Seleccione la celda F3:I4.
b. Aplique el nombre de Criterios1.
2. Para crear la macro:
a. Clic en la ficha Programador.
b. Ubique el grupo Código y haga clic en el comando Grabar macro.
198
Capítulo 9: Macros y Aplicaciones
c. Escriba el nombre de la macro. En nuestro caso será Filtros1. En Guardar macro en, elija Este
libro. Su ventana debe quedar como:
d. Clic en Aceptar. A partir de este momento se graba toda acción que usted realice:
i. Haga clic en la celda A9.
ii. Vaya a la ficha Datos y haga clic en Avanzadas.
iii. En el cuadro Rango de criterios, escriba Criterios1.
199
Excel for Masters - Macros y Aplicaciones con VBA
200
Capítulo 9: Macros y Aplicaciones
1. En la hoja Listas:
a. Seleccione la celda F2:I3 y aplique el nombre de Criterio Copia.
b. Seleccione las celda A6:I6 y aplique el nombre de Destino.
201
Excel for Masters - Macros y Aplicaciones con VBA
202
CAP.
Funciones Definidas
por el Usuario 10
EL EDITOR DE VBA
Las aplicaciones Office ya vienen con el editor de VBA incluido, es decir no es necesario realizar ninguna
instalación adicional o personalizada. El editor de Visual Basic parecerá complejo al abrirlo por primera
vez,ya que muestra una interfaz muy diferente a la de Excel. No tiene cinta de opciones ni la vista
backstage, por ejemplo. Está pensado para que necesiten comodidad al programar y no ha cambiado
mucho desde la versión 97 cuando fue lanzado al mercado junto con Office 97.
INGRESAR AL EDITOR
Para ingresar al editor puede emplear estos 2 métodos:
1. Presionar las teclas ALT + F11.
2. En la ficha Programador, hacer clic en el comando Visual Basic.
203
Excel for Masters - Macros y Aplicaciones con VBA
La Barra de Herramientas
Posee una serie de botones que permiten acceder a tareas generales de edición como copiar, cortar
y pegar; opciones del proyecto: insertar procedimientos, módulos y formularios; y acciones con el
código desarrollado: ejecutar un procedimiento, etc.
La ventana de Propiedades
Una propiedad es una característica de un objeto tal como el color o el título del objeto. Se configura
la propiedad para especificar la característica o comportamiento de un objeto. Por ejemplo, puede
configurar la propiedad RemovePersonalInfo del libro de Excel a TRUE para que la información del
usuario no se grabe junto con el libro.
Puede utilizar la ventana de propiedades para configurar las propiedades de un objeto en tiempo de
diseño. La ventana Propiedades es muy útil cuando está trabajando con cajas de diálogos personalizadas
(UserForm) y controles ActiveX.
204
Capítulo 10: Funciones Definidas por el Usuario
El Explorador de Proyectos
Todos los códigos asociados con un libro de trabajo son almacenados en un proyecto que es
automáticamente guardado junto con un libro de trabajo. En el Explorador de Proyecto de Visual
Basic podrá ver, modificar y navegar por los proyectos de cada libro de trabajo abierto o referenciado.
Usted podrá redimencionar el Explorador de Proyectos: reducir o agrandar su ventana por cualquier
parte de editor para un fácil uso.
Dentro de un Proyecto, puede haber objetos de aplicación que tienen eventos asociados con ellos, las
cajas de diálogos (llamadas Userforms en el Explorador de Proyectos), módulos estándares, módulos
de clases y referencias.
205
Excel for Masters - Macros y Aplicaciones con VBA
En el Explorador de Proyectos, se necesita un proyecto para cada libro de trabajo. En cada proyecto
encontrará objetos tales como objetos Workbook, objetos Worksheet; formularios (también llamados
UserForms), que son interfaces personalizadas de caja de diálogo y el código que controla cómo
los usuarios interactúan con una caja de diálogo particular; módulos estándares, que contienen
códigos que no están asociados a un objeto particular o formulario, módulos de clase, que contienen
información acerca de un tipo de objeto personalizado, y referencia a otros proyectos.
La ventana de código
Esta ventana le permite ver el código asociado a un objeto de Excel (como un Worksheet o un Workbook),
a un objeto de un formulario (como un botón de comandos, una casilla de verificación, etc.).
206
Capítulo 10: Funciones Definidas por el Usuario
Usted puede navegar por la ventana de código, utilizando los elementos listados en las cajas Objeto y
Procedimiento en la parte superior de la ventana.
Objeto
Procedimiento
En el cuadro Objeto, haga clic en el nombre del objeto disponible y luego haga clic al nombre del
procedimiento en la cuadro Procedimiento.
ADMINISTRAR MÓDULOS
Los módulos permiten coleccionar procedimientos y funciones generales a emplear en su proyecto.
Si desea escribir un código que no se asocie con un evento u objeto específico, puede crear un
procedimiento en un módulo estándar en el Visual Basic.
207
Excel for Masters - Macros y Aplicaciones con VBA
Así se mostrará:
Luego que usted agrega un procedimiento a un módulo, puede agregar un código a un procedimiento.
El siguiente ejemplo agrega al código anterior una que muestre un cuadro de mensaje.
Guardar código
Como ya se dijo, el código asociado a un libro se guarda automáticamente junto a él. En caso de querer
guardar el código de manera independiente:
1. Seleccione el módulo en el Explorador de proyecto.
2. Luego, use el botón derecho y elija Exportar archivo.
208
Capítulo 10: Funciones Definidas por el Usuario
Quitar un módulo
En caso de borrar un módulo y sus correspondientes procedimientos y funciones:
1. Seleccione el módulo en el Explorador de proyecto.
2. Luego, use el botón derecho y elija Quitar módulo.
PERSONALIZAR EL EDITOR
Si todo lo que quiere hacer es escribir un simple procedimiento o editar una macro que ha grabado,
querrá evitar algunas de las características avanzadas del Editor de Visual Basic. Aquí tenemos algunos
métodos que puede simplificar en su entorno de codificación.
209
Excel for Masters - Macros y Aplicaciones con VBA
Ocultar su Explorador
Si sólo está trabajando en el código en un módulo estándar y no necesita navegar a otros códigos en
un proyecto, cierre el Explorador de proyectos.
Alguna vez le debe haber sucedido: quería hacer un cálculo y se preguntó ¿es qué no hay una función
para esto? Por ejemplo, qué sucede cuando quiere calcular el IGV de un precio: ¿No existe una función
que realice ese cálculo? Sobre esta última pregunta habría que decir que hay una buena y una mala
noticia. La mala es que no, como Ud. supuso, no existe una función que calcule el IGV de un precio.
Sin embargo, la buena noticia que debo darle es que sí, hay una forma para crear una función que
efectúe este cálculo (y puede ponerle el nombre que quiera). A esto se le conoce como una función
personalizada (hecha a la medida).
Es así que Excel deja abierta la posibilidad a sus usuarios de definir cuantas funciones personalizadas
desee, ya sea para un libro en concreto o disponibles en una especie de ‘librerías’ (complementos)
para que puedan ser usadas desde cualquier otro libro que la necesite.
Para este ejemplo asumiremos que deseamos crear una función llamada IGV que calcule el 19% de un
importe. Para esto tenemos un libro de prueba en el cual emplearemos la función:
1. Vaya a la ficha Programador.
2. Haga clic en el comando Visual Basic.
210
Capítulo 10: Funciones Definidas por el Usuario
4. Dentro de esta nueva ventana se escribe la función entre las palabras reservadas Function y End
Function.
End Function
5. Esta es la función personalizada IGV, que recibe un Importe como parámetro y devuelve como
resultado el producto del Importe por 0.19 (19% del Importe). Observe con detenimiento la sintaxis
empleada:
SINTAXIS
Para escribir una función, debe considerar la siguiente sintaxis:
Primero se define si la función será Pública o Privada. En el caso de que esté creando funciones
personalizadas puede usar indistintamente cualquiera de ellas. Lo que determinan estas palabras es el
alcance de la función, es decir, si podrán ser visibles desde otros módulos.
Luego del nombre de la función debe indicar todos los parámetros que esta necesitará para realizar su
cálculo. Estos parámetros se separan con comas y cada uno se define indicando su nombre y luego su
tipo de la siguiente forma:
NombreParámetroASTipo
En el ejemplo se ha definido un parámetro llamado Importe y de tipo Double. El tipo indica qué datos
serán aceptados por el parámetro. Double permite aceptar números en coma flotante de tamaño
mediano.
Se usa el mismo nombre de la función y se iguala a un cálculo (también podría haberse usado una
variable si es que el cálculo es muy complejo). En este caso el cálculo es el producto del parámetro
Importe y el valor constante 0.19.
211
Excel for Masters - Macros y Aplicaciones con VBA
Probar la función
Para probar la función sólo debe escribirla en su hoja de cálculo, respetando su sintaxis. Por ejemplo,
considerando una hoja de cálculo como la mostrada:
1. En la celda C4 escriba:
=IGV(C4).
2. El parámetro Importe está representado en este caso por el valor de la celda C4 (el importe). Excel
muestra el resultado:
212
Capítulo 10: Funciones Definidas por el Usuario
5. Las funciones UDF son consideradas como otra función de Excel; por ejemplo, el nombre se muestra
automáticamente si la escribe en su hoja de cálculo:
Sintaxis
Function NombreFunción (argumento1 as tipo, argumento2 as tipo, etc.)
En el siguiente código, se emplea la función Importe con 2 argumentos. Cada argumento puede ser de
diferente tipo y son separados siempre por la coma.
End Function
213
Excel for Masters - Macros y Aplicaciones con VBA
Para emplearla en Excel, debe escribir la función separando los argumentos por el separador de listas
de Windows (que generalmente puede ser coma o punto y coma).
1. Considerando la siguiente hoja:
Las funciones UDF también pueden emplear rangos como argumentos, en este caso debe emplear el
tipo RANGE en el argumento que se envía al procedimiento:
Sintaxis
Function NombreFuncion (argumento as RANGE)
La función recibe un rango como argumento y debe recorrer dicho rango para leer celda a celda y
realizar los cálculos solicitados.
Para recorrer el rango puede emplear el ForEach.
‘procesar x
Next x
mySuma = x
End Function
En el ejemplo anterior, observe cómo se emplea la sentencia FOR EACH para leer cada celda del rango
enviado. La variable celda declarada también de tipo RANGE, toma el valor de cada celda del rango.
214
Capítulo 10: Funciones Definidas por el Usuario
Ese último argumento es opcional e indica que la búsqueda debe ser exacta.
Los argumentos de las funciones aceptan una cláusula Optional antes de cada uno de ellos. Optional
indica que un argumento no es necesario. Si se utiliza, todos los argumentos posteriores de lista_
argumentos también deben ser opcionales y declararse mediante la palabra clave Optional.
Sintaxis
Function NombreFuncion (argumento as tipo, Optional argumento as tipo).
215
Excel for Masters - Macros y Aplicaciones con VBA
Es adecuado que la función asuma un valor por defecto al omitir el argumento opcional.
inicial = Left(nombre, 1)
espacio = InStr(nombre, “ “)
apellido = Mid(nombre, espacio + 1, Len(nombre) - espacio)
anio = Y ear(fecha)
End Function
216
Capítulo 10: Funciones Definidas por el Usuario
Sintaxis
Descripción
Sintaxis
Descripción
Proyecto
217
Excel for Masters - Macros y Aplicaciones con VBA
Proyecto
Descripción
218
Capítulo 10: Funciones Definidas por el Usuario
Puede crear una categoría y agregar las funciones creadas a dicha categoría empleando la instrucción
MacroOptions. Gracias a esto, puede crear categorías y agregar funciones a dicha categoría.
1. En el editor de VBA escriba la siguiente instrucción:
Sub AddUDF()
End Sub
2. Presione F5 para ejecutar el procedimiento. En ese código debe considerar que la función
Genera se agrega a la categoría Personales. En el caso de no existir dicha categoría se crea
automáticamente.
3. Para agregar otras funciones a la categoría:
Sub AddUDF()
End Sub
219
Excel for Masters - Macros y Aplicaciones con VBA
LABORATORIO DE PRÁCTICA
220
Capítulo 10: Funciones Definidas por el Usuario
221
Excel for Masters - Macros y Aplicaciones con VBA
d. Escriba el nombre para el libro, en nuestro caso será el mismo que propone Excel. Haga clic en
Guardar.
e. Ahora, abra la carpeta Capítulo_11 y observe los 2 archivos:
End Function
222
Capítulo 10: Funciones Definidas por el Usuario
2. Se necesita crear una función que reciba una fecha y que muestre el nombre del mes de dicha
fecha.
a. Ingrese al Editor de VBA.
b. Escriba la siguiente función:
NombreMes = UCase(MonthName(Month(fecha)))
End Function
d. El resultado es:
3. Se necesita crear una función que convierta temperaturas Fº en Celsius. Considerando la siguiente
fórmula:
223
Excel for Masters - Macros y Aplicaciones con VBA
P= (a+b+c)/2
End Function
224
Capítulo 10: Funciones Definidas por el Usuario
2. Se necesita crear una función que calcule el importe de Horas extras, considerando:
Las horas normales a trabajar son 160. Por cada hora extra se paga un 50% más de la hora normal.
Por ejemplo, para el 1er. empleado A0001 con 165 horas y 1600 de sueldo.
Horas extras = horas trab - horas normales = 165-160 = 5
Pago hora = sueldo / horas normales = 1600 / 160 = 10
Pago hora extra = 50% más del Pago hora = 10 * 1.5 = 15
Importe de horas extras = horas extras * pago hora extra = 5 * 15 = 75
End Function
225
Excel for Masters - Macros y Aplicaciones con VBA
mySuma = x
End Function
2. Se necesita crear una función que cuente los números pares o impares de un rango especificado.
La función debe tener 2 argumentos: el rango a emplear y el tipo P para los pares e I para los
Impares.
a. Ingrese al Editor de VBA.
b. Escriba la siguiente función:
226
Capítulo 10: Funciones Definidas por el Usuario
End Function
227
Excel for Masters - Macros y Aplicaciones con VBA
La función debe recibir el nombre y fecha de nacimiento del usuario y como argumento opcional el
texto M. Si se pasa el argumento M se debe generar la cuenta de correo.
a. Ingrese al Editor de VBA.
b. Escriba la siguiente función:
inicial = Left(nombre, 1)
espacio = InStr(nombre, “ “)
apellido = Mid(nombre, espacio + 1, Len(nombre) - espacio)
anio = Year(fecha)
End Function
228
Capítulo 10: Funciones Definidas por el Usuario
c. Use el botón derecho sobre la función Genera y elija Propiedades. Escriba una descripción para
esta función.
229
Excel for Masters - Macros y Aplicaciones con VBA
Sub AddUDF()
End Sub
b. Presione F5 para ejecutar el procedimiento. En ese código debe considerar que la función
Genera se agrega a la categoría Personales. En el caso de no existir dicha categoría se crea
automáticamente.
c. Para agregar otras funciones a la categoría, basta con escribir en Macro la función a agregar, en
nuestro caso IGV.
Sub AddUDF()
End Sub
d. Presione F5. Repita el procedimiento para agregar todas las funciones creadas a la categoría
Personales.
2. El resultado debe ser:
230
CAP.
Complementos
11
COMPLEMENTOS
Los complementos proporcionan características y comandos adicionales a Excel. Dos de los
complementos más conocidos son Herramientas para análisis y Solver, que ofrecen una capacidad
ampliada de análisis de datos para la planeación de ‘Y si’.
Los tipos de complementos que puede usar en Excel son:
• Los complementos de Excel, como las Herramientas para análisis y Solver, están disponibles cuando
se instala Microsoft Office o Excel.
• Se pueden descargar complementos adicionales de Excel desde Descargas en Microsoft Office
Online.
• Los programadores y los proveedores de soluciones generalmente diseñan complementos COM,
personalizados y complementos de automatización.
231
Excel for Masters - Macros y Aplicaciones con VBA
CARGAR COMPLEMENTOS
Al agregar un complemento a Excel sólo lo debe hacer una vez, posteriormente Excel abre el
complemento automáticamente.
4. Si el complemento que desea utilizar no aparece en la lista del cuadro Complementos disponibles,
haga clic en Examinar y, a continuación, busque el complemento. Los complementos que no están
disponibles en el equipo se pueden descargar de Descargas en Office Online.
5. Si el complemento no está instalado actualmente en el equipo, haga clic en Sí para instalarlo y siga
los pasos de instalación.
Tras cargar un complemento, el programa y sus comandos están disponibles en una de las siguientes
ubicaciones:
Ficha Datos. Los complementos Herramientas para análisis y Solver se muestran en el grupo Análisis.
232
Capítulo 11: Complementos
Un complemento funciona como una librería de utilidades. Puede contener funciones que podrán ser
utilizadas por cualquier libro que las solicite.
Proteger su complemento
Si va a crear un complemento y utilizarlo en otros libros, cabe la posibilidad de que otras personas
puedan ver el código generado. Así, cualquier usuario podría revisar las funciones y conocer las
consideraciones establecidas.
Cuando protege el proyecto, dicha protección se refleja la próxima vez que abre el libro y desee ver el
código de su proyecto VBA.
233
Excel for Masters - Macros y Aplicaciones con VBA
4. En esta ventana, vaya a la ficha Protección. Active la casilla Bloquear… y escriba una contraseña.
Crear el complemento
Los Complementos de Excel son libros con extensión *.XLAM y se muestran con un icono diferente.
Por defecto, Excel tiene una ruta para guardar y abrir los complementos generados por los usuarios:
En Windows XP:
C:\Documents and Settings\usuario\Datos de programa\Microsoft\Complementos
En Windows 7:
C:\Users\nombre_usuario\AppData\Roaming\Microsoft\Complementos
DISTRIBUIR UN COMPLEMENTO
Una vez generado un complemento, puede compartirlo con otros usuarios que también quieran
aprovechar de las nuevas funciones agregadas.
234
Capítulo 11: Complementos
LABORATORIO DE PRÁCTICA
Protegiendo su proyecto
1. Abra el archivo Funciones de la carpeta Capítulo_11.
2. En la ficha Fórmulas, elija el comando Insertar función…y vaya a la categoría Definidas por el
usuario.
Escriba el nombre de las funciones disponibles ................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
c. En esta ventana, vaya a la ficha Protección. Active la casilla Bloquear… y escriba la contraseña
123. Escriba la misma contraseña en la confirmación.
d. Haga clic en Aceptar para terminar.
e. Cierre el editor de VBA.
Creando el complemento
1. Use el comando Archivo y elija Guardar como…
2. Como nombre escriba UDF y cambie el tipo de archivo a Complemento de Excel.
3. Haga clic en Guardar.
¿Se muestra el nombre (UDF) en la barra de título de Excel? ...........................................................
............................................................................................................................................................
235
Excel for Masters - Macros y Aplicaciones con VBA
Probando el complemento
1. Abra un libro en blanco.
2. Para probar el complemento:
a. Escriba la siguiente tabla:
Cargando el complemento
El paso anterior muestra Error debido a que Excel no reconoce todavía el nombre de la función. Es
necesario cargar el complemento creado:
1. Cargar el complemento:
a. Haga clic en el botón Archivo y elija Opciones.
b. Entre al cuadro Complementos, ubique el grupo Administrar.
c. Haga clic en Ir.
d. En el cuadro Complementos disponibles, active la casilla de verificación situada junto al
complemento UDF.
236
Capítulo 11: Complementos
2. Para comprobar:
a. En la hoja presione la tecla F9.
3. Haga doble clic en el proyecto para ver el código de las funciones creadas. Se muestra:
237
Excel for Masters - Macros y Aplicaciones con VBA
Copiando el archivo
1. Vaya a la carpeta Capítulo_11 y copie el archivo llamado Rangos.xlam.
2. Ahora, desde el Explorador de Windows, vaya a la carpeta donde se guardan los complementos.
Recuerde que son carpetas diferentes, sea Windows XP o Windows 7.
3. Pegue aquí el archivo.
Cargando el complemento
1. Ahora, realice el procedimiento necesario para cargar el complemento a Excel.
Probando la funcionalidad
1. Abra el libro Demo de Funciones de la carpeta Capítulo_12.
2. Escriba valores en toda la tabla, desde la celda C5 a la H8.
3. Ahora, en la celdaH10, escriba la siguiente fórmula:
=SumaColor(C5:H8)
4. El resultado debe ser:
238
CAP.
Fundamentos de
Programación 12
INSERTANDO UN MÓDULO ESTÁNDAR
Como se mencionó anteriormente, los procedimientos generales también pueden almacenarse
en un módulo estándar. El código en los módulos estándar es Público por defecto, de modo que
los procedimientos generales almacenados allí pueden ser fácilmente llamados desde dentro de
procedimientos de eventos u otros procedimientos generales. Almacenar código compartido en
módulos estándar también hace más fácil organizar su proyecto.
PROCEDIMIENTOS
También llamados SUBRUTINAS. Un procedimiento es un bloque de código que realiza una acción
simple. Luego que la subrutina completa su trabajo (se ejecuta el código que tiene), retorna a la línea
siguiente a la línea que lo llamó.
Sub Inicio( )
‘ejemplo de procedimientos
MsgBox “SIL - Soporte Académico” & vbLf _
& “Bienvenidos, son las “ & Time
End Sub
SINTAXIS
Si quiere escribir un procedimiento, debe seguir la siguiente sintaxis:
Sub NombreProcedimiento( )
[bloque_ de _sentencias ]
End Sub
239
Excel for Masters - Macros y Aplicaciones con VBA
Sub Lee_Datos( )
nombre = InputBox (“Nombre de usuario: “)
MsgBox “Bienvenido “ & nombre
End Sub
Están encerrados entre Sentencias Sub y End Sub: Todos los procedimientos comienzan con la
sentencia Sub y finalizan con la sentencia End Sub. El nombre del procedimiento está siempre seguido
por paréntesis, aun si no existen argumentos.
Pueden Tomar Argumentos: Es decir, los valores con los que trabajarán los procedimientos no deben
ser necesariamente fijos, sino pueden tomar distintos valores:
Por ejemplo:
Sub Prueba1()
‘ejemplo de procedimientos con argumentos
Dim nombre As String
nombre = “Hugo Vizcarra.”
‘llama al proced. Inicio2, pasando como argumento la variable nombre
Inicio2 (nombre)
End Sub
Para probar los procedimientos de este capítulo, escríbalos directamente en el módulo agregado.
240
Capítulo 12: Fundamentos de Programación
No devuelven un valor: Una Subrutina no devuelve un valor a la sentencia que la llama. Una Subrutina
puede, sin embargo, devolver información al código que lo llama modificando los argumentos, o
mediante la modificación o cambio de los valores de las variables a nivel de formulario.
EJECUTAR UN PROCEDIMIENTO
Si usted ya tiene procedimientos en un módulo, puede ejecutarlos para probar la funcionalidad de
cada uno de ellos. Cuando ejecuta el procedimiento, VBA interpreta línea por línea el código generado
y muestra el resultado o acción.
FUNCIONES
La mayor diferencia entre procedimientos de tipo función y subrutinas es que los procedimientos
de función devuelven un valor, mientras que las subrutinas no lo hacen. Además, para ejecutar una
función, esta debe ser llamada desde un procedimiento general o de evento.
El valor por defecto devuelto por un procedimiento de función es del tipo de dato Variant. Debe
especificar un tipo de dato para los valores devueltos usando la palabra clave As.
Function Fecha( )
Fecha = Format(Date, “dddd, mmm dd yyyy”)
End Function
Sub Invoca_Funcion( )
Msgbox Fecha
End Function
241
Excel for Masters - Macros y Aplicaciones con VBA
SINTAXIS:
Para escribir una función debe considerar la siguiente sintaxis:
FunctionNombreFuncion( ) As TipoDato
EndFunction
Debido a que los procedimientos de Función pueden devolver valores al igual que las funciones
incorporadas de Visual Basic, se usan frecuentemente para realizar cálculos.
Los procedimientos de Función también se usan cuando se comprueban errores. El siguiente ejemplo
muestra un procedimiento de Función que abre un archivo. Si puede abrir el archivo, se devuelve True
al procedimiento que llamó a la Función. En caso contrario, se devuelve False:
End Function
242
Capítulo 12: Fundamentos de Programación
[Código de la Subrutina]
End Sub
Sub Prueba1()
‘ejemplo de procedimientos con argumentos
Dim nombre As String
nombre = “Hugo Salazar”
‘llama al proced. Inicio2, pasando como argumento la variable nombre
Inicio2 (nombre)
End Sub
EndFunction
243
Excel for Masters - Macros y Aplicaciones con VBA
Cuando invoque a la función, debe pasar el mismo número de argumentos en el mismo orden en que
aparecen en la definición del procedimiento.
Sub Alerta( )
‘ejemplo de procedimientos y funciones
Dim valor As Double
valor = 400
If Valida(valor) = True Then
MsgBox “Apertura de Crédito”, vbInformation, “Estado”
Else
MsgBox “Solicitud Rechazada “, vbCritical, “Estado”
End If
End Sub
Los nombres de los argumentos usados cuando llama a la Subrutina o función no tienen que
coincidir con los nombres de los parámetros usados en la definición del procedimiento. El
número, tipo de dato y orden de los argumentos, sin embargo, debe coincidir con los parámetros
en la definición del procedimiento.
CUADROS DE MENSAJES
Los cuadros de mensajes permiten visualizar información al usuario o pedir que ingrese datos a través
del teclado.
MSGBOX
En su forma más simple, el cuadro de mensajes se utiliza para que el programa muestre un mensaje y
espere que el usuario pulse ENTER o haga clic en el botón Aceptar para continuar.
El mensaje debe ser un texto entre comillas o una variable que contenga texto. Si se desea controlar
en dónde debe haber un cambio de línea en el mensaje, se recomienda colocar la constante de Visual
Basic vbNewLine (nueva línea).
244
Capítulo 12: Fundamentos de Programación
Sub Saludo()
MsgBox “Bienvenido, hoy es “ & Date &vbNewLine& Time
End Sub
Si lo desea, puede especificar los botones, los iconos o el título que debe mostrar el cuadro. La sintaxis
debe ser:
MsgBoxmensaje, botones, título
El título debe ser un texto entre comillas o una variable que contenga texto.
Es posible que este cuadro muestre más botones u otros diferentes a Aceptar. En este caso, incluso, es
posible devolver un número entero que indica el botón que fue presionado.
Los posibles valores de botones están contenidos en la clase vbMsgBoxStyle de la librería Visual Basic
forApplications y son:
Constante Descripción
vbOKOnly Muestra solamente el botón Aceptar.
vbOKCancel Muestra los botones Aceptar y Cancelar.
vbAbortRetryIgnore Muestra los botones Anular, Reintentar e Ignorar.
vbYesNoCancel Muestra los botones Sí, No y Cancelar.
vbYesNo Muestra los botones Sí y No.
vbRetryCancel Muestra los botones Reintentar y Cancelar.
vbCritical Muestra el icono de mensaje crítico.
vbQuestion Muestra el icono de pregunta de advertencia.
vbExclamation Muestra el icono de mensaje de advertencia.
vbInformation Muestra el icono de mensaje de información.
245
Excel for Masters - Macros y Aplicaciones con VBA
Sub Confirmar()
MsgBox “Este proceso es irreversible” &vbNewLine& “¿Desea continua?”, _
vbYesNo + vbQuestion, “Confirme la acción”
End Sub
Para determinar qué botón es el que se ha presionado, se debe usar MsgBox como una función. De
esta manera, podrá determinar sobre qué botón se hizo clic y realizar acciones de acuerdo a él.
Los posibles valores de la variable Resultado en la instrucción anterior están contenidos en el conjunto
vbMsgBoxResult y son:
Siguiendo con el ejemplo anterior, si usted desea que al hacer clic en el botón Sí del cuadro de mensaje
se realicen acciones, el procedimiento será:
Sub Confirmar()
Dimrpta As VbMsgBoxResult
Ifrpta = vbYesThen
‘líneas de código que debe realizar si hace clic en Sí
Else
Exit Sub
End If
End Sub
Vea que se declaró una variable rpta como del tipo VbMsgBoxResult que almacenará la respuesta del
usuario en el cuadro de mensaje. La estructura condicional If pregunta si la variable contiene el valor
vbYes, es decir, si el usuario pulsó el botón Sí.
246
Capítulo 12: Fundamentos de Programación
INPUTBOX
Muestra un mensaje en una ventana de diálogo, espera que el usuario escriba un texto o haga clic en
un botón y devuelve un valor de tipo String con el contenido del cuadro de texto.
Adicionalmente, es posible especificar el título del cuadro y el texto que se muestre al aparecer el
cuadro.
Sub Evaluar()
If unidades = “” Then
Exit Sub
Else
‘proceso que se realiza si ingreso datos
End If
End Sub
247
Excel for Masters - Macros y Aplicaciones con VBA
VARIABLES
Es un lugar de almacenamiento con nombre que contiene un dato que puede ser modificado durante
la ejecución del programa.
Puede contener distintos tipos de datos, tales como texto, números o valores lógicos (True o False).
Pueden definirse de modo que estén disponibles para otras partes de su programa.
La siguiente tabla muestra los tipos de datos soportados por Visual Basic, incluyendo sus tamaños de
almacenamiento y rango.
Tamaño de
Tipo Rango
almacenamiento
Byte 1 byte 0 a 255
Boolean 2 bytes True o False
Integer 2 bytes -32,768 a 32,767
Long (entero Largo) 4 bytes -2,147,483,648 a 2,147,483,647
-3.402823E38 A –1.401298E-45 para valores
Single (Punto flotante
4 bytes negativos; 1.401298e-45 a 3.402823E38 para los
de simple precisión)
valores positivos.
-1.79769313486232E308 a –4.94065645841247E-
Double (Punto
324 para valores negativos; 4.94065645841247E-
flotante de doble 8 bytes
324 a 1.79769313486232E308 para valores
precisión)
positivos.
-922,337,203,685,477.5808 a
Currency 8 bytes
922,337,203,685,477.5807.
Date 8 bytes January 1, 100 toDecember 31, 9999
Object 4 bytes Cualquier referencia a un Objeto.
10 bytes +
String (Tamaño
tamaño de 0 hasta aproximadamente 2 billones
Variable)
cadena
Tamaño de
String (Tamaño fijo) 1 hasta aproximadamente 2 billones
cadena
Cualquier valor numérico hasta el rango de un
Variant (con números) 16 bytes
Double.
22 bytes +
Variant(con
tamaño de la El mismo rango que un String de tamaño variable.
caracteres)
cadena
248
Capítulo 12: Fundamentos de Programación
Las variables pueden contener un valor de distintos tipos de datos, tales como texto, enteros, lógicos
u objetos. Si indica a Visual Basic que use un tipo de dato especifico cuando declara variables, puede
optimizar el código en velocidad y tamaño.
Por defecto, las variables usan un tipo de dato denominado Variant. El beneficio de usar este tipo
es que puede almacenar virtualmente cualquier tipo de dato. Sin embargo, a fin de mantener esta
flexibilidad, el tipo de dato Variant requiere de una gran cantidad de espacio de almacenamiento
(memoria).
Seleccionado un tipo de dato apropiado para sus variables, puede hacer que su código sea más
eficiente. Por ejemplo, suponga que está utilizando una variable para contar el número de veces que
se ejecuta un bloque de código. Hay varios tipos de datos que se pueden utilizar para este propósito,
pero el más eficiente es el Integer. Compare la memoria utilizada para un Integer y la memoria
requerida para almacenar un Variant.
Cuando esta diferencia es multiplicada por la cantidad de variables usadas por su programa, el ahorro
de memoria puede ser importante.
Nombres de Variables
Cuando ponga a una variable, use las siguientes reglas. Un nombre de variable:
• Debe comenzar con un carácter alfabético.
• No puede contener un carácter de declaración de tipo (%, &, !, #, @ o $).
• Debe ser único dentro de su propio ámbito.
• No debe tener más de 255 caracteres.
Convenciones
Así como con formularios y controles, existen convenciones de nombre estándar que se aplican a
variable. Colocar un prefijo al nombre de variable con una abreviatura que represente el tipo de dato
almacenado en la variable:
249
Excel for Masters - Macros y Aplicaciones con VBA
También puede prefijar el nombre de variable con una abreviatura que represente el ámbito de la
variable:
Ámbito Prefijo
Global g
Módulo/formulario m
Local l
CONSTANTES
Las constantes son similares a las variables ya que son ubicaciones de almacenamiento con nombre
en la memoria. También, las constantes pueden ser locales, de módulo o globales en ámbito. Sin
embargo, a diferencia de las variables, las constantes contienen valores que no cambiarán durante la
ejecución del programa.
Las constantes son más eficientes que las variables y hacen más fácil el mantenimiento del programa.
Sintaxis
La sintaxis para declarar una constante es:
[Public | Private ]Constnomconst [As tipo] = expresión
Las constantes usan las mismas reglas de las variables para declarar datos locales, de módulo o
globales.
250
Capítulo 12: Fundamentos de Programación
Por ejemplo:
Cons strPASSWORD As String =”Expreso”
Public Const PI = 3.14145
Area = PI * radio ^ 2
Cincun = 2 * PI * radio
Sugerencia: Use letras mayúsculas para nombres de constantes. Esto distinguirá las Constantes de las
variables en su programa y servirá para recordar que las constantes no pueden ser modificadas en su
programa.
OPERADORES
Los operadores especifican el tipo de cálculo que se desea realizar con variables, constantes y objetos
y permiten obtener resultados. En VBA se tiene los mismos operadores que en otros lenguajes de
programación.
Operadores Operación
Aritméticos
^ Exponenciación
* Multiplicación
/ División
\ División entera
Mod Residuo Entero (Ejemplo: A mod B)
+ Suma
- Resta
& Concatenación de cadenas
Comparación
= Igual
<> Distinto
< Menor que
> Mayor que
<= Menor o Igual a
>= Mayor o Igual a
LIKE compara dos cadenas:
* cero o más caracteres (ej. X like ”ma*”)
? cualquier carácter
# cualquier dígito (0-9)
[lista ] cualquier carácter en lista
[!lista ] cualquier carácter que no esté en lista
Is Usado para comparar dos variables de referencia a objetos.
Lógicos
And Y lógico
OR O lógico
Not Negación
251
Excel for Masters - Macros y Aplicaciones con VBA
REGISTROS O ESTRUCTURAS
Son tipos de datos definidos por el usuario. Es básicamente un conjunto de varios datos de tipo
elemental agrupados bajo una denominación común. Debe declararse en la parte de declaraciones
generales de un módulo. Se usa la palabra reservada Type.
Sintaxis
Typeusertype
Nombre - elemento AS tipo_dato
Nombre –elemento AS tipo_dato
Nombre – elemento AS tipo_dato
End Type
Ejemplo:
En este ejemplo se declara una variable de tipo registro, el cual contiene 3 columnas.
Type RegCliente
CliCodigoAsInterger
CliNombreAs String * 40
CliDireccionAs String * 120
EndType
ARREGLOS DE VARIABLES
Un arreglo es una colección de elementos del mismo tipo con un nombre común. Los elementos son
identificados por el nombre común y un índice.
Sintaxis
Dimnombre_arreglo (dimensión1, dimensión 2,....) As tipo dato
Visual Basic soporta hasta 60 dimensiones. Al declarar las dimensiones se puede indicar sólo un
número, en cuyo caso se entiende que esa dimensión va de cero hasta el número indicado. También es
posible indicar explícitamente el inicio y término de la dimensión.
ARREGLOS DINÁMICOS
Hay situaciones en las cuales se desea usar un arreglo, pero al momento de diseño no se sabe las
dimensiones del arreglo, pero sí al momento de ejecución. Para este tipo de situaciones Visual Basic
permite declaraciones de arreglos del siguiente modo:
Dim X( ) As integer
...
Redim X ( lsLista. ListCount)
252
Capítulo 12: Fundamentos de Programación
SENTENCIAS CONDICIONALES
Las sentencias condicionales pueden probar condiciones y luego, dependiendo de los resultados de
esa prueba, realizar diferentes operaciones. Existen dos tipos de sentencias condicionales en Visual
Basic.
• Sentencia If
• Sentencia If…Then…Else…
• SentenciaSelect Case
Las dos sentencias hacen básicamente la misma cosa: ejecutan un bloque de sentencias de código
dependiendo de los resultados de una prueba condicional. Sin embargo, las dos sentencias varían
ligeramente para servir distintos propósitos.
SENTENCIAS IF
La sentencia If se usa para evaluar si una condición es verdadera o falsa. Por ejemplo, puede usar una
sentencia If para determinar si se aplica o no una retención.
Sintaxis:
If <<condición>> Then
[código]
End If
Sub Calcular( )
‘ejemplo de sentencia If
monto = CDbl(InputBox(“Ingrese Monto: “, , 0))
Este ejemplo simple se compara si el monto ingresado por teclado es mayor a 1600. Si es así,
se aplica una retención del 10% del monto. Si el monto no excede dicha cantidad no se aplica
retención.
253
Excel for Masters - Macros y Aplicaciones con VBA
SENTENCIA IF…THEN…ELSE
Una sentencia If...Then…Else ejecuta el código encerrado cuando se encuentra una condición
específica. El principio esencial envuelto es “Si esto es verdadero, entonces hacer esto...”. El resto de
la sintaxis le permite variaciones del tema general.
Sintaxis
If condición Then
[sentencias]
[ElseIfcondición-n Then
[sentenciaselseif] ] ...
[Else
[sentenciaselse]]
End If
Por ejemplo, en el siguiente código una venta de S/.120 es mayor que S/. 100 y S/. 50, pero sólo se
ejecuta el código que está luego de la primera condición:
Sub Descuentos ( )
Ventas = Cdbl( InputBox (“Ingrese Valor de Ventas: “, ,0))
End Sub
254
Capítulo 12: Fundamentos de Programación
Sintaxis
Select Case expresión
Case listaexp-n1
[sentencias-n]] ...
Case listaexp-n2
[sentencias-n]] ...
Case Else
[sentenciasElse] ]
End Select
Sub Eleccion()
‘ejemplo de sentencia Select Case
Nivel = 3
Select Case Nivel
Case 1
MsgBox “Acceso a todo el sistema”
Case 2
MsgBox “Acceso a los formularios e Informes”
Case 3
MsgBox “Usted tiene Acceso de usuario”
End Select
End Sub
El ejemplo anterior examina el contenido de la variable Nivel. Luego compara el número de nivel
para determinar si el usuario obtiene privilegios a ciertos módulos del sistema.
En algunos casos, debe tomar una acción basada en el valor de una expresión simple. Tales problemas
pueden ser resueltos construyendo complejas sentencias If, pero son por lo general más fácilmente
resueltas con sentencias Select Case.
255
Excel for Masters - Macros y Aplicaciones con VBA
Por ejemplo, el código para calcular la tasa de descuentos de acuerdo a una variable Cantidad
(ingresada por teclado), se puede plantear como:
Sub Cantidad ( )
Cantidad = Cdbl( InputBox (“Ingrese Cantidad: “, ,0))
Select Case Cantidad
Case 1
Dscto = 0
Case 2 , 3
Dscto = 0.05
Case 4 To 6
Dscto = 0.10
Case Else
Dscto = .2
End Select
MsgBox Dscto
End Sub
En este otro ejemplo, la sentencia Select Case examina el valor devuelto por la función MsgBox y
realiza una tarea basada en el botón que presionó el usuario:
Sub Boton ( )
botonPres = MsgBox (“Guardar cambios antes de salir? “, vbYesNo)
Select Case botonPres
Case vbYes
MsgBox “Presiono Sí”
Case vbNo
MsgBox “Presiono No”
End Select
End Sub
256
Capítulo 12: Fundamentos de Programación
SENTENCIAS REPETITIVAS
Las sentencias repetitivas ejecutan un grupo de sentencias más de una vez dependiendo de las
condiciones particulares especificadas. Los dos tipos de bucles son: Do y for…Next.
SENTENCIAS DO…LOOP
Los bucles Do ejecutan el código un número indefinido de veces mientras se cumpla una condición.
Use bucles Do cuando no sabe cuántas veces debe ejecutar un bloque de código, pero puede definir
una condición que determinará cuándo terminará la ejecución del bloque de código:
Do UntilEndofFile =True
[Leer y procesar la siguiente Línea en el Archivo]
Establecer EndofFile en true si se llega al final del archivo]
Loop
En el ejemplo de bucle Do, el bloque de código se ejecutará por cada línea en un archivo. Debido a que
el número de líneas en el archivo es desconocido, el código usará una variable llamada EndOfFile para
almacenar un valor False hasta que el código llegue al final del archivo, donde EndOfFile se establece
en True. La sentencia DO entonces encuentra una condición que es verdadera (EndOfFile es igual a
True) y se desplaza hacia el código siguiente a la sentencia Loop.
Existen dos tipos de bucles Do: Uno que verifica la condición antes de ejecutar cualquier encerrado, y
otro que verifica la condición luego de ejecutar el código. La versión que realiza la verificación antes de
ejecutar el código se muestra en la siguiente sección.
Sintaxis 1
Do[{while|Until }condicion]
[sentencias]
[exit Do]
[sentencias]
Loop
Por ejemplo:
Sub Repetir( )
Do Until MsgBox(“Repetir ?”, vbYesNo) = vbNo
contador = contador + 1
Loop
MsgBox “El bucle se ejecutó: “ & contador & vbTab & “veces”
End Sub
257
Excel for Masters - Macros y Aplicaciones con VBA
En el ejemplo anterior la aplicación pregunta al usuario si desea repetir el proceso. Si responde que
NO, el procedimiento concluye y muestra las repeticiones.
En el siguiente ejemplo, se usa un bucle Do para encontrar todos los archivos en un directorio que
coincidían con la especificación de archivo ingresado por el usuario (por ejemplo, c:\windows\*.txt).
El ejemplo usa la función DIR, el cual devuelve el primer nombre de archivo que coincida con un
nombre de ruta especificada. Para obtener cualquier nombre de archivo adicional que coincida con
ese nombre de ruta, la función DIR es llamada otra vez sin argumentos. Cuando no coincidan más
nombres de archivo, DIR devuelve una cadena de longitud cero. El bucle Do produce una condición
verdadera cuando no hay más archivos y la longitud de la cadena devuelta por DIR es igual a cero.
Sub Buscar_Archivo( )
NomArch = InputBox(“Ingrese una especificación de archivo:”)
‘Encuentra primera coincidencia
Encontrado = Dir(NomArch)
Do Until Len(Encontrado) = 0
‘Muestra nombre de archivo coincidentes
MsgBox Encontrado
Sintaxis 2
Do
[sentencias]
[Exit Do]
[sentencias]
Loop[{While | Until} condición]
Ejemplo 1:
Sub Ingresar_Clave ( )
Do
StrClave = InputBox(“Ingrese Clave: “ )
Loop While strClave <> “Rainer”
End Sub
258
Capítulo 12: Fundamentos de Programación
Ejemplo 2:
Sub Repetir2 ( )
Do
Contador = Contador + 1
Loop Until MsgBox (“Repetir ?”, vbYesNo) = vbNo
End Sub
SENTENCIA FOR...NEXT
Cuando sabe cuántas veces se ejecutará un bloque de código, es más fácil escribir y mantener una
sentencia For...Next. Una sentencia For...Next ejecuta el código que contiene un número determinado
de veces. En la sintaxis mostrada abajo, note que el valor del contador puede incrementarse o disminuir
dependiendo de que el intervalo sea positivo o negativo.
Sintaxis
For contador =inicio To Fin [Stepintervalo ]
[sentencias]
[ExitFor]
[sentencias]
Next [contador]
Sub Promedios( )
NumEstud = InputBox(“¿Cuántos Estudiantes: ?”)
259
Excel for Masters - Macros y Aplicaciones con VBA
En el siguiente ejemplo demuestra el uso del For…Next. El código genera una tabla de 5 columnas por
N filas (indicadas por el usuario).
Sub Generar_Tabla()
‘ejemplo For anidado
numeros = InputBox(“Ingrese nro de filas a generar: “)
For i = 1 To numeros
For j = 1 To 5
texto = texto & (i * j) & vbTab
Next j
texto = texto & vbLf
Next i
MsgBox texto, vbInformation, “Tabla”
End Sub
260
Capítulo 12: Fundamentos de Programación
LABORATORIO DE PRÁCTICA
Estos ejercicios permitirán crear procedimientos y funciones en VBA, relacionándolos con ventanas de
ingreso de datos (InputBox) y de mensajes (msgbox).
Escribiendo un procedimiento
1. En el módulo escriba:
Sub Inicio( )
MsgBox “Soporte Académico” & vbLf & “Bienvenidos, son las “ & Time
End Sub
Sub Lee_Datos( )
nombre = InputBox (“Nombre de usuario: “)
MsgBox “Bienvenido “ & nombre
End Sub
Ejecutando un procedimiento
1. Lleve el cursor sobre alguna línea del procedimiento Inicio.
2. Pulse la tecla F5. Se debe ver la hoja de Excel y un mensaje como:
261
Excel for Masters - Macros y Aplicaciones con VBA
7. Responda:
¿Qué instrucción pide el ingreso de datos? .......................................................................................
............................................................................................................................................................
¿Qué instrucción muestre el cuadro de mensajes? ...........................................................................
............................................................................................................................................................
262
Capítulo 12: Fundamentos de Programación
Sub Prueba1()
Dim nombre As String
nombre = “Santiago Danilo Alvarado M”
‘llama al proced. Inicio2, pasando como argumento la variable nombre
Inicio2 (nombre)
End Sub
Ejecutando un procedimiento
1. Lleve el cursor sobre alguna línea del procedimiento Prueba1.
2. Pulse la tecla F5. Se debe ver la hoja de Excel y un mensaje como:
263
Excel for Masters - Macros y Aplicaciones con VBA
Sub Mensaje1()
MsgBox “Haga clic para continuar...”, , “Mensaje Simple”
End Sub
2. Haga clic dentro del procedimiento y pulse F5 para ejecutar. El resultado debe ser:
3. Puede mostrar el mensaje en 2 o más líneas, empleando las constantes vbLfo vbNewLine.
Sub Mensaje2()
MsgBox “No hay entradas registradas.” + vbNewLine + _
“Registre una entrada para continuar”, , “Búsqueda por Línea”
End Sub
4. El resultado es:
264
Capítulo 12: Fundamentos de Programación
Sub Mensaje3()
MsgBox “Este proceso es irreversible” & vbNewLine & “¿Desea continua?”, _
vbYesNo, “Confirme la acción”
End Sub
Sub Mensaje3()
MsgBox “Este proceso es irreversible” & vbNewLine & “¿Desea continuar?”, _
vbYesNo + vbQuestion, “Confirme la acción”
End Sub
265
Excel for Masters - Macros y Aplicaciones con VBA
Sub Mensaje4()
MsgBox “Registro incorrecto”, vbOKOnly + vbCritical, “Error”
End Sub
SUB Mensaje5()
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
END SUB
266
Capítulo 12: Fundamentos de Programación
SUB Mensaje6()
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
END SUB
Sub Mensaje7()
Dim rpta As VbMsgBoxResult
End Sub
2. Ejecute el procedimiento:
267
Excel for Masters - Macros y Aplicaciones con VBA
Sub Entrada1()
InputBox “Ingrese Edad:”, “Registro de cuenta”
End Sub
2. Haga clic dentro del procedimiento y pulse F5 para ejecutar. El resultado debe ser:
Sub Entrada2()
codigo = InputBox(“Código del registro a buscar”, “Búsqueda”)
MsgBox “Se está buscando el código>>>> “ + codigo
End Sub
b. Haga clic dentro del procedimiento y pulse F5 para ejecutar. El resultado debe ser:
268
Capítulo 12: Fundamentos de Programación
2. Puede validar si ingresó o no un valor o si el usuario presionó la tecla Cancelar. En ambos casos, la
variable va a tener un valor vacío.
a. Escriba el procedimiento:
Sub Entrada3()
unidades = InputBox(“Ingrese las unidades a procesar”, “Registro”)
If unidades = “” Then
MsgBox “Error”
Else
MsgBox “Procesar”
End If
End Sub
b. Al ejecutar se muestra:
269
Excel for Masters - Macros y Aplicaciones con VBA
d. Ejecute el procedimiento nuevamente y escriba 10. Haga clic en Aceptar. El resultado es:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
270
Capítulo 12: Fundamentos de Programación
IF simple
1. Vamos a crear un procedimiento que evalúe y calcule la retención (10%) a los montos mayores a
1600.
a. En el módulo escriba el siguiente procedimiento:
Sub Condicional1( )
monto = InputBox(“Ingrese Monto: “, , 0)
End Sub
2. Ahora, escriba un procedimiento que solicite el año de nacimiento de una persona. El procedimiento
debe calcular la edad y mostrar el texto ‘Mayor de edad’ si tiene más de 17 años.
a. El cuadro de ingreso debe ser:
271
Excel for Masters - Macros y Aplicaciones con VBA
IF…THEN…ELSEIF
1. Vamos a crear un procedimiento que calcule una tasa de acuerdo al monto de ventas ingresado.
a. En el módulo escriba:
Sub Condicional3 ( )
Ventas = val( InputBox (“Ingrese Valor de Ventas: “, ,0))
End Sub
272
Capítulo 12: Fundamentos de Programación
END SUB
273
Excel for Masters - Macros y Aplicaciones con VBA
SELECT CASE
Este tipo de instrucción evalúa los posibles valores que puede tomar un objeto.
1. En nuestro caso, se va a determinar el nivel de acceso de un usuario. Vamos a crear un procedimiento
que calcule dicho estado.
a. En el módulo escriba:
Sub Condicional5 ( )
Nivel = InputBox(“Elija el acceso” + vbNewLine + “[1] [2] [3]”, “Acceso Web”)
Sub Condicional6 ( )
Cantidad = InputBox (“Ingrese Cantidad: “, ,0)
Select Case val(Cantidad)
Case 1
Dscto = 0
Case 2 , 3
Dscto = 0.05
Case 4 To 6
Dscto = 0.1
Case Else
Dscto = .2
End Select
MsgBox Dscto
End Sub
274
Capítulo 12: Fundamentos de Programación
Do…LoopWhile
1. Vamos a crear un procedimiento que solicite una clave. Este bucle se ejecuta mientras se cumpla
una condición, en nuestro caso mientras la clave sea incorrecta.
a. En el módulo escriba el siguiente procedimiento:
Sub Repetitiva1 ( )
Do
StrClave = InputBox(“Ingrese su clave: “, “Ingreso al Sistema” )
Loop While strClave <> “eu129”
End Sub
Do…LoopUntil
1. Este bucle termina cuando se cumple la condición. Se acumulará una variable hasta que se responda
que No.
a. En el módulo escriba el siguiente procedimiento:
Sub Repetitiva2 ( )
Do
contador = contador + 1
Loop Until MsgBox(“Repetir?”, vbYesNo) = vbNo
End Sub
275
Excel for Masters - Macros y Aplicaciones con VBA
b. Ejecute el procedimiento:
c. Responda SÍ varias veces a esta pregunta. Luego, responda NO. El resultado debe ser:
2. Escriba un procedimiento que solicite un número. El procedimiento debe terminar cuando escriba 0.
Al final se debe mostrar el acumulado de los valores ingresados.
a. El cuadro que solicite el número debe ser:
b. Escriba un número y presione Aceptar. Realice el procedimiento varias veces. Escriba 0 para
terminar. El resultado debe ser:
276
Capítulo 12: Fundamentos de Programación
FOR…NEXT
1. Este bucle repite las sentencias un número determinado de veces. Vamos a crear un procedimiento
que solicite el número de veces que se va a repetir un proceso.
a. En el módulo escriba el siguiente procedimiento:
Sub Repetitiva4 ( )
repetir = Val(InputBox(“Número de repeticiones”, “Demo For…Next”))
For x = 1 To repetir
MsgBox “Proceso “ & x & “ de “ & repetir
Next x
End Sub
Sub Repetitiva5( )
NumEstud = InputBox(“¿Cuántos Estudiantes?”, “Calcular promedios”)
277
Excel for Masters - Macros y Aplicaciones con VBA
3. Puede emplear 2 instrucciones FOR anidadas. En este caso se creará un procedimiento para generar
una tabla de n filas y de 5 columnas.
a. Escriba el procedimiento:
Sub Repetitiva6 ()
‘ejemplo For anidado
numeros = InputBox(“Ingrese nro de filas a generar: “)
For i = 1 To numeros
For j = 1 To 5
texto = texto & (i * j) & vbTab
Next j
texto = texto & vbLf
Next i
MsgBox texto, vbInformation, “Tabla”
End Sub
278
CAP.
Modelo de Objetos
13
MODELO DE OBJETOS DE EXCEL
Visual Basic soporta un conjunto de objetos que corresponden directamente a elementos en Microsoft
Excel, muchos de los cuales son familiares con la interfaz de usuario. Por ejemplo, el objeto Workbook
representa un libro de trabajo, el objeto Worksheet representa una hoja de trabajo y el objeto Range
representa un rango de celdas en la hoja de trabajo. Cada elemento en Microsoft Excel, cada libro
de trabajo, dibujo, celda, etc., pueden ser representados por un objeto en Visual Basic. Creando
procedimientos que controla estos objetos, usted automatiza tareas en Microsoft Excel.
ABRIENDO WORKBOOKS
Cuando abre un libro de trabajo utiliza el método Open. El método Open siempre se aplica a la colección
Worbooks, que usted devuelve utilizando la propiedad Workbooks. El siguiente código abre el archivo
Bookl.xls (en la carpeta actual) y luego muestra el valor que está en la celda A1 en la primera hoja de
trabajo en el libro de trabajo.
Sub OpenBooks1 ( )
End Sub
Observe que el valor de retorno del método Open es un objeto Workbook que se refiere al libro de
trabajo que recién se estuvo abriendo.
El nombre de archivo en este ejemplo no contiene una ruta; por ello, se asume que el archivo está en
la carpeta actual. Esto provocará un error en tiempo de ejecución, pues tan pronto como el usuario
cambia la carpeta actual, Visual Basic no puede encontrar el archivo.
279
Excel for Masters - Macros y Aplicaciones con VBA
Si desea abrir un libro de trabajo que esté grabado en la carpeta que contiene el archivo ejecutable,
podrá emplear la propiedad Path para devolver una cadena que especifique la carpeta. La propiedad
PathSeparador devuelve el carácter de separador correcto para el sistema del archivo actual. Por
ejemplo, un Backslash(\)para MS- DOS/Windows FAT o dos puntos apartes (:) para Macintosh. El
siguiente ejemplo muestra los códigos independientes del sistema de archivos que puede utilizar para
abrir Book1.xls, asumiendo que éste es salvado en una carpeta que contiene el archivo ejecutable.
Sub OpenBook1 ( )
End Sub
En lugar de utilizar código para un nombre de archivo, con el método Open dará al usuario la opción
de seleccionar un archivo para abrirlo. El método GetOpenFilename muestra la caja de dialogo
estándar Open, pero el método devuelve un string en lugar de abrir un archivo. El string contiene la
ruta detallada y el nombre del archivo. El siguiente ejemplo demuestra el método GetOpenFilename
mostrando el valor del retorno en una caja de mensaje y luego abriendo el archivo.
Sub DemoAbrirLibro ( )
Do
FName= Application. GetOpenfilename
Loop Until fName <> False
Cuando graba por primera vez un nuevo libro de trabajo utilice el método SaveAs. Para grabar de
manera subsecuente, utilice el método Save. El método GetSaveAs Filename es muy similar al metodo
GetOpenfilename, que se describe en la sección anterior. El siguiente ejemplo muestra cómo crear un
nuevo libro de trabajo y luego lo guarda utilizando el método GetSaveAsFilename.
Sub CrearYGrabar ( )
Set libroNuevo = Workbooks. Add
Do
FName = Application. GetSaveAsFilename
Loop Until fName <>False
libroNuevo. SaveAs Filename := fName
End Sub
280
Capítulo 13: Modelo de Objetos
Sub AbrirCambiarCerrar ()
Do
FName = Application. GetOpenFilename
Loop Until Fname<>False
End Sub
Este código utiliza el método GetOpenFilename para seleccionar el libro de trabajo para abrir, hace
algunos cambios en el libro de trabajo (indicando por los comentarios), y luego cierra el libro de trabajo
sin guardar los cambios.
COLECCIÓN WORKSHEETS
Un conjunto de todos los objetos Worksheet del libro especificado o activo. Cada objeto Worksheet
representa una hoja de cálculo.
Use el método Add para crear una nueva hoja de cálculo y agregarla al conjunto. El ejemplo siguiente
agrega dos nuevas hojas de cálculo antes de la hoja uno del libro activo:
Worksheets.Add count:=2, before:=Sheets(1).
OBJETO WORKSHEET
Representa una hoja de cálculo. El objeto Worksheet es un elemento del conjunto Worksheets que
contiene todos los objetos Worksheet de un libro.
Propiedad Worksheets
Para devolver un solo objeto Worksheet, use Worksheets(índice), donde índice es el nombre o número
de índice de la hoja de cálculo. El ejemplo siguiente oculta la hoja de cálculo uno del libro activo:
Worksheets(1).Visible = False
281
Excel for Masters - Macros y Aplicaciones con VBA
El nombre de la hoja de cálculo aparece en la etiqueta de la hoja de cálculo. Use la propiedad Name
para establecer o devolver el nombre de la hoja de cálculo. El ejemplo siguiente protege los escenarios
de Hoja1:
Worksheets("sheet1").Protect password:="drowssap", scenarios:=True
El objeto Worksheet también es un elemento del conjunto Sheets. El conjunto Sheets contiene todas
las hojas del libro (hojas de gráficos y hojas de cálculo).
Propiedad ActiveSheet
Si una hoja de cálculo es la hoja activa, puede usar la propiedad ActiveSheet para hacer referencia a
ella. El ejemplo siguiente usa el método Activate para activar la hoja de cálculo Hoja 1, establece la
orientación de página como horizontal y, a continuación, imprime la hoja de cálculo.
Worksheets("sheet1").Activate
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.PrintOut
282
Capítulo 13: Modelo de Objetos
Recuerde que expresiones como Range(“C1:E3”). Value =6 asumen que la propiedad Range opera en la
hoja activa. Si intenta ejecutar este código con una hoja de gráfico activa, ocurrirá un error en tiempo
de ejecución.
Otra causa de error es el empleo o la propiedad Range en un argumento a otro método, sin detallar
completamente el objeto Worksheet al que se aplica la propiedad Range. El siguiente ejemplo, que
escoge un rango de celda en la hoja 1, también causa error de ejecución 1004.
Sub SortRange( )
Worksheets (“Sheet1”). Range (“A1:B10”). Sort
Key1: =Range (“A1”), order1:= x1descending
End sub
Este error es más difícil de encontrar, pues la línea que contiene el método Sort es correcta. El error es
causado por la segunda línea, que contiene el argumento Key1. Este código se ejecutará correctamente
si la hoja 1 es la hoja activa, pero fallará cuando se ejecute desde otra hoja de trabajo o desde un
módulo. Para evitar el error, utilice la propiedad Worksheets en el argumento.
Sub SortRange ( )
Worksheets(“Sheet1”). Range (“A1:B10”). Sort
Key1:=Worksheets(“Sheet1”).Range(“A1”).order1:=x1Descending
End Sub
283
Excel for Masters - Macros y Aplicaciones con VBA
Los índices de columnas y las filas numéricas son útiles cuando quiere referirse a las celdas utilizando
contadores de bucles. Por ejemplo, el siguiente código hace un bucle a través de las celdas A1:D10
en Sheet1. Si alguna de las celdas tiene un valor menos que 0.01, el ejemplo reemplaza el valor con 0
(cero).
Sub RedondearCero ( )
For fila = 1 to 4
For col = 1 to 10
If WorkSheets (”Sheet1”). Cells (fila, col) <. 01 Then
WorkSheets (“Sheetl”). Cells (fila, col). Value = 0
End If
Next col
Next fila
End Sub
La propiedad CurrentRegion se aplica a un objeto Range. Existen muchas regiones actuales diferentes
en una hoja de trabajo, dependiendo del objeto Range a la que aplica la propiedad CurrentRegion.
Suponga que la hoja 1 contiene una lista a la que desea aplicar un formato de número. Lo único que
sabe de la lista es que comienza en la celda A1, no sabe qué cantidad de filas o columnas contiene. El
siguiente ejemplo muestra cómo formatear la lista utilizando la propiedad CurrentRegion.
284
Capítulo 13: Modelo de Objetos
Sub FormatoRango ( )
End Sub
El rango utilizado es agrupado por las celdas vacías del extremo superior izquierdo e inferior derecho.
Es un rango que contiene todas las celdas llenas en la hoja de trabajo, así como todas las celdas vacías
que están entre ellas. Sólo existe un rango utilizado en la hoja de trabajo, la propiedad UsedRange
aplicada a un objeto WorkSheet, no a un objeto Range.
Suponga que una hoja de trabajo activa contiene datos desde un experimento. Los rangos utilizados
contienen datos en la primera columna, los tiempos en la segunda columna y las medidas en la tercera
y cuarta. Usted quiere escribir un código que combine cada fecha separada y hora en un simple valor,
convertir el valor de Greenwich Mean Time a Pacific Standart Time(PST), y luego aplicar un formato de
fecha al valor.
La tabla de los datos puede contener filas y columnas vacías. Podrá utilizar la proiedad UsedRange para
devolver el rango entero utilizado, incluyendo cualquier fila vacía insertada.
Sub ConvertirFecha ( )
Set myRange = ActivesSheet.UsedRange
MyRange. Columns (“C”). Insert
Set dateCo1 = myRange.Columns (“C”)
For Each c in data Co1.Cells
285
Excel for Masters - Macros y Aplicaciones con VBA
EVENTOS DE EXCEL
Excel incluye varios controladores de eventos, o rutinas de código, que controlan acciones
determinadas. Cuando ocurre una de dichas acciones, y ha comunicado a Excel qué desea que haga
cuando ocurra el evento, éste ejecuta el código del controlador de eventos.
Para ver y agregar código a los eventos de Excel debe hacer lo siguiente:
1. Ingrese al editor de VBA.
2. En el Explorador de Proyectos, seleccione el tipo de objeto al que desea revisar, en nuestro caso
será ThisWorkbook.
3. En la ventana de código, elija el objeto Workbook y luego despliegue los eventos asociados a él.
286
Capítulo 13: Modelo de Objetos
EVENTOS DE LIBRO
Estos eventos son disparados al realizar acciones sobre el libro, como abrirlo, imprimirlo o incluso
cambiar el tamaño de la ventana que lo contiene.
Evento Detalle
Open Se produce al abrir el libro.
SheetActivate Se produce al activar una hoja del libro.
SheetSelectionChange Se produce al cambiar la selección en una hoja del libro.
Se produce al realizar un cambio en una celda de cualquier
SheetChange
hoja del libro, excepto formatos.
Se produce al realizar doble clic en una celda de cualquier
SheetBeforeDoubleClick
hoja del libro.
SheetDeactivate Se produce al desactivar una hoja del libro.
BeforeSave Se produce inmediatamente antes de guardar el libro.
BeforeClose Se produce inmediatamente antes de cerrar el libro.
BeforePrint Se produce inmediatamente antes de imprimir el libro.
NewSheet Se produce al insertar una nueva hoja.
End Sub
Me.Application.WindowState = Excel.XlWindowState.xlMaximized
End Sub
287
Excel for Masters - Macros y Aplicaciones con VBA
Evento BeforePrint
Observe el siguiente código: solicita al usuario que ingrese la cantidad de copias a imprimir. Luego,
escribe en la celda D1 el número de copia que se imprime.
For n = 1 TointNumCopias
ActiveSheet.PrintOut copies:=1
ActiveSheet.Range(“D1”).Value = ActiveSheet.Range(“D1”).Value + 1
Next n
End Sub
End Sub
BeforeClose
Este ejemplo guarda una copia del libro antes de cerrarlo.
ActiveWorkbook.Save
ActiveWorkbook.SaveAsFilename:=”C:\bak\prueba.xlsx”
End Sub
NewSheet
En este ejemplo, al insertar una hoja, Excel solicitará el nombre de dicha hoja y además, llevará la hoja
insertada al final de su barra de hojas.
End Sub
288
Capítulo 13: Modelo de Objetos
LABORATORIO DE PRÁCTICA
El objetivo de este capítulo es manipular los objetos de Excel como los rangos, libros y celdas.
Escribiendo un procedimiento
1. En el módulo escriba un procedimiento para ver la cantidad de archivos abiertos.
Sub Demo_1( )
Workbooks.Count
End Sub
Abriendo libros
1. Para abrir un libro desde código VBA se emplea el método OPEN. En este caso se desea abrir un libro.
a. En el módulo, escriba el siguiente procedimiento:
Sub Demo_2( )
Do
fName = Application.GetOpenFilename
Loop Until fName<> False
b. Ejecute el procedimiento
¿Qué instrucción del código mostrado abre el libro? ...................................................................
......................................................................................................................................................
289
Excel for Masters - Macros y Aplicaciones con VBA
Creando libros
1. Para crear libros en blanco:
a. En el módulo, escriba el siguiente procedimiento:
Sub Demo_3( )
Msgbox “Creando un Nuevo libro…”
Workbooks.Add
End Sub
Sub Demo_4( )
MsgBox “Creando un nuevo libro basado en una plantilla…”
Set nuevolibro = Workbooks.Add(“C:\Factura.xltx”)
End Sub
Grabando libros
1. Para grabar un libro:
a. En el módulo, escriba el siguiente procedimiento:
Sub Demo_5( )
Set libroNuevo = Workbooks.Add
Do
fName = Application.GetSaveAsFilename
Loop Until fName<> False
libroNuevo.SaveAs Filename:=fName
End Sub
290
Capítulo 13: Modelo de Objetos
EJERCICIO 2: APLICACIÓN 1
Se desea crear código para grabar un libro. Este libro debe ser guardado en una carpeta específica
(C:\Proformas\) con el nombre del cliente (celda D5) y el número correlativo de la proforma (celda E3).
Insertando el módulo
1. Abra el libro Proformas.xlsm de la carpeta Capítulo_14.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Módulo. Se agrega el objeto Módulo1.
Escribiendo un procedimiento
1. En el módulo escriba un procedimiento para grabar el archivo con los detalles explicados al inicio
del ejercicio.
Sub Grabar( )
ruta = “C:\Proformas\”
ActiveWorkbook.SaveAsruta&Range(“D5”) & Range(“E3”)
End Sub
291
Excel for Masters - Macros y Aplicaciones con VBA
4. Se va a modificar el procedimiento para que después de grabar limpie los datos de las celdas
Cliente, Fecha y Monto.
a. Para añadir más funcionalidad al procedimiento, modifique de acuerdo a:
Sub Grabar( )
ruta = “C:\Proformas\”
ActiveWorkbook.SaveAsruta&Range(“D5”) & Range(“E3”)
Range(“E3”) = Range(“E3”) + 1
Range(“D5:D9”).ClearContents
Range(“D5”).Activate
End Sub
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
292
Capítulo 13: Modelo de Objetos
EJERCICIO 3: WORKSHEETS
Insertando el módulo
1. Abra el libro ObjetoHojas.xlsm de la carpeta Capítulo_14.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Módulo. Se agrega el objeto Módulo1.
Sub Demo_1( )
Sheets.Add
End Sub
2. Ejecute el procedimiento:
¿Qué sucede? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
Sub Demo_2( )
MsgBox “El libro tiene “ &Sheets.Count& “ hojas”, _
vbInformation, “Mensaje”
End Sub
2. Ejecute el procedimiento:
¿Qué sucede? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
293
Excel for Masters - Macros y Aplicaciones con VBA
Sub Demo_3( )
ActiveSheet.Name = “Metro”
End Sub
Sub Demo_4( )
nombre = InputBox(“Escriba el nombre para la hoja:”, “Cambiar nombre”)
If nombre = “” Then
Exit Sub
End If
ActiveSheet.Name = nombre
End Sub
Mejorando el procedimiento
1. Ahora, se va a escribir un procedimiento que agregue una hoja solicitando el nombre para dicha hoja.
a. El procedimiento necesario será:
Sub Demo_5( )
nombre = InputBox(“Nombre de la hoja:”, “Insertar hoja”)
If nombre = “” Then
Exit Sub
End If
Set hoja = Sheets.Add
hoja.Name = nombre
End Sub
294
Capítulo 13: Modelo de Objetos
b. Ejecute el procedimiento varias veces hasta tener 10 hojas con diferentes nombres.
¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
Sub Demo_6( )
hoja = Val(InputBox(“Escriba el número de la hoja:”, “Ir a...”))
If hoja = 0 Orhoja>Sheets.Count Then
MsgBox “Número fuera del intervalo”, vbCritical, “Error...”
Exit Sub
EndIf
295
Excel for Masters - Macros y Aplicaciones con VBA
EJERCICIO 4: APLICACIÓN 2
Se desea crear código para ordenar las hojas de un libro de acuerdo al nombre.
Escribiendo el procedimiento
1. En el módulo escriba:
Sub Demo_7( )
rp = True
Do While rp = True
rp = False
For x = 1 ToSheets.Count - 1
If Sheets(x).Name > Sheets(x + 1).Name Then
Sheets(x).Move after:=Sheets(x + 1)
rp = True
End If
Next x
Loop
End Sub
EJERCICIO 5: APLICACIÓN 3
Se desea crear código para mostrar el nombre de las hojas del libro.
Escribiendo el procedimiento
1. En el módulo escriba:
Sub Demo_8( )
For x = 1 ToSheets.Count
datos = datos + “Orden “ & x &vbTab& Sheets(x).Name
datos = datos &vbNewLine
Next x
MsgBox datos, vbInformation, “Hojas del libro”
End Sub
296
Capítulo 13: Modelo de Objetos
EJERCICIO 6: RANGE
Insertando el módulo
1. Abra el libro ObjetoRangos.xlsm de la carpeta Capítulo_14.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Módulo. Se agrega el objeto Módulo1.
Escribiendo un procedimiento
1. En el módulo escriba un procedimiento para que asigne valores a celdas.
Sub Demo_1( )
Range(“A5”).Value = “Registro de Compras”
Range(“B10”).Formula = “=RANDBETWEEN(5,210)”
Sheets(“Hoja2”).Range(“B5”) = “Acceso a clientes”
End Sub
2. Ejecute el procedimiento:
¿Qué sucede? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
Sub Demo_2( )
Range(“C2”) = Date
Range(“C3”).ClearContents
Range(“C6:C15”).ClearContents
Range(“C3”).Activate
End Sub
297
Excel for Masters - Macros y Aplicaciones con VBA
d. Ahora, escriba un número de motor y los valores para 10 lecturas. Haga clic otra vez en el botón
Otro.
3. Modifique el procedimiento para que se solicite confirmación antes de realizar el proceso. El cuadro
debe ser así:
4. Escriba el procedimiento:
SUB Demo_2
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
END SUB
298
Capítulo 13: Modelo de Objetos
Ejemplos de aplicación
1. Si va a trabajar con un rango predefinido:
Sub Demo_3( )
Sheets(3).Activate
Sheets(3).Range(“A1:A5”).Formula = “=RANDBETWEEN(100,500)”
Range(“A6”) = “Total”
Range(“A7”) = “Promedio”
Range(“B6”).Formula = “=Sum(A1:A5)”
Range(“B7”).Formula = “=Average(A1:A5)”
End Sub
2. Ejecute el procedimiento:
¿Qué sucede? .....................................................................................................................................
............................................................................................................................................................
¿Qué acción realiza la instrucción Sheets(3).Activate? .....................................................................
Sub Demo_4( )
Selection.Formula = “=RANDBETWEEN(1,20)”
With Selection
.Font.Size = 12
.Font.Bold = True
.BorderAroundColorIndex:=5
End With
End Sub
299
Excel for Masters - Macros y Aplicaciones con VBA
Insertando el módulo
1. Abra el libro ObjetoCeldas.xlsm de la carpeta Capítulo_13.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Módulo. Se agrega el objeto Módulo1.
Sub Demo_1( )
valor = InputBox(“Escriba el contenido”, “Ingreso”)
ActiveCell.Value = valor
End Sub
300
Capítulo 13: Modelo de Objetos
Crear series
1. En el módulo escriba un procedimiento para generar una serie de números del 1 al 12 y los meses
del año.
Sub Demo_2( )
For x = 1 To 12
Cells(5 + x, 2) = x
Cells(5 + x, 3) = UCase(MonthName(x))
Next x
End Sub
Sub Demo_3a ( )
Range(“B4”).Activate
Do
ActiveCell.Offset(1, 0).Activate
Loop Until ActiveCell = “”
End Sub
301
Excel for Masters - Macros y Aplicaciones con VBA
Sub Demo_3b ( )
Range(“B4”).Activate
Selection.End(xlDown).Activate
ActiveCell.Offset(1, 0).Activate
End Sub
Note que en ambos casos el cursor se desplaza, esto porque se emplea el método ACTIVATE.
Sub Demo_4 ( )
Range(“B4”).Activate
Do
x=x+1
Loop Until Cells(4 + x + 1, 2) = “”
MsgBox “Último precio: “ &Cells(4 + x, 3), vbInformation, “Leer precios”
End Sub
302
Capítulo 13: Modelo de Objetos
e. Ejecute el procedimiento:
¿Se muestra el último valor ingresado? .......................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
303
Excel for Masters - Macros y Aplicaciones con VBA
EJERCICIO 8: APLICACIÓN
Se necesita crear una aplicación que muestre los pagos a realizar en un número determinado de
cuotas.
Preparando su hoja
1. Vaya a la hoja Pagos:
¿En qué celda se encuentra el monto? ..............................................................................................
¿En qué celda las cuotas? ..................................................................................................................
¿En qué celda debe iniciar el listado de cuotas a pagar? ..................................................................
Creando el procedimiento
1. En el módulo escriba un procedimiento para que asigne un valor a la celda activa.
Sub Demo_5( )
Range(“B9:D40”).ClearContents
For x = 1 To Range(“C5”)
Cells(8 + x, 2) = “Cuota” & x
Cells(8 + x, 3) = DateAdd(“M”, x, Date)
Cells(8 + x, 4) = Range(“C4”) / Range(“C5”)
Next x
End Sub
304
Capítulo 13: Modelo de Objetos
EJERCICIO 9: APLICACIÓN
Se necesita crear una aplicación que genere una tabla de n columas en base a una lista de números
aleatorios.
Preparando su hoja
1. Vaya a la hoja Cuadros:
¿En qué celda se encuentra el primer valor de la lista de valores? ....................................................
¿En qué celda se indica el número de columnas a generar? ..............................................................
Sub Demo_6( )
For i = 1 To 30
Cells(2 + i, 2).Value = Int((100 - 10 + 1) * Rnd + 10)
Next i
End Sub
305
Excel for Masters - Macros y Aplicaciones con VBA
Sub Demo_7( )
Dim datos As Range
Set datos = Range(“B3:B32”)
Range(“D7:M50”).ClearContents
306
CAP.
UserForm
14
USERFORM
Un objeto UserForm es una ventana emergente que permite que la aplicación interactúe con el
usuario, sea para mostrar información o solicitarla.
Los formularios de usuario tienen características que determinan la apariencia, como posición, tamaño
y color; así como diversos aspectos de su comportamiento. Estas son las llamadas Propiedades.
Los formularios también responden a eventos iniciados por un usuario o activados por el sistema. Por
ejemplo, puede escribir código en el procedimiento de evento Initialize del UserForm para inicializar
variables a nivel de módulo antes de mostrar el UserForm.
Además de propiedades y eventos, puede utilizar métodos para manipular formularios de usuario
utilizando código. Por ejemplo, puede utilizar el método Move para cambiar la ubicación y tamaño de
un UserForm.
AGREGAR UN USERFORM
Los UserForm se agregan desde el editor de VBA.
1. Ingrese al editor de VBA (ALT + F11).
2. Haga clic en el menú Insertar, UserForm.
307
Excel for Masters - Macros y Aplicaciones con VBA
Excel agrega una ventana en blanco con propiedades predefinidas que podrá cambiar, como la
propiedad Caption para cambiar el título de la ventana o la propiedad BordeStyle para elegir el tipo
de borde.
Propiedad Utilidad
Name Establece el nombre con el cual será reconocido el formulario.
BorderStyle Permite elegir el tipo de borde para su ventana.
Caption Cambia el título de la ventana.
Font Cambia el tipo de fuente a emplear en el formulario.
Picture Permite definir un gráfico de fondo para su ventana.
ScrollBars Específica si su ventana tendrá barras de desplazamiento
horizontal o vertical.
StartUpPosition Permite definir la ubicación en la que se presentará su ventana.
308
Capítulo 14: UserForm
Las propiedades del formulario no sólo se establecen al insertarlo, sino que están disponibles desde
código VBA. Por ejemplo:
End Sub
El procedimiento anterior solicita que el usuario ingrese un texto por teclado y luego emplea dicho
texto como título del formulario.
MÉTODOS
Los métodos son acciones asociadas al formulario y que se pueden accionar a través de código VBA.
Por ejemplo, se tiene un método SHOW el cual puede emplearse como…
Form1.Show
Método Utilidad
Load Carga el formulario en memoria.
Show Carga y muestra el formulario.
Hide Oculta el formulario.
Me.Hide
End Sub
309
Excel for Masters - Macros y Aplicaciones con VBA
CONTROLES
Con controles, los usuarios pueden operar y obtener los resultados de una aplicación. Puede añadir
controles a una aplicación seleccionado una herramienta de la caja de Herramientas.
Botones de Comando
Sugerencia: Haciendo doble clic sobre un control en la caja de herramientas, puede rápidamente
añadir un control con un tamaño por defecto al formulario.
Igualmente, puede cambiar la propiedad Caption de un control Etiqueta para mostrar información de
estado desde su programa. Esto puede ser especialmente útil cuando depura su aplicación.
Entre las propiedades más frecuentemente usadas para el control Etiqueta tenemos:
Alignment Caption Name
AutoSize Font WordWrap
310
Capítulo 14: UserForm
Puede usar cuadro de texto en conjuntos con un control de datos para mostrar información desde una
base de datos o para editar registros en una base de datos.
Entre las propiedades, métodos y eventos más comúnmente usados por el control cuadro de texto
tenemos:
Propiedades Métodos Eventos
Alignment Refresh Change
BackColor SetFocus DragDrop
BorderStyle DragOver
Enabled GotFocus
Font KeyDown
ForeColor KeyPress
MaxLength KeyUp
MultiLine LostFocus
Name
PassWordChar
ScrollBars Text
Visible
Sub txtUsuario_LostFocus ( )
txtUsuario.Text= Ucase ( txtUsuario.Text)
End Sub
El siguiente ejemplo muestra cómo el evento SetFocus puede ser usado cuando se valida la información
ingresada por el usuario. Cuando se hace clic sobre el botón cmdAceptar, el siguiente código determina
si el usuario ingresó el nombre de usuario en el cuadro de texto txtUsuario y devuelve el enfoque a
txtUsuario si el cuadro de texto está vacío:
Sub cmdAceptar_Click ( )
If txtUsuario.Text = ”” Then
TxtUsuario.SetFocus
End If
End Sub
311
Excel for Masters - Macros y Aplicaciones con VBA
Entre las propiedades, métodos y eventos más comúnmente usados con el control Botón de Comando
tenemos:
Puede usar las casillas de verificación para mostrar las opciones que el usuario pueda usar en cualquier
combinación, como formato, en negrita, cursiva y subrayado.
Propiedades Descripción
Caption Descripción que acompaña a la casilla de
verificación.
Enabled True / False, habilita o deshabilita el control.
Name Nombre usado en el código.
Value 0 - Unchecked (Vacío, no Marcado).
1 - Checked (Marcado).
2 - Grayed (gris, indefinido).
Visible True / False. Muestra u oculta la casilla.
312
Capítulo 14: UserForm
Por ejemplo, podría usar un grupo de botones de opción para indicar la forma de pago (efectivo,
cheque o tarjeta de crédito) de una factura.
Propiedades Descripción
Caption Descripción que acompaña a la opción.
Enabled True / False, habilita o deshabilita el control.
Name Nombre usado en el código.
Value True / False, Marcado o no Marcado.
Visible True / False. Muestra u oculta el control.
Este evento se invoca cuando el usuario selecciona una determinada opción. Realiza varias actividades
como rellenar la opción elegida, quitar el relleno a la opción antes marcada y poner los valores
apropiados para las otras opciones del grupo.
MARCOS (FRAME)
Los marcos proporcionan el agrupamiento visual y funcional de controles. Los objetos se colocan
dentro de marco para separarlos visualmente de otros controles.
Propiedades Descripción
Caption Título del marco.
Enabled True / False, habilita o deshabilita el control.
Name Nombre usado en el código.
Visible True / False. Muestra u oculta el control.
Puede usar el control marco o Cuadro de Imagen como un control ‘contenedor’. No sólo hace que el
contenedor visualmente distinga el grupo de botones de opción, sino que también hace que funcionen
independientemente de otros grupos del formulario. Esto significa que puede usar una cantidad de
grupos de botones de opción en su formulario.
Es importante dibujar primero el contenedor. Es difícil añadir los botones de opción al grupo
luego que son dibujados.
313
Excel for Masters - Macros y Aplicaciones con VBA
Botones de
Opción
Control Número
Marco
BARRAS DE DESPLAZAMIENTO
Son usados con frecuencia para permitir rápidos desplazamientos a través de una lista grande de ítems
o archivos. También se usa como indicadores de posición actual de una escala, tales como sombras o
colores. Como indicadores de volumen de un sistema de audio.
Propiedades Descripción
LargeChange Cantidad de cambio cuando el usuario hace clic en el
Desplazamiento largo (1 a 32767).
Max Máximo valor del desplazamiento cuando el botón se
encuentra en la posición más alta (por defecto 32767).
Min Mínimo valor del desplazamiento cuando el botón se
encuentra en la posición más baja(por defecto 0).
Name Nombre usado en el código.
SmallChange Cantidad de cambio cuando el usuario hace clic en la
fecha de desplazamiento.
Value Valor actual de la posición, en la escala, del botón de
desplazamiento del control.
CONTROL NÚMERO
Aumenta o disminuye números. Se usa generalmente para el incremento o decremento de algún valor.
Al hacer clic sobre este control sólo cambia su valor, si desea mostrar el valor debe relacionarlo a un
control visible como a un cuadro de texto, etiqueta o barra de desplazamiento.
Eventos Descripción
SpinDown Se dispara cuando hace clic sobre la flecha que apunta
hacia abajo.
SpinUp Se dispara cuando hace clic sobre la flecha que apunta
hacia abajo.
314
Capítulo 14: UserForm
Por ejemplo, puede colocar un mapa de bits con el logotipo de su empresa en un control imagen
(image) y presentar texto acerca de la empresa cuando el usuario hace clic en él.
Cuadro
Combinado
Lista
A pesar que el cuadro combinado le permite escribir una nueva selección, el nuevo elemento no
se añade automáticamente a la lista. Usted debe escribir el código que haga eso.
315
Excel for Masters - Macros y Aplicaciones con VBA
Al hacer clic en la
ficha, se muestran
los controles de dicha
página.
316
Capítulo 14: UserForm
LABORATORIO DE PRÁCTICA
En estos ejercicios se generarán interfaces para interactuar entre los usuarios y los objetos de Excel.
Se emplearán controles para mejorar la experiencia del usuario y se añadirá código para agregar
funcionalidad a estas ventanas.
317
Excel for Masters - Macros y Aplicaciones con VBA
Agregando controles
1. Añada los controles necesarios al formulario para que se muestre:
Agregando Código
1. Se necesita mostrar elementos en el cuadro cboTipo.
a. Haga doble clic sobre algún vacío del formulario. Se debe mostrar la ventana de código del
formulario.
b. Cambie el procedimiento a Activate. Luego escriba el siguiente código:
318
Capítulo 14: UserForm
c. Para probar la funcionalidad, presione F5. Haga clic en el cuadro Tipo de aplicación. Se debe
mostrar:
d. Cierre el formulario.
2. Ahora, se necesita agregar código para que al hacer clic en el botón Cancelar, se cierre el formulario.
a. Haga doble clic sobre el botón Cancelar y escriba el código:
b. Para probar la funcionalidad, presione F5. Haga clic en el cuadro Cancelar para cerrar.
3. Ahora, se necesita agregar código para que al hacer clic en los botones del spbVersion, se incremente
el cuadro txtVersion.
a. Haga doble clic sobre el botón spbVersion.
b. Escriba el código:
c. Para probar la funcionalidad, presione F5. Haga clic en los botones de número y observe cómo
se incrementa el cuadro txtVersión.
319
Excel for Masters - Macros y Aplicaciones con VBA
4. Luego, genere unas variables en las declaraciones generales del formulario, tal como:
Dim Usuarios(1 To 5, 1 To 3) As String
Dim Claves(1 To 5) As String
Dim opcion As Byte
Sub CargarDatos( )
‘los usuarios
Usuarios(1, 1) = “Herles”
Usuarios(2, 1) = “César”
Usuarios(3, 1) = “Juan”
Usuarios(4, 1) = “Elsy”
Usuarios(5, 1) = “Zulema”
320
Capítulo 14: UserForm
‘los cargos
Usuarios(1, 2) = “Consultor”
Usuarios(2, 2) = “Director”
Usuarios(3, 2) = “Consultor”
Usuarios(4, 2) = “Asistente Administrativo”
Usuarios(5, 2) = “Asistente”
‘las claves
Usuarios(1, 3) = “hach”
Usuarios(2, 3) = “cmos”
Usuarios(3, 3) = “jhon”
Usuarios(4, 3) = “elsy”
Usuarios (5, 3) = “bambi”
End Sub
6. El código que debe implementar para usar este procedimiento debe ser:
7. Ejecute este formulario y haga clic en el cuadro Usuario. El resultado debe ser:
321
Excel for Masters - Macros y Aplicaciones con VBA
9. Ejecute este formulario y haga clic en el cuadro Usuario. El resultado debe ser como:
322
Capítulo 14: UserForm
4. Si el cuadrado de texto esta vacío, el botón Agregar debe estar deshabilitado. Si no selecciona
ningún elemento de la lista, el botón Eliminar debe estar deshabilitado.
a. Haga doble clic sobre el cuadro txtItem y agregue el siguiente código:
b. Presione F5 para probar el código. Observe que el botón Agregar está desactivado. Escriba
Disco duro externo 160Gb.
¿Qué sucede con el botón Agregar? ............................................................................................
d. Cierre el formulario.
lstItems.Selected(K) = False
Next K
End Sub
323
Excel for Masters - Macros y Aplicaciones con VBA
6. Para activar el botón Eliminar al seleccionar un elemento de la lista, haga doble clic sobre la lista y
escriba:
txtItem.SetFocus
End Sub
e. Cierre el formulario.
324
Capítulo 14: UserForm
9. Para terminar con la funcionalidad del formulario, escriba el código necesario para que al hacer clic
en Cerrar, se cierre el formulario.
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
EJERCICIO 4: APLICACIÓN
En este ejercicio se pide crear formularios y procedimientos que ingresen datos a tablas de Excel,
leyendo información de las tablas o escribiendo en ellas.
Antes de comenzar
1. Ingrese a Excel.
2. Luego, escriba la siguiente tabla en las filas y columnas propuestas y cambie de nombre a la hoja,
se debe llamar Guías.
Diseñando Formularios
En este ejercicio se pide crear un formulario que permita ingresar datos a la hoja Guías. Es necesario
que el ingreso de datos se haga después del último registro ingresado.
325
Excel for Masters - Macros y Aplicaciones con VBA
2. Añada los controles necesarios para que su formulario tenga la apariencia de la siguiente figura:
2. Para que el formulario se enlace a nuestra hoja de cálculo, es necesario crear un procedimiento que
lo muestre.
a. En su Explorador de proyectos(Ctrl + R), haga clic en el proyecto Libro1.
b. Luego, use el menú Insertar, Módulo…
326
Capítulo 14: UserForm
c. Su ventana del explorador debe tener la siguiente apariencia (usted no va a ver los 3 formularios).
Sub Mostrar_Guia( )
frmGuia.Show
End Sub
1. Vaya a una hoja de Excel del mismo libro e inserte un Cuadro de grupo de los controles de
formulario.
327
Excel for Masters - Macros y Aplicaciones con VBA
Practique lo aprendido
1. Diseñe un formulario y escriba el código necesario para el ingreso de datos a la siguiente tabla de
la hoja Clientes:
328
Capítulo 14: UserForm
Sub Mostrar_Clientes( )
frmClientes.Show
End Sub
Tablas en Formularios
Usted puede llevar los valores de las celdas de Excel a un formulario personalizado. En este ejercicio se
pide diseñar un formulario que muestre un registro de la tabla de Clientes.
2. Para cargar los nombres de los clientes en el combo, use el siguiente código:
329
Excel for Masters - Macros y Aplicaciones con VBA
End Sub
3. Luego, al hacer clic en alguno de los clientes del combo, se deben llevar los datos a los cuadros de
texto. Considere el siguiente código:
Practique lo aprendido
1. Abra el primer formulario creado y modifique el diseño para que el nombre del cliente se pueda
elegir desde un cuadro combinado. El formulario deberá tener la siguiente apariencia:
330
Capítulo 14: UserForm
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
3. Además, debe modificar el código usado para Aceptar, ya que el cuadro de texto Cliente se ha
reemplazado por el combo. Escriba la instrucción que ha cambiado:
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
4. Finalmente, escriba el procedimiento para mostrar el formulario creado. Además, debe asociar
este procedimiento al control Buscar Clientes.
331
Excel for Masters - Macros y Aplicaciones con VBA
3. Al cargar el formulario, el cuadro Fecha debe mostrar la fecha del sistema. Al seleccionar una Guía,
debe mostrarse el nombre del Cliente asignado a dicha guía (obtenga esto de la tabla Guías). Al
Aceptar, estos datos deben ser llevados a la tabla propuesta y la amortización se debe sumar a la
Amortización de la tabla Guías.
4. Por ejemplo, al cargar el formulario se muestra la fecha del sistema. Si se selecciona la guía 1002
del combo, se debe mostrar el cliente de dicha Guía, en nuestro caso Medicsa. Además, se debe
ingresar el monto de dicha amortización. Vea la imagen de la siguiente página:
332
Capítulo 14: UserForm
7. La guía tenía una amortización de 1000, al ingresar una nueva amortización tendrá ahora:
9. Escriba el procedimiento para mostrar el formulario. Luego, asocie ese procedimiento al botón
Amortizaciones de un cuadro que debe crear al lado del Panel de control empleado en los ejercicios
anteriores.
Practique lo aprendido
En este ejercicio se busca completar la funcionalidad de la aplicación creada.
1. Se pide crear un formulario que, al elegir un número de guía, muestre los datos de dicha guía, así
como las amortizaciones respectivas. Considere el siguiente formulario:
333
Excel for Masters - Macros y Aplicaciones con VBA
4. Al hacer clic en Mostrar, se deben agregar a la lista la relación de todas las amortizaciones realizadas
a dicha Guía. Observe la figura:
334
Capítulo 14: UserForm
End If
ActiveCell.Offset(1, 0).Select
End Sub
6. Escriba el procedimiento para mostrar el formulario. Luego, asocie ese procedimiento al botón
Liquidación.
335
Excel for Masters - Macros y Aplicaciones con VBA
Visual Basic actúa como nexo entre las aplicaciones Windows al permitir el uso de objetos OLE en sus
aplicaciones. Se pueden tener en un mismo formulario de Visual Basic una hoja de cálculo de Excel y
un documento de Word.
Caso a Desarrollar
Se pide que agregue el botón Liquidar el formulario anterior. Este botón debe llevar los datos
calculados a un documento de Word, basado en una plantilla.
1. Ingrese a Word y diseñe el modelo de documento que se muestra en la imagen más abajo. Los
campos en color gris son campos de Formulario que usted debe agregar. Para agregar estos campos:
a. Lleve el cursor a la celda correspondiente al Nro de Guía y haga clic en el botón Campo de texto
de la barra Formularios heredados.
b. Realice el mismo procedimiento para los campos Nombre del cliente, Fecha, Monto y Total de
Amortizaciones.
c. Al finalizar, guarde el documento como una plantilla (Liquidación.Dotx) en la carpeta C:\Demo
(debe crear la carpeta).
2. Cierre Word.
3. Ingrese a Excel y en el formulario anterior debe crear un botón llamado Liquidar que envíe los
datos de ese formulario al documento Liquidación creado en Word.
Primero:
1. En el formulario, debe hacer referencia a la aplicación que desea automatizar.
a. En el editor de VBA, use el menú Herramientas, Referencias…
b. Ubique la referencia a Microsoft Word.
c. Haga clic en Aceptar.
336
Capítulo 14: UserForm
Segundo:
1. Crear variables de tipo objeto (en este caso de Word) y luego, usar esta variable para referirse a la
aplicación automatizada. En el botón Liquidar escriba el siguiente código:
Tercero:
1. Usar las variables para acceder a los métodos y propiedades de la aplicación. Por ejemplo, se ha
creado la variable doc la cual hace referencia a Microsoft Word. Si se desea añadir un documento
nuevo en VBA de Word sería:
Documents.Add
2. Pero al definir a Word como una variable (doc) y ser usada en Excel, entonces la sentencia sería:
doc.Documents.Add
337
CAP.
Aplicaciones con BD
15
LABORATORIO DE PRÁCTICA
Para desarrollar este laboratorio, es necesario que se copie la base de datos PC Ventas.accdb a la
carpeta BD de su disco duro (debe crear esa carpeta).
Conociendo el caso
1. En este laboratorio se trabaja con la base de datos PC Ventas. Esta BD está creada en Access 2010
y su modelo de datos se muestra en la siguiente imagen:
339
Excel for Masters - Macros y Aplicaciones con VBA
Diseñando formularios
1. En este ejercicio se pide crear un formulario personalizado que permita mostrar datos de la tabla
Clientes de la base de datos PCVentas.
2. Primero debe diseñar el formulario:
a. Ingrese al editor de Visual Basic (Alt + F11).
b. En el proyecto actual, elija el menú Insertar, Formulario…
c. Añada los controles necesarios para que tenga la apariencia de la siguiente figura:
Conectando a la BD
1. Primero, debe activar la referencia al modelo de Objetos ActiveX.
a. En el Editor de Visual Basic…
b. Use el menú Herramientas, Referencias…
c. Active la referencia a Microsoft Activex Data Objects Library.
340
Capítulo 15: Aplicaciones con BD
3. Luego, en el módulo debe crear un procedimiento que permita crear la conexión a la base de datos.
Considere el siguiente código:
Sub Conectar( )
ruta = “C:\BD\”
conec.Provider = “Microsoft.ACE.OLEDB.12.0”
conec.Open ruta & “PcVentas.accdb”
End Sub
Leyendo registros de la BD
1. Ahora, se debe escribir el código necesario para que al activarse el formulario, se muestre el
IdCliente de la tabla Clientes en el cuadro combinado.
a. Haga doble clic sobre su formulario y en el evento Activate escriba:
‘cierra la conexión
conec.Close
End Sub
341
Excel for Masters - Macros y Aplicaciones con VBA
Leyendo Registros de la BD
1. Implemente el código necesario para que al seleccionar un IdCliente se muestren, en los cuadros
de texto, los datos correspondientes a dicho cliente.
Conectar
conec.Close
End Sub
3. Realice el procedimiento para que al hacer clic en el botón Aceptar, el Nombre y Código del Cliente
se muestren en la hoja de cálculo de las Facturas (celdas C6 y C7) y se cierre el formulario activo.
(Vea la figura de abajo).
342
Capítulo 15: Aplicaciones con BD
Sub Mostrar_Clientes()
frmClientes.ShowvbModal
End Sub
5. Relacionar este procedimiento a un botón (use el control Botón de los controles de Formulario), tal
como se muestra en la siguiente figura:
Practique lo aprendido
1. Diseñe el siguiente formulario…
2. Realice el procedimiento para que en el cuadro combinado se muestren los códigos de la tabla
Productos:
343
Excel for Masters - Macros y Aplicaciones con VBA
3. Al seleccionar un código se deben mostrar los datos de los productos en los cuadros de textos
correspondientes, excepto del cuadro Cantidad que debe ser ingresado por teclado.
344
Capítulo 15: Aplicaciones con BD
Do
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value<> “”
End Sub
4. Ahora, agregue el código necesario para llevar los cuadros de texto del formulario a las celdas
activas (el código lo debe escribir debajo del comentario Aquí debe ir…).
Escriba el código empleado:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
345
Excel for Masters - Macros y Aplicaciones con VBA
6. Finalmente, en su hoja de cálculo, dibuje un botón y asigne el procedimiento creado. (Vea la figura).
Recuperar registros
1. Se pide crear un procedimiento que permita crear una nueva factura usando el número correlativo
correspondiente, es decir si la última factura es la 12350, este procedimiento debe generar la
factura 12351.
3. Para desarrollar este procedimiento, en el módulo debe crear una variable de tipo recordset con el
nombre de rsFacturas.
Public rsFacturasAs New ADODB.Recordset
Sub Nueva ( )
‘limpia las celdas de los encabezados y detalles
Range(“C6:C7”).ClearContents
Range(“A10:E19”).ClearContents
Range(“F6”).Value = Date
346
Capítulo 15: Aplicaciones con BD
‘seconecta a la BD
Conectar
conec.Close
End Sub
5. Luego, dibuje un botón (use los Controles de Formularios) y asigne el procedimiento que acaba de
crear.
Recuperar registros
1. Realice un procedimiento para que al hacer clic en el botón Ver Factura se muestren los Encabezados
y Detalles de la factura cuyo número figura en la celda C6.
2. El procedimiento sería:
a. Conectarse a la BD.
b. Crear una instrucción SELECT para recuperar los encabezados de la Factura. Debe incluir los
siguientes campos de las tablas Facturas y Clientes:
IdFactura, NomCliente, IdCliente y Fecha
c. Además, se debe indicar la relación entre las tablas (campo común IdCliente).
d. Llevar los campos a su hoja de cálculo.
Sub Mostrar( )
‘guarda el valor de la factura a consultar
celda = Range(“C4”).Value
‘se conecta a la BD
Conectar
347
Excel for Masters - Macros y Aplicaciones con VBA
‘crea el RecordSet
rsFacturas.OpenSql, conec
If rsFacturas.BOF Then
MsgBox “Factura no Existe”
conec.Close
Exit Sub
EndIf
Range(“A10:E19”).ClearContents
‘lleva los detalles a la hoja de Excel, paso 2
Range(“A10”).Select
348
Capítulo 15: Aplicaciones con BD
conec.Close
End Sub
Sub Facturar( )
‘se conecta a la BD
Conectar
End Sub
349
Excel for Masters - Macros y Aplicaciones con VBA
Practique lo aprendido
1. Realice el procedimiento para guardar los datos de los detalles en la tabla Detalles.
2. Los campos a guardar deben ser:
IdFactura, IdProducto, PreVenta y Cantidad.
3. El procedimiento propuesto es:
a. Crear un SELECT para conectarse a la tabla Detalles, recuperando 0 registros.
b. Agregar un registro en blanco.
c. Llevar los valores de las celdas a los campos de la tabla.
d. Actualizar la tabla.
4. Para guardar los detalles, debe ir al primer detalle (A10) y realizar un recorrido hasta la última celda
con datos; en dicho recorrido debe ir guardando cada registro.
5. Los pasos b,c y d deben estar dentro de la estructura que recorre las celdas de los detalles.
Escriba el código empleado:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
350
Impreso en los Talleres Gráficos de
Surquillo
7199700 - 7199701
Mayo 2011