Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 353

Excel

for Masters
Macros y Aplicaciones VBA
Excel for Masters - Macros y Aplicaciones VBA
Autores: César Miguel Oceda Samaniego

© Derecho de autor reservado


Empresa Editora Macro E.I.R.L.

© Derecho de edición, arte gráfico y diagramación reservados


Empresa Editora Macro E.I.R.L.

Edición a cargo de:


Empresa Editora Macro E.I.R.L.
Av. Paseo de la República 5613 – Miraflores
Lima - Perú
 (511) 748 0560
[email protected]
http://www.editorialmacro.com

Primera edición: mayo 2011


Primera reimpresión: julio 2014

Impreso en los Talleres Gráficos de


Empresa Editora Macro E.I.R.L.
Lima - Perú

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.

HERLE APARI CHILIQUILLO

Programador y Desarrollador de aplicaciones de escritorio con certificación Microsoft, autor de manuales


de Excel para SENATI, docente certificado en Office, programador especialista MRE.
Dedicatoria
En esta oportunidad, quiero dedicar este libro
a mi familia, por la paciencia y generosidad de
su tiempo, sin este apoyo no hubiera tenido la
oportunidad de investigar a fondo los nuevos
contenidos.

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.

Una plantilla se emplea


como base para crear
otros libros…

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

Las plantillas de Excel son de 2 tipos:

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.

Emplear plantillas para crear libros


Para crear un libro nuevo tiene 2 caminos:
• Emplear la plantilla en blanco.
• Crear un libro a partir de una plantilla.

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.

Para crear un libro basado en una plantilla:


1. Haga clic en la Ficha Archivo.
2. Elija la opción Nuevo.
3. En el grupo Plantillas disponibles, haga clic en la plantilla que desee usar.

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

Es la plantilla predeterminada para crear


nuevos libros.
Libro en blanco

Muestra una lista de las últimas plantillas


empleadas por el usuario.
Plantillas recientes

Muestra las plantillas que vienen con Excel


2010.
Plantillas de Ejemplos

Ubicación de las plantillas generadas por


usted o descargadas del sitio de recursos de
Microsoft (Office.com).
Mis Plantillas

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.

Si usted elije Plantillas de ejemplos, verá una ventana como:

B
A

A. Lista de las plantillas de ejemplos disponibles.


B. Vista preliminar de la plantilla seleccionada.
C. Botón para crear el libro basado en la plantilla seleccionada.

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.

La ventana que se muestra es:

B
A

A. Lista de las plantillas descargadas y las creadas por el usuario.


B. Vista preliminar de la plantilla seleccionada.
C. Botón para crear el libro basado en la plantilla seleccionada.

Descargar plantillas de Office.com


Office.com es el sitio de Microsoft que cuenta con una serie de recursos disponibles para los usuarios
de Office 2010. Entre las diversas herramientas y recursos tenemos:

Recursos: sean plantillas, imágenes y cursos de


aprendizaje.
Descargas: ya sea de versiones de prueba de software
como de herramientas adicionales para Office.
Soporte técnico de los principales programas de
Office.

Office.com está relacionado con todos los productos


Office (como Word o Excel) y se muestra en algunas
opciones de estos programas. Por ejemplo, al emplear
plantillas se muestra automáticamente plantillas del
sitio Web de Microsoft. También, cuando usted usa la
ayuda, el soporte es ubicado directamente de Office.
com.

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:

Para descargar una plantilla de Office.com:


1. Haga clic en la Ficha Archivo y elija la opción Nuevo.
2. En Plantillas disponibles, ubique el grupo Plantillas de Office.com.
3. Abra alguna de las categorías disponibles para ver los elementos disponibles.
4. Seleccione una plantilla y haga clic en el botón Descargar.

Espere unos momentos mientras se completa la descarga de la plantilla en su equipo:

20
Capítulo 1: Creando soluciones a medida

En la imagen se muestra una plantilla descargada del grupo Facturas (FacturaServiciosJuridicos.xltx).

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.

CREAR PLANTILLAS PERSONALIZADAS


En los temas anteriores se ha visto lo importante y productivo que es emplear plantillas. Si usted
planifica bien su trabajo, puede tener muchos libros que solucionen sus necesidades: facturas, recibos,
control de tiempos, libros contables, etc. El siguiente paso es crear sus propias plantillas, incluyendo
formatos, fórmulas e incluso macros, de esta manera podrá crear libros basados en las soluciones ya
implementadas.

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:

Windows Vista y Windows 7:


C:\Usuarios\nombre_de_usuario\AppData\Local\Microsoft\

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

Asegurar Integridad de los datos


Es necesario que el libro a emplear no pueda ser modificado por el usuario que lo consume. En este
caso, debemos proteger que los títulos y las fórmulas no deben modificarse o eliminarse.

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.

Para guardar el libro como plantilla debe realizar:


1. Haga clic en la pestaña Archivo y elija la opción Guardar y enviar.
2. Elija el comando Cambiar el tipo de archivo.
3. Seleccione la opción Plantilla y haga clic en el botón Guardar como.

4. Escriba un nombre para la plantilla.

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.

4. Haga clic en Aceptar.

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.

Los controles disponibles son:

Control Utilidad

Permite agregar textos. No tiene funcionalidad.


Etiqueta
Agrupa controles como casillas y botones de opción.
Cuadro de Grupo También se puede usar simplemente como un marco.

Responde al evento clic. Útil para ejecutar macros.


Botón

Maneja 2 estados, el de Selección y No Selección.


Casilla de verificación

Permite elegir una opción de un grupo de opciones.


Botón de Opción

Muestra elementos en un cuadro.


Cuadro de Lista

Muestra elementos en un cuadro desplegable.


Cuadro Combinado
Para establecer un numerador que puede ser asociado
Control de Número a una celda.

Puede emplearse para cambiar valores numéricos de


una celda.
Barra de desplazamiento

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

En esta otra imagen hay barras de desplazamiento y botones.

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.

Para modificar el formato de un control:


1. Sobre el control insertado, use el botón derecho y elija Formato de control.

2. Modifique los valores necesarios. Con la opción Vincular con la celda relacione el control a una
celda.

3. Haga clic en Aceptar.

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

Formatos del control Número


Permite establecer el valor mínimo y máximo para este control. También puede indicar el valor de
incremento al hacer clic sobre él.

Si se vincula a una celda podrá ver cómo al hacer clic en el control, la celda vinculada cambiará.

Formatos del botón de Opción


Desde el formato puede indicar qué opción será seleccionada. También puede vincular el control a
una celda, de esta manera se puede identificar la opción seleccionada. Al modificar el formato de un
botón de opción, TODOS los botones de opción del mismo grupo se vinculan con la misma celda, así
solo podrá seleccionar una opción del grupo de opciones.

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.

El seleccionar la otra opción, la celda vinculada cambia tambié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

Formatos de la Casilla de verificación


Puede seleccionar más de una casilla de verificación en una hoja de cálculo o en un cuadro de grupo.
Una casilla de verificación puede tener los estados: activada y desactivada.

Al modificar el formato de este control, puede vincularla a una celda.

Al activar una casilla, la celda vinculada permite determinar si está activa (VERDADERO).

En caso de que no esté activada se muestra FALSO.

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)

Formatos de la lista y del cuadro combinado


El formato de estos controles permite que pueda emplear un rango de datos como origen para los
elementos a mostrar en dichos controles.

Al vincular con una celda, se muestra el número de la opción seleccionada:

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.

Formatos de la barra de desplazamiento


Muy parecido al control número. Permite establecer el valor mínimo y máximo para manipular dicho
control.

La celda vinculada cambia cada vez que emplea la barra.

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

EJERCICIO 1: CREAR PLANTILLAS PERSONALIZADAS


En estos ejercicios se emplearán archivos (libros e imágenes) ubicados en la carpeta Capítulo_1 de su
carpeta de prácticas.

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)

d. Su ventana debe quedar como:

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

Asegurar Integridad de los datos


1. Las celdas C7:C8 deben soportar únicamente valores numéricos.
a. Seleccione las celdas C7:C8.
b. En la ficha Datos, ubique el comando Validación de datos y haga clic sobre la opción Validación
de datos.

c. En el cuadro Permitir elija Número entero. Indique como valor mínimo 0 y máximo 1000. Su
ventana debe ser:

d. Luego, en la ficha Mensaje de entrada, rellene los valores de acuerdo a:

e. Haga clic en Aceptar.


f. Realice el procedimiento para que las celdas D7:D8 soporten números enteros mayores a 0.

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.

d. Haga clic en Aceptar.

32
Capítulo 1: Creando soluciones a medida

3. Ahora, debemos ocultar las fórmulas empleadas.


a. Seleccione las celdas B13:C14.
b. Presione las teclas CTRL + 1.
c. En la ficha Proteger, active la casilla Oculta.

d. Haga clic en Aceptar.

4. Proteja el libro para probar las opciones implementadas:


a. Vaya a la ficha Revisar y ubique el comando Proteger hoja.

b. No escriba ninguna contraseña y haga clic en Aceptar.


c. Intente en borrar el título. Se debe mostrar el siguiente mensaje:

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.

d. Haga clic en Guardar.


e. Cierre el libro.

33
Excel for Masters - Macros y Aplicaciones con VBA

2. Para probar la plantilla.


a. En la ficha Archivo, elija Nuevo.
b. Seleccione Mis Plantillas.
c. La plantilla creada se mostrará en la lista.

d. Elija la plantilla Credenciales y haga clic en Aceptar.

3. Ingrese los siguientes valores:

4. Escriba los números de control obtenidos:

5. Guarde el libro como EntregaEnero en la carpeta Capítulo_1.

6. Genere otro libro basado en la plantilla Credenciales con los siguientes valores:

7. Guarde el libro como EntregaFebrero en la carpeta Capítulo_1.

34
Capítulo 1: Creando soluciones a medida

EJERCICIO 2: CREAR PLANTILLAS PERSONALIZADAS


1. En un libro en blanco, diseñe la siguiente hoja de cálculo:

2. Escriba las fórmulas necesarias para completar el libro, de acuerdo a:


a. Unidades a procesar: cada kilo de champiñones trae 18 unidades.

Fórmula:

b. Frascos: en cada frasco debe incluir 8 unidades.

Fórmula:

c. Cajas: en cada caja debe incluir 18 frascos.

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:

Fórmula: =C5+ (D11/100)

35
Excel for Masters - Macros y Aplicaciones con VBA

3. Aplique los formatos necesarios para que se muestre como:

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.

6. Guarde la plantilla como Orden_Empaque.xltx.

7. Cierre todos los libros y salga de Excel.

EJERCICIO 3: CREAR FORMULARIOS


Para facilitar el cálculo de las cuotas a pagar por la compra de un vehículo en el Sistema de Fondos
Colectivos, se necesita crear un formulario que permita seleccionar el tipo de auto, así como otras
variables que permitan establecer su pago por Cuota.

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

2. Ahora, se aplicará nombres de rango para escribir fórmulas posteriormente.


a. Vaya a la hoja Datos y seleccione el rango B6:B13. Asígnele como nombre Modelos.
b. El nombre PrecioAutos debe asignarse al rango B6:C13

Agregar controles de formulario


1. Para agregar controles debe hacerlo desde la ficha Programador, ubique el comando Insertar:

2. Añada los siguientes controles de formulario:

3. Modifique las propiedades del control número.


a. Sobre el control número de las Cuotas, haga clic derecho y elija Formato de control.

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.

4. Cambie las propiedades de los otros controles de acuerdo a:


a. Los botones de opción se deben vincular con la celda K3.
b. La casilla de Aire Acondicionado vincularla con la celda K4.
c. La casilla Aros de aleación se debe vincular con la celda K5.
d. La lista debe tener como Rango de origen al rango Modelos. Vincular el control con la celda K6.

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

5. Finalmente, la Cuota Mensual es el Precio Total entre las cuotas elegidas:


=C16/C4

6. Para probar el formulario creado, cambie los valores como se ven en la imagen y compare los
resultados:

7. Guarde los cambios aplicados.

39
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 4: CREAR FORMULARIOS

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:

3. Luego, asigne nombre a los siguientes rangos:

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

Agregar controles de formulario


1. Agregue controles para que su tabla se muestre:

2. Luego, cambie las propiedades de los controles:


a. El cuadro Mes debe tener como rango de entrada al rango MesConsulta. Además, se debe
vincular con la celda J3.
b. Los botones del Tipo de Consulta se deben vincular con la celda J4.
c. El cuadro Nro. de Medidor debe tener como rango de entrada al rango Medidor. Vincule el
control con la celda J5.

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:

d. Luego, en la esquina superior izquierda, inserte un cuadro de texto y en la barra de fórmulas


escriba la fórmula:
=B19

2. Luego, elija otro número de medidor y observe el resultado:

3. Guarde los cambios efectuados y cierre el libro.

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.

TABLAS DE DATOS DE UNA ENTRADA


Utilice una tabla de datos de una variable si desea ver de qué manera afectan distintos tipos de interés
al pago mensual de una hipoteca.

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.

TABLA DE DATOS DE DOS VARIABLES


Una tabla de datos de dos variables puede mostrar cómo afectan los distintos tipos de interés y plazos
del préstamo al pago de una hipoteca.

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

CÁLCULOS DE LAS TABLAS DE DATOS


Las tablas de datos se actualizan cuando se actualiza una hoja de cálculo, aunque no hayan cambiado.
Para acelerar el cálculo de una hoja de cálculo que contenga una tabla de datos, pueden cambiarse las
opciones de Calcular para que se actualice automáticamente la hoja de cálculo pero no las tablas de
datos.

CREAR UNA TABLA DE DATOS DE UNA VARIABLE


Debe diseñar las tablas de datos de una variable de forma que los valores de entrada aparezcan en una
columna (orientación por columnas) o en una fila (orientación por filas). Las fórmulas que se utilicen
en la tabla de una variable deberán hacer referencia a una celda de entrada.

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)

3. Seleccione el rango de celdas. En el ejemplo (B22:C36).

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

5. Siga uno de los procedimientos siguientes:


a. Si la tabla de datos está orientada por columnas, escriba la referencia de celda (referencia de
celda: conjunto de coordenadas que ocupa una celda en una hoja de cálculo.
b. Por ejemplo, la referencia de la celda que aparece en la intersección de la columna B y la fila 3
es B3 de la celda de entrada en el cuadro Celda de entrada (columna).
c. Si la tabla de datos está orientada por filas, escriba la referencia de celda de la celda de entrada
en el cuadro Celda de entrada (fila).

AGREGAR UNA FÓRMULA A UNA TABLA DE DATOS DE UNA VARIABLE


Las fórmulas que se utilicen en la tabla de datos de una variable deberán hacer referencia a la misma
celda de entrada. La tabla de datos es un rango de celdas que muestra los resultados de sustituir
diferentes valores en una o más fórmulas. Existen dos tipos de tablas de datos: tablas de una entrada
y tablas de dos entradas.

CREAR UNA TABLA DE DATOS DE DOS VARIABLES


Las tablas de datos de dos variables solamente utilizan una fórmula con dos listas de valores de entrada.
La fórmula deberá hacer referencia a dos celdas de entrada diferentes.

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:

3. Escriba una lista de valores de entrada en la misma columna, debajo de la fórmula.


4. Escriba la segunda lista en la misma fila, a la derecha de la fórmula seleccione el rango de celdas
que contenga la fórmula y los valores de fila y de columna.
5. En la ficha Datos, en el grupo Herramientas de datos, haga clic en Análisis Y si y, después, en Tabla
de datos.
a. En el cuadro Celda de entrada (fila), escriba la referencia de la celda de entrada para los valores
de entrada de la fila.
b. En el cuadro Celda de entrada (columna), escriba la referencia de la celda de entrada para los
valores de entrada de la columna.
6. Haga clic en Aceptar.

ACELERAR LOS CÁLCULOS EN UNA HOJA DE CÁLCULO CON TABLAS DE DATOS

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

BORRAR UNA TABLA DE DATOS


1. Seleccione toda la tabla de datos incluidas todas las fórmulas, los valores de entrada, los valores
resultantes, los formatos y los comentarios.
2. En la ficha Inicio, en el grupo Modificación, haga clic en Borrar y, a continuación, en Borrar todo.

Borrar los valores resultantes de una tabla de datos


Deben borrarse todos los valores, ya que los valores resultantes están en una matriz. Si no desea
borrar toda la tabla de datos No seleccione las fórmulas ni los valores de entrada.
1. Seleccione todos los valores resultantes en la tabla de datos.
2. En la ficha Inicio, en el grupo Modificación, haga clic en Borrar y, a continuación, en Borrar
contenido.

CREACIÓN DE TABLAS CON EXPRESIONES O FUNCIONES DE TIPO XY


Dada una fórmula donde exista 1 ó 2 variables se puede crear una lista tabulada con las variaciones
indicadas.

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.

La tabla resultante sería:

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

2. Seleccione el rango B9:H16


3. Aplique la orden de la ficha Datos, Análisis Y Si, luego tabla de datos, ingresa los datos del gráfico
indicado.

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.

USO DE BUSCAR OBJETIVO CON FUNCIONES


Una persona solicita un préstamo en una entidad financiera, el banco le informa que para un
crédito de S/. 10,000.00 a la tasa efectiva mensual de 1.45% en 10 meses, la cuota mensual a
pagar es: S/. 1.081.47

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

En este caso debemos distinguir 2 puntos:


1. ¿Cuál es el objetivo?
2. ¿Qué puede cambiar para lograr ese objetivo?

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.

En definir la celda, Se ingresa B6 Representa el Pago


En Con el valor: Se ingresa 2000, Representa el objetivo
En Para cambiar la celda: Se ingresa B3 Representa el préstamo

Al aceptar se obtendrá el resultado:

Objetivo logrado S/.2,000.00, el nuevo préstamo es S/. 18,493.32

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

USO DE BUSCAR OBJETIVO EN FÓRMULAS

En este caso se trabajará con una fórmula para obtener la Ganancia:


Ganancia = Ventas + Otros Ingresos - Gastos Operativos – Otros Gastos

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?

Presentamos la hoja con los datos y la fórmula:

Escriba la tabla de la imagen e inserte las fórmulas propuestas:

¿Cuál debe ser nuestra


Ventas * 5% venta para obtener una
ganancia de 6000?

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

INFORMES DE RESUMEN DE ESCENARIO


Para comparar varios escenarios, puede crear un informe que los resuma en la misma página. El informe
puede enumerar los escenarios unos junto a otros o resumirlos en un informe de tabla dinámica.

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.

CREAR UN INFORME RESUMEN DE 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 Resumen.
3. Haga clic en Resumen del escenario o en Informe de tabla dinámica de escenario.
4. En el cuadro Celdas de resultado, escriba las referencias de las celdas que hacen referencia a las
celdas cuyos valores cambian los escenarios. Separe las referencias múltiples mediante comas.

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.

CARGAR EL COMPLEMENTO SOLVER


El complemento Solver es un programa de complemento, es decir unprograma suplementario que
agrega funciones o comandos personalizados a Microsoft Officede Microsoft Office Excel que está
disponible cuando instala Microsoft Office o Excel. Sin embargo, para utilizarlo en Excel primero lo
debe cargar.
1. Haga clic en el Menú Archivo, Opciones, luego en Complementos y, en el cuadro Administrar,
seleccione Complementos de Excel.
2. Haga clic en Ir, luego en el cuadro Complementos disponibles, active la casilla de verificación
Complemento Solver y, a continuación, en Aceptar.

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.

EJEMPLO DE UNA EVALUACIÓN DE SOLVER


En el siguiente ejemplo, el nivel de publicidad de cada trimestre afecta al número de unidades
vendidas, determinando indirectamente el importe de los ingresos por ventas, los gastos asociados
y los beneficios. Solver puede modificar los presupuestos trimestrales de publicidad (celdas B5:C5),
con una restricción total máxima de 20.000 $ (celda F5), hasta que el valor total de beneficios alcance
el importe máximo posible. Los valores en las celdas ajustables se utilizan para calcular los beneficios
de cada trimestre, por tanto los valores están relacionados con la fórmula en la celda objetivo F7,
=SUMA(Q1 Beneficios:Q2 Beneficios).
1 2

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

DEFINIR UN MODELO DE OPTIMIZACIÓN


Un modelo de optimización consta de tres partes: la celda objetivo, las celdas cambiantes y las
restricciones.

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.

DEFINA Y SOLUCIONE UN PROBLEMA


1. En la ficha Datos, en el grupo Análisis, haga clic en Solver.
Si el comando Solver o el grupo Análisis no está disponible, deberá cargar el programa de
complemento Solver.

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

Siga uno de los procedimientos siguientes:


• Si desea que el valor de la celda objetivo sea el valor máximo posible, haga clic en Máx.
• Si desea que el valor de la celda objetivo sea el valor mínimo posible, haga clic en Mín.
• Si desea que la celda objetivo tenga un valor determinado, haga clic en Valor de y, a continuación,
escriba el valor en el cuadro.

AGREGAR UNA RESTRICCIÓN


1. En el cuadro de diálogo Parámetros de Solver en Sujeto a las restricciones, haga clic en Agregar.
2. En el cuadro Referencia de la celda, escriba la referencia de celda o el nombre.

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.

4. Haga clic en Resolver y siga uno de los procedimientos siguientes:


• Para mantener los valores de la solución en la hoja de cálculo, haga clic en Utilizar solución de
Solver en el cuadro de diálogo Resultados de Solver.

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.

EJERCICIO 1: CREACIÓN DE TABLA DE 2 ENTRADAS


Se desea calcular la cuota mensual del préstamo para los 3 bancos en 18, 24 y 36 meses, respectivamente.

Este es un caso de creación de tabla.


1. Abra el libro Tabla de datos 2011.xlsx de la carpeta Capítulo_2.

2. La fórmula que resuelve la cuota es la siguiente:=PAGO(B3;B4;-B5).


3. Ingrese la fórmula en la celda E3.
4. Seleccione el rango E3:H6.
5. Ir a la ficha Datos, en el grupo Herramientas de análisis, seleccione Análisis Y SI.
6. Ahora elija la opción Tabla de datos.
7. En la ventana, seleccione los datos de fila y columna.

Resultado esperado:

61
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 2: CREACIÓN DE TABLA EN UNA EXPRESIÓN


Se desea obtener la variación de X e Y en la siguiente expresión para los valores de X de 10 a 19 y de
Y de 15 a 26.
1. Abra el libro Tabla de Fórmulas.xlsx de la carpeta capítulo_2.

2. Ingrese la fórmula en la celda B12 (parte superior izquierda de la tabla)


=D8^2+2*D8*D9+D9^2

3. Seleccione el rango B12:L24.


4. Ir a la ficha Datos, en el grupo Herramientas de análisis, seleccione Análisis Y SI.
5. Ahora elija la opción Tabla de datos.
6. En la ventana, seleccione los datos de fila y columna.

Resultado esperado:

62
Capítulo 2: Herramientas de análisis

EJERCICIO 3: DOBLAR CAPITAL


En este caso debemos determinar el tiempo en que un capital se duplica. Lo resolveremos con buscar
objetivo.

Abra el libro Doblar Capital.xls de la carpeta capítulo_2.

Debemos identificar nuestro objetivo y la celda que podemos cambiar.

Objetivo 2000 (duplicar capital)


Celda Objetivo C9
Celda a cambiar C7 (el tiempo)

Ingrese la fórmula en la celda C9: =C6*(1+C8)^C7


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.

Resultado:

63
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 4: SOLVER MÉTODO SIMPLEX


Resolver mediante el método simplex el siguiente problema:

Maximizar Z = 3x1 + 2x2

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.

2. Ingresar la fórmula en E5:

3. Ingresar la fórmula en las restricciones ( E7):

64
Capítulo 2: Herramientas de análisis

4. Copiar la fórmula hasta E9.


5. Aplicar la orden Solver.

6. Al generar el Solver podrá mostrarse el siguiente resultado:

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.

Cuando edita una fórmula…

...Excel muestra las celdas empleadas en las fórmulas en colores característicos.

En el caso de rangos, se muestra el rango enmarcado con un borde.

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

Para editar una celda, puede usar:


• Lleve el indicador a la celda que contiene una fórmula y pulse la tecla F2.
• Haga doble clic sobre una celda que contiene una fórmula.

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.

Para emplear esta herramienta:


1. Seleccione la celda cuya fórmula desea evaluar.
2. Vaya a la ficha Fórmula y ubique el grupo Auditoría de fórmula.
3. Haga clic en el comando Evaluar fórmula.

Excel muestra los valores intermedios de la fórmula. Por ejemplo, considerando la siguiente hoja de
cálculo:

En la celda F4 se tiene la siguiente fórmula:


=(SUMA(B4:E4)-MIN(B4:E4))/3

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…

… se muestra el resultado de la operación y se subraya la siguiente operación a calcular…

… de esta manera, va mostrando cómo la fórmula va a calcularse…

… 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

Por último, se muestra el valor final.

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.

Para insertar comentarios:


1. Lleve el indicador a la celda a la que desee agregar el comentario.
2. Luego, use la ficha Revisar y haga clic en el comando Nuevo Comentario.

70
Capítulo 3: Herramientas de Auditoría

3. Se muestra un cuadro con el nombre del usuario del equipo. Escriba el texto.

4. Para terminar, haga clic en cualquier celda vacía de su hoja.


5. Las celdas que tienen comentarios se muestran con un punto rojo en la esquina…

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.

REVISAR SUS COMENTARIOS


Cuando inserta muchos comentarios a su hoja de cálculo es necesario emplear otras formas de
revisarlos sin necesidad de ir seleccionando las celdas con el mouse, tal como se hizo en el caso
anterior.
1. Vaya a la ficha Revisar.
2. Ubique los comandos del grupo Comentarios.

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.

5. Puede activar o desactivar este comando para mostrar/ocultar 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.

3. Modifique el texto del comentario.

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.

3. La celda ya no muestra ninguna marca.

72
Capítulo 3: Herramientas de Auditoría

IMPRIMIR LOS COMENTARIOS


Puede imprimir sus comentarios en su misma hoja de cálculo o como una lista al final.
1. Vaya a la ficha Diseño de página.
2. Haga clic en el disparador del cuadro de diálogo Configurar página.

3. En el cuadro Configurar página, vaya a la ficha Hoja y ubique el control Comentarios.

4. Si elige Como en la hoja, la impresión se realiza como muestra la imagen:

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.

La auditoría de fórmulas se utiliza con los comandos de la ficha Fórmulas.

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.

Los valores de error se pueden ver en la siguiente tabla:


Tipo de Error Descripción
El ancho de una columna no es suficiente para mostrar todos los caracteres de
#####
una celda o cuando una celda incluye valores negativos en la fecha o la hora.
Este error se muestra cuando un número se divide por cero (0) o por una celda
#¡DIV/0!
que no contiene ningún valor.
#N/A El valor no está disponible para una función o una fórmula.
No reconoce el texto de una fórmula. Por ejemplo, el nombre de un intervalo
#¿NOMBRE?
o de una función puede estar mal escrito.
#¡NÚM! Una fórmula o función contiene valores numéricos no válidos.
La referencia de celda no es válida. Por ejemplo, cuando se eliminan celdas a
#¡REF!
las que otras fórmulas hacían referencia.
Excel puede mostrar este error si la fórmula incluye celdas que contienen tipos
#¡VALOR!
de datos diferentes.

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.

3. Haga clic en el comando Comprobación de errores.


4. Haga clic en uno de los botones de acción en la parte derecha del cuadro de diálogo. Las acciones
disponibles son diferentes para cada tipo de error.

5. Haga clic en Siguiente.


6. Continúe hasta finalizar la revisió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.

ACTIVAR O DESACTIVAR REGLAS DE REVISIÓN DE ERRORES


La revisión de errores se hace de manera automática y permite comprobar y detectar ciertos tipos de
errores. Puede activar o desactivar esta comprobación en el momento que lo quiera.
1. Haga clic en la pestaña Archivo, seleccione Opciones y luego haga clic en la categoría Fórmulas.
2. En Reglas de verificación de Excel, active o desactive las casillas de cualquiera de las siguientes
reglas:

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.

EJERCICIO 1: EVALUAR FÓRMULAS

Escribir fórmulas

1. Abra el libro Auditoría.xlsx de la carpeta Capítulo_2.


2. Vaya a la hoja Prod y complete las siguientes celdas:

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)

c. Copie la última fórmula a las celdas D21 hasta F21.

d. Finalmente, aplique el formato porcentual al rango G6:G19.

Evaluar fórmulas

1. Vaya a la celda G6.


2. Luego, en la ficha Fórmulas, haga clic en el comando Evaluar fórmula.

a. En la ventana se subraya la expresión a calcular. Escriba dicha expresión y el valor resultante.

Expresión a evaluar: .....................................................................................................................

Valor: ............................................................................................................................................

b. Haga clic en Evaluar y anote la expresión a evaluarse ahora.

Expresión a evaluar: .....................................................................................................................

Valor: ............................................................................................................................................

c. Siga con el botón Evaluar hasta obtener el valor final.

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: ............................................................................................................................................

Rango o celda: ..............................................................................................................................


Color: ............................................................................................................................................

b. Si hace clic en la celda C21 y presiona la tecla F2:


Rango o celda: ..............................................................................................................................
Color: ............................................................................................................................................

EJERCICIO 2: EVALUAR FÓRMULAS


Evaluar fórmulas complejas
1. Vaya a la hoja Horas y lleve el indicador de celdas a C8.
2. Haga clic en el comando Evaluar fórmula.
a. En este ejercicio, debe anotar cada expresión que se va a calcular y el valor obtenido:

Expresión a evaluar Valor

79
Excel for Masters - Macros y Aplicaciones con VBA

Otro ejercicio para evaluar fórmulas


1. Vaya a la hoja Pasajeros y lleve el indicador de celdas a C9.
2. Haga clic en el comando Evaluar fórmula.
a. En este ejercicio, debe anotar cada expresión que se va a calcular y el valor obtenido.

Expresión a evaluar Valor

3. Guarde los cambios efectuados.

EJERCICIO 3: COMENTARIOS
Insertar Comentarios
1. Vaya a la celda G6 y realice el siguiente procedimiento:
a. Vaya a la ficha Revisar.

b. Haga clic en el comando Nuevo Comentario y escriba:


Revisar orden de producto si % de falla es mayor al 10%.

c. Lleve el indicador a la celda B3 y escriba como comentario:


También se consideran órdenes de la segunda quincena de mayo.

d. Escriba el siguiente comentario en la celda F21.


Notificar a Control de Calidad si excede a 75 fallas.

80
Capítulo 3: Herramientas de Auditoría

Mostrar los comentarios


1. Vaya a la ficha Revisar y haga clic en el comando Mostrar todos los comentarios.
2. El resultado debe ser:

3. Para continuar, apague el comando Mostrar todos los comentarios.


4. Guarde los cambios efectuados.

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. Vaya al comentario de la celda B3 y modifíquelo a:


Sólo ordenes de producción de ese mes.
5. Guarde los cambios efectuados.

EJERCICIO 4: AUDITORÍA DE FÓRMULAS


Rastrear precedentes
1. Vaya la hoja Resumen y haga clic en la celda B8.
2. En la ficha Fórmula, haga clic en el comando Mostrar precedentes. El resultado debe ser:

3. Ahora, haga clic en la celda B4 y muestre los precedentes.

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

EJERCICIO 5: COMPROBAR ERRORES


Tipos de Errores
1. Vaya a la hoja Exporta y ubique las celdas con la marca de error (marca verde en la esquina superior).
2. Anote los 2 tipos de error de esa hoja.

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.

3. Se muestra la primera celda con error:

4. Observe que se muestra la celda E6 con la descripción del error detectado.


5. Haga clic en el botón Siguiente para ver otras celdas con error. Anote la celda y el tipo de error ubicado.

Celda Comentarios

6. Use el botón Siguiente hasta llegar al error de la celda D12.


7. Observe que la función está mal escrita (no debe ser SUMAR sino SUMA). Haga clic en el botón
Modificar en la barra de fórmula y corrija la fórmula.
8. Haga clic en Reanudar y salga de la ventana Comprobación de errores.

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.

PROTECCIÓN DEL LIBRO


Generalmente esta opción se usa solo para tener asegurada la información. Microsoft Excel 2010
puede usar contraseñas para impedir que otras personas abran o modifiquen los libros. Es importante
saber que si no recuerda su contraseña, Microsoft no puede recuperar sus contraseñas olvidadas.

Para proteger el libro de Excel 2010, use las siguientes opciones.


1. En una hoja de cálculo abierta, haga clic en la ficha Archivo. Se abrirá 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:

87
Excel for Masters - Macros y Aplicaciones con VBA

MARCAR COMO FINAL (LIBRO SÓLO DE LECTURA)


Cuando una hoja de cálculo está marcada como final, los comandos de edición y escritura y las marcas de
revisión están deshabilitados o desactivados, y la hoja de cálculo es de sólo lectura. El comando Marcar
comentario como final ayuda a transmitir que está compartiendo una versión finalizada de una hoja de
cálculo. También impide que los lectores o revisores modifiquen la hoja de cálculo sin darse cuenta.

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:

4. Seleccione Marcar como final.

Característica de un libro sólo de lectura


1. En la barra de título se añade (sólo lectura).
2. Los botones de edición y demás están desactivadas.
3. En la barra de estado aparece el mensaje marcado como final.

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.

CIFRAR CON CONTRASEÑA (CONTRASEÑA PARA EL 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:

4. Seleccione Cifrar con contraseña, luego en la ventana añada la contraseña.

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

Cuando abra el libro se le pedirá la contraseña.

Si no recuerda la contraseña, no podrá ver el contenido del libro, se le recomienda anotarlo en


una agenda personal.

Para quitar la contraseña, vuelva a ingresar a cifrar con contraseña y bórrela.

PROTEGER HOJA ACTUAL (PROTEGER LA HOJA)


Proteja la hoja de cálculo y las celdas bloqueadas mediante la característica Proteger hoja actual.Puede
seleccionar la protección con contraseña y permitir o impedir que otros usuarios seleccionen, apliquen
formato, inserten, eliminen, ordenen o modifiquen áreas de la hoja de cálculo.

Proteger toda la 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. Aparecen las siguientes opciones:

90
Capítulo 4: Colaborar con otros usuarios

4. Seleccione Proteger hoja actual, luego en la ventana añada la contraseña.

Al ingresar la contraseña 2 veces, se limita el acceso a toda la hoja.

Proteger la hoja y limitar su acceso a rangos


Consideremos lo siguiente, se desea tener acceso sólo a los Sueldos y no a las bonificaciones en el
siguiente cuadro de planilla:

Desbloquear los sueldos


1. Seleccionar el rango de sueldos (C5:C11).
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, desactivar la casilla de verificación Bloqueada. Aceptar.

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.

Ahora sólo se puede modificar el rango de sueldos.

Proteger la hoja, limitar su acceso a rangos y no tener acceso a las celdas


Ahora podemos añadir algunas restricciones como tener acceso a las celdas, es decir tener movilidad
por las celdas bloqueadas y desbloqueadas.

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.

5. Establezca la contraseña y Aceptar.

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.

4. Luego, proteger la hoja.

Ahora las fórmulas de las bonificaciones no se visualizan en la barra de fórmulas.

PROTEGER LA ESTRUCTURA DEL LIBRO (PROTEGER LA ESTRUCTURA HOJA Y


VENTANAS)
Proteja la estructura de la hoja de cálculo mediante la característica Proteger la estructura del libro.
Puede seleccionar protección con contraseña y seleccionar opciones para impedir que los usuarios
puedan cambiar, mover o eliminar datos importantes.

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

3. En Permisos, haga clic en Proteger libro.


4. Seleccione Proteger Estructura del libro.
5. Activar las casillas de verificación Estructura y ventana. Aceptar.

RESTRINGIR PERMISOS POR PERSONAS (PERMISOS A PERSONAS)


Instale Windows Rights Management para restringir permisos, use una cuenta de Windows Live ID o
una cuenta de Microsoft Windows para restringir los permisos. Puede aplicar permisos a través de una
plantilla que usa su organización, o puede agregar permisos haciendo clic en Restringir acceso.

Procedimiento para Instalar Windows Rights Management


1. En la ficha Archivo, abrir la vista Backstage.
2. En la vista Backstage, haga clic en Información.
3. En Permisos, haga clic en Proteger libro.
4. Seleccione Restringir permisos por personas.

Debe tener una conexión a Internet para configurar IRM.

94
Capítulo 4: Colaborar con otros usuarios

Ventana de suscripción al servicio mediante un servicio gratuito.

Activar el servicio Windows Live ID.

Ingresa tu correo y contraseña para el servicio.

95
Excel for Masters - Macros y Aplicaciones con VBA

Seleccionamos Equipo privado.

Finalizar la configuración.

Ahora establecemos las restricciones por cuenta de correo.

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.

Un libro compartido muestra en la barra de título el texto COMPARTIDO.

97
Excel for Masters - Macros y Aplicaciones con VBA

PERMITIR QUE LOS USUARIOS MODIFIQUEN RANGOS POR CONTRASEÑA


Para otorgar a determinados usuarios permiso para editar rangos de una hoja de cálculo protegida,
el equipo debe ejecutar Microsoft Windows XP o una versión posterior y, además, debe pertenecer
a un dominio. En lugar de usar permisos que requieran un dominio, también puede especificar una
contraseña para un rango.

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.

EJERCICIO 1: PROTEGER HOJA


1. Abra el libro Planilla 2011.xlsx de la carpeta Capítulo_4.

2. Vaya a la hoja Planilla General y Proteja toda la hoja.


a. En la Ficha Revisar, seleccionar Proteger Hoja.
b. Ingrese la contraseña 2 veces para confirmar. Aceptar.

¿Puede modificar el contenido de las celdas?

99
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 2: DESBLOQUEAR LOS SUELDOS


1. Vaya a la hoja Planilla Sueldos.

2. Seleccione los sueldos.


3. En la ficha Inicio, ubique el grupo fuente y haga clic en el control de diálogo.
4. Seleccione la ficha Proteger, desactive la casilla Bloqueada.

5. Proteja la hoja con el botón Proteger hoja, ingrese la contraseña 2 veces.

¿Puede modificar los sueldos?


¿Puede ver las fórmulas de las bonificaciones?

100
Capítulo 4: Colaborar con otros usuarios

EJERCICIO 3: OCULTAR LAS FÓRMULAS


Vamos a ocultar las fórmulas de las bonificaciones, de tal manera que no se puedan ver en la barra de
fórmulas.

Seleccione el rango D5:F11.


1. En la ficha Inicio, ubique el grupo fuente y haga clic en el control de diálogo.
2. Seleccione la ficha Proteger, active la casilla Oculta.

3. Proteja la hoja con la ficha Revisar/Proteger hoja. Ingrese la contraseña 2 veces.

¿Puede ver las fórmulas de las bonificaciones?

EJERCICIO 4: PROTEGER CON CONTRASEÑA


Ahora vamos a establecer una contraseña en los rangos marcados de color verde.
1. Abra el libro Pedido.

101
Excel for Masters - Macros y Aplicaciones con VBA

2. Seleccione los rangos C3:C4, A7:D12, E1, E3:E4.


3. En la ficha Revisar, seleccione del grupo Cambios el botón Permitir que los usuarios modifiquen
rangos.
4. Con el botón Nuevo añada el título para la selección VENDEDOR.
5. Finalmente, haga clic en el botón Proteger hoja.
6. Ingrese la contraseña para la hoja 2 veces.

7. Ahora sólo se puede modificar si se conoce la contraseña.

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.

OBTENER MÁS INFORMACIÓN SOBRE MICROSOFT QUERY


Con Microsoft Query puede conectar con orígenes de datos externos, seleccionar datos de esos
orígenes externos, importar datos a la hoja de cálculo y actualizar los datos según sea necesario para
mantener los datos de la hoja de cálculo sincronizados con los datos de los orígenes externos.

103
Excel for Masters - Macros y Aplicaciones con VBA

TIPOS DE BASES DE DATOS A LOS QUE SE PUEDE TENER ACCESO


Es posible recuperar datos de varios tipos de bases de datos, incluidos Microsoft Office Access,
Microsoft SQL Server y los servicios OLAP de Microsoft SQL Server. También puede recuperar datos de
libros de Excel y de archivos de texto.

Microsoft Office facilita controladores que pueden utilizarse para recuperar datos de los siguientes
orígenes de datos:

MICROSOFT SQL SERVER ANALYSIS SERVICES

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.

SELECCIONAR DATOS DE UNA BASE DE DATOS


Con Microsoft Query puede seleccionar las columnas de datos que desee importar sólo esos datos a Excel.
Actualizar la hoja de cálculo en una operación
Forma en la que Microsoft Query utiliza los orígenes de datos
Utilizar Microsoft Query para importar datos

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

CONECTAR CON UN ORIGEN DE DATOS

¿QUÉ ES UN ORIGEN DE DATOS?


Un origen de datos es un conjunto de información que permite que Excel y Microsoft Query se conecten
con una base de datos externa. Cuando utilice Microsoft Query para establecer un origen de datos,
asigne un nombre al origen de datos y, a continuación, proporcione el nombre y la ubicación de la base
de datos, el tipo y la información de inicio de sesión y la contraseña. En esta información también se
incluye el nombre de un controlador OBDC o un controlador del origen de datos, que es un programa
que realiza conexiones con un tipo de base de datos determinado.

DEFINIR UN ORIGEN DE DATOS MEDIANTE MICROSOFT QUERY

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

Aparecerá el cuadro de diálogo Crear nuevo origen de datos.

4. En el paso 1, escriba un nombre para identificar el origen de datos.


5. En el paso 2, haga clic en un controlador para el tipo de base de datos que se va a utilizar como
origen.

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

6. Haga clic en Conectar.


A continuación, proporcione la información necesaria para conectarse al origen de 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

ASISTENTE PARA CONSULTAS PARA DEFINIR UNA CONSULTA


Utilice el Asistente para consultas para la mayoría de las consultas. El Asistente para consultas permite
seleccionar y reunir fácilmente datos de diferentes tablas y campos en la base de datos. Mediante
el Asistente para consultas, pueden seleccionarse las tablas y los campos que se desee incluir. Una
combinación interna (una operación de consulta que especifica que se combinen las filas de dos tablas
en función de valores de campo idénticos) se crea automáticamente cuando el asistente reconoce un
campo de clave principal en una tabla y un campo con el mismo nombre en la otra tabla.

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.

ASISTENTE PARA CONSULTAS


1. En la ficha Datos, en el grupo Obtener datos externos, haga clic en De otras fuentes y luego en
Desde Microsoft Query.
2. En el cuadro de diálogo Elegir origen de datos, asegúrese de que la casilla de verificación Usar el
Asistente para consultas para crear o modificar consultas esté activada.

3. Haga doble clic en el origen de datos que desea utilizar.

108
Capítulo 5: Acceso a Datos

SELECCIONAR DATOS ESPECÍFICOS DE UN CAMPO


En una base de datos grande, puede elegir algunos de los datos de un campo y omitir los datos no
necesarios. Por ejemplo, si necesita los datos de dos de los productos de un campo que contiene
información de muchos productos, puede utilizar criterios para seleccionar los datos únicamente de
los dos productos que desea.

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.

ABRIR UNA CONSULTA GUARDADA DESDE EXCEL


1. En la ficha Datos, en el grupo Obtener datos externos, haga clic en De otras fuentes y luego en
Desde Microsoft Query. Aparecerá el cuadro de diálogo Elegir origen de datos.
2. En el cuadro de diálogo Elegir origen de datos, haga clic en la ficha Consultas.
3. Haga doble clic en la consulta guardada que desea abrir. La consulta se muestra en Microsoft Query.

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.

TRABAJAR CON LOS DATOS EN EXCEL


Cuando se crea una consulta en el Asistente para consultas o en Microsoft Query, se pueden devolver
los datos a una hoja de cálculo de Excel. Los datos se convierten entonces en un rango de datos
externos al que se puede aplicar formato y actualizar.

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

Finalmente, se mostrará la ventana de ubicación de los campos.

APLICAR FORMATO A LOS DATOS RECUPERADOS


En Excel puede utilizar herramientas como gráficos o subtotales automáticos, para presentar y resumir
los datos recuperados por Microsoft Query. Puede aplicar formato a los datos y dicho formato se
conservará cuando actualice los datos externos. Puede utilizar rótulos de columna propios en lugar de
los nombres de campo, y agregar números de fila automáticamente.

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 activar (o volver a desactivar) esta opción en cualquier momento:


1. Haga clic en el botón de Microsoft Office , luego en Opciones de Excel y, a continuación, en la
categoría Avanzadas.
2. En la sección Edición, active la casilla de verificación Extender formatos de rangos de datos y
fórmulas para desactivar esta opción. Para volver a desactivar el formato automático de rangos de
datos, active esta casilla de verificación.

ACTUALIZAR DATOS EXTERNOS


Cuando se actualizan los datos externos, se ejecuta la consulta para recuperar todos los datos nuevos
o modificados que coincidan con las especificaciones. Una consulta se puede actualizar tanto en
Microsoft Query como en Excel. Excel proporciona diversas opciones para actualizar consultas, entre
las que se incluye la actualización de datos cada vez que se abra el libro y la actualización automática
del mismo a intervalos de tiempo determinados.

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.

EJERCICIO 1: ACCESO A UNA TABLA DE ACCESS


1. Ingrese a una hoja nueva de Excel 2010.
2. Desde la ficha Datos, seleccione Desde Access.
3. Ahora ingrese a la carpeta Capítulo05, seleccione la base de datos DATACMOSHACH.

4. Seleccione la tabla empleados. Aceptar.

5. Seguidamente, seleccione la celda de posición inicial para la tabla ejemplo (A4).

112
Capítulo 5: Acceso a Datos

6. Al aceptar se mostrará la relación de empleados de la tabla de Access.

EJERCICIO 2: ACTUALIZAR LOS DATOS DE LA TABLA


Una característica valiosa es la actualización de datos.Recuerde que los datos originales están en la
base de datos y Excel sólo muestra un acceso a estos datos.
1. Borra los nombres de los Empleados.
2. Ingrese otros nombres.
3. Ahora en la ficha Datos, haga clic en Actualizar todo. Observe que los nombres retornan a su estado
original.

4. Guarde el archivo con el nombre Consulta de Empleados.

113
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 3: CONSULTA DE CAMPOS ESPECÍFICOS


Si sólo queremos acceder a unos campos determinados, aplicamos una consulta mediante el asistente
Microsoft Query.
1. Desde un libro nuevo en Excel, vaya a la ficha Datos, seleccione de otras fuentes y luego desde
Microsoft Query.
2. Ahora seleccione MS Access DataBase (para conectarnos a la base de datos de Access).

3. Seguidamente, seleccione la carpeta Cap05 y luego la base de datos DATACMOSHACH.

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

5. Seleccione los campos siguientes:

Tabla Campos
Pedidos IdPedido
FechaPedido
Empleados Nombre
Cliente NombreCompañía
Detalles de Pedido Cantidad

6. Haz clic en el botón Siguiente, hasta finalizar.

115
Excel for Masters - Macros y Aplicaciones con VBA

7. Finalmente, se mostrará la siguiente lista:

EJERCICIO 4: CREAR UNA TABLA DINÁMICA


Con la lista de pedidos del ejercicio 3, vamos a crear una tabla dinámica para luego obtener un gráfico.
1. Ubicar el cursor dentro de la lista de pedidos.
2. Ir a la ficha Insertar, seleccione tabla dinámica.

3. Elija Nueva hoja de cálculo.


4. Aceptar.

116
Capítulo 5: Acceso a Datos

5. Seleccione Nombre como Etiqueta de fila, IdPedido como Valores.

Ahora tenemos nuestra tabla dinámica.

117
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 5: CREAR UN GRÁFICO DE LA TABLA DINÁMICA


1. Ahora debemos aplicar la función Cuenta en la tabla dinámica.
2. Haga clic derecho en cualquier valor y elija Configuración de campo valor.
3. Seleccione Cuenta.

Finalmente en la ficha Opciones, seleccione gráfico dinámico.

Guarde el libro con el nombre Consulta de Pedidos.

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.

Ejemplo de una tabla en Excel:

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.

INSERTAR UNA TABLA

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.

Método abreviado de teclado. También puede


presionar CTRL+L o CTRL+T.

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.

Antes de Iniciar un filtro avanzado es necesario definir 3 rangos:


Lista : Rango que incluye toda la información, así como los rótulos de campo.
Criterio : Rango que determina las condiciones de búsqueda y filtrado.
Salida : Rango que define los campos de salida.

120
Capítulo 6: Base de datos

CRITERIOS EN UNA COLUMNA


Lógica booleana: (Vendedor = "Davolio" O Vendedor = "Buchanan")

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

CRITERIOS EN VARIAS COLUMNAS


Lógica booleana: (Tipo = "Alimentos" Y Ventas > 1000)

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 $

CRITERIOS EN VARIAS COLUMNAS EN LAS QUE DEBE CUMPLIRSE ALGUNO DE LOS


CRITERIOS
Lógica booleana: (Tipo = "Alimentos" O Vendedor = "Davolio")

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

CRITERIOS PARA BUSCAR VALORES DE TEXTO QUE INCLUYEN ALGUNOS CARACTERES


PERO NO OTROS
Los siguientes caracteres comodines se pueden utilizar como criterios de comparación.

Utilice Para buscar


? (signo de interrogación) Un único carácter.
Por ejemplo, Gr?cia buscará ‘Gracia’ y ‘Grecia’.
* (asterisco) Cualquier número de caracteres.
Por ejemplo, *este buscará ‘Nordeste’ y ‘Sudeste’.
~ (tilde) seguida de ?, *, o ~ Un signo de interrogación, un asterisco o una tilde.
Por ejemplo, af91~? buscará ‘af91?’.

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*

CRITERIOS CREADOS COMO RESULTADO DE UNA FÓRMULA


Puede utilizar como criterio valores calculados que sean el resultado de una fórmula. Tenga en cuenta
los puntos importantes siguientes:

FILTRAR BUSCANDO VALORES SUPERIORES A LA MEDIA DE TODOS LOS VALORES


INCLUIDOS EN EL RANGO DE DATOS
El rango de criterios (D1:D2) muestra las filas que tienen en la columna Ventas un valor superior
al promedio de todos los valores incluidos en la columna Ventas (C7:C10). En la fórmula, ‘C7’ hace
referencia a la columna filtrada (C) de la primera fila del rango de datos (7).

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

FUNCIONES DE BASE DE DATOS


Las funciones de base de datos permiten obtener resultados estadísticos de una lista de datos. Las
funciones requieren de un rango de criterio para establecer la condición.

EJEMPLO DE LA FUNCIÓN BDCONTAR

EJEMPLO DE LA FUNCIÓN BDSUMA

124
Capítulo 6: Base de datos

LISTA DE FUNCIONES DE 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.

EJERCICIO 1: CONVERTIR UNA LISTA DE RANGO EN UNA TABLA


1. Abra el libro Tabla 2011.xlsx de la carpeta Capítulo_6.
2. Ubicar el cursor dentro de la lista.
3. Ir a la ficha Insertar, luego al botón Tabla.

4. Aceptar.
5. La tabla presenta un estilo de formato de tabla que se puede modificar con la ficha Diseño.

La tabla presenta filtros automáticos en cada campo.

126
Capítulo 6: Base de datos

EJERCICIO 2: ACTIVAR SUBTOTALES


Continuamos con el libro Tabla 2011.

En la ficha Diseño, active la casilla Fila de totales.

Se agrega al final de la tabla la fila de totales.

Ahora podemos elegir la función estadística a subtotalizar.

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

EJERCICIO 3: USO DE REFERENCIAS ESPECIALES DE CELDA


Añada en la celda F2 el campo COMISIÓN.

Ingresa la referencia de fórmula: =[. Apenas se ingresa el corchete aparecen los campos.

Selecciona la venta con doble clic y, finalmente, multiplicar por 10%.

¿Qué observas al presionar Enter para ingresar la fórmula?

Guardar el libro y Cerrar.

128
Capítulo 6: Base de datos

EJERCICIO 4: FILTROS AVANZADOS


En este ejercicio vamos aplicar un filtro avanzado para obtener la lista de clientes con monto de venta
mayor a 2500.

1. Abra el libro FILTRO AVANZADO.


2. Crear 3 nombres de rango:

Nombre Rango
Lista $A$5:$D$505
Criterio $F$1:$F$2
Salida $F$5:$H$5

3. Ahora en la Ficha datos, seleccione Avanzadas.


4. Active la opción Copiar a otro lugar.
5. Ingrese los nombres de rango.

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.

EJERCICIO 5: BASE DE DATOS


Las funciones de base de datos no servirán para obtener un valor estadístico.
Abra el libro FUNCIONES DE BASE DE DATOS.

Cree 2 nombres de rangos: Lista y Criterio.

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:

Guarda y Cierra el libro.

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.

Las tablas dinámicas permiten


analizar un gran volumen de
información.

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.

Con una tabla dinámica usted podrá:


• Resumir información, obteniendo totales con las funciones agregadas de Excel (suma, promedio,
etc.)
• Crear cálculos y fórmulas personalizados.
• Agrupar los datos por distintos criterios como año, mes o mediante un criterio personalizado.
• Expandir y contraer los niveles de datos para destacar los resultados y ver los detalles de los datos
de resumen de las áreas de interés.

• 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.

• Crear gráficos dinámicos filtrando los datos por categorías.

132
Capítulo 7: Tablas y Gráficos Dinámicos

ELEMENTOS DE UNA TABLA DINÁMICA


Para que la tabla dinámica pueda resumir correctamente la información, es necesario distribuir
correctamente los campos de su lista a los elementos de su tabla dinámica. Estos elementos agrupan,
filtran y totalizan los datos de su lista.

1 3

1. Etiqueta de Fila. Agrupan fechas, categorías y subcategorías de forma automática.


2. Etiqueta de columna. Agrega categorías de manera horizontal permitiendo obtener totales a 2
entradas (con la fila correspondiente a dicha categoría).
3. Valores. Permite establecer el campo a resumir a través de las funciones agregadas de Excel para
campos numéricos (suma, promedio, varianza, etc.) o de texto (contar).
4. Filtro de informe. Permite establecer un criterio para mostrar los datos de acuerdo a una condición.
5. Segmentación de datos. Mediante botones permite filtrar los datos de las tablas dinámicas.
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.

133
Excel for Masters - Macros y Aplicaciones con VBA

INSERTAR UNA TABLA DINÁMICA


Una tabla dinámica puede ser basada en:
Una lista de Excel: distribuida en filas y con nombres de columna.
Datos Externos recuperados a través de una consulta de base de datos o por un archivo ODC (Office
Data Connection).

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

DISTRIBUIR LOS CAMPOS EN LA TABLA DINÁMICA


Recuerde, es importante llevar los campos de su lista a los elementos de su tabla dinámica (rótulo
de filas, columnas, etc.) para generar correctamente el resumen de datos. Cuando usted activa un
campo de la lista de campos, Excel automáticamente lo agrega al rótulo de las filas o a los valores,
dependiendo del tipo de dato de dicho campo.

Otra forma para distribuir los datos es a través de:


• Arrastre el campo de su lista de campos sobre alguna sección de su tabla dinámica.

Arrastre el campo sobre una


sección de su tabla dinámica.

Para eliminar un campo de una sección, puede:


• Hacer clic sobre la flecha del campo a eliminar y elegir Quitar campo.

Otra forma de quitar un campo de una sección:


• Arrastre el campo fuera de la sección.

135
Excel for Masters - Macros y Aplicaciones con VBA

Distribuir campos al rótulo de filas


El rótulo de filas permite mostrar los elementos de una manera vertical, agrupando los valores
repetidos en categorías.

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.

Puede agregar más de un campo a la etiqueta de filas, generando niveles de agrupamientos.

136
Capítulo 7: Tablas y Gráficos Dinámicos

Distribuir campos a Valores


Este elemento permite resumir o totalizar un campo específico, correspondiente al rótulo de filas
agregadas, es decir, obtiene totales por la categoría agrupada en las filas.

Excel asume como función de resumen la SUMA y en el caso de ser campos de tipo texto, el CONTAR.

Puede cambiar la función a emplear:


1. Haga clic en la flecha del campo de la sección Valores.
2. Elija la opción Configuración de campo.

3. Seleccione la función a emplear.

137
Excel for Masters - Macros y Aplicaciones con VBA

Distribuir campos al rótulo de columnas


Cuando agrega campos a este elemento, estos se distribuyen horizontalmente en la tabla, mostrando
las categorías agrupadas en columnas.

Si ya tiene campos en filas, al agregar columnas se tienen 2 criterios para resumir y totalizar sus datos:

Distribuir campos al filtro del informe


Los filtros en una tabla dinámica permiten mostrar información específica, haciendo el análisis más
específico, mostrando, por ejemplo, totales de un determinado mes o de un determinado país.

Este elemento se muestra fuera de la tabla dinámica.

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

Insertar un campo en la segmentación de datos


Para agregar un campo en la segmentación de datos:
1. Lleve el indicador de celdas dentro de la tabla dinámica.
2. Haga clic en la ficha Opciones de Herramientas de tabla dinámica.

3. Despliegue las opciones del comando Insertar Segmentación de datos y elija Insertar segmentación
de datos.

4. Seleccione el campo a emplear en la segmentación y haga clic en Aceptar.

5. El campo seleccionado se usa en una lista de botones para aplicar el filtro.

140
Capítulo 7: Tablas y Gráficos Dinámicos

Opciones de la segmentación de datos


Puede cambiar algunas de las opciones de su segmentación de datos, como el título, el formato o la
distribución de los botones.

Para cambiar las opciones:


1. Haga clic en el cuadro de segmentación insertado.
2. Haga clic en la ficha Opciones de Herramientas de segmentación de datos.

3. Se muestran los comandos disponibles:

Para cambiar el título del cuadro:


1. Haga clic en el comando Título de la segmentación de datos.
2. Escriba el texto a mostrar.

3. El texto se muestra en el cuadro.

141
Excel for Masters - Macros y Aplicaciones con VBA

Para mostrar los botones en 2 o más columnas:


1. Haga clic en el comando Columnas.
2. Escriba el número de columnas a mostrar.

3. El cuadro se distribuye:

Si desea cambiar la apariencia del cuadro:


1. Haga clic en el botón Más del comando Estilos.

2. Seleccione el estilo a aplicar. Observe el resultado.

Manipular su tabla dinámica


En este capítulo hemos visto la forma de crear una tabla dinámica, distribuyendo los campos entre
filas, columnas y valores. En este tema, veremos algunas de las operaciones que puede realizar sobre
la tabla dinámica.

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.

Para agrupar las fechas:


1. Lleve el indicador sobre alguna fecha.
2. Use el botón derecho del mouse y elija la opción Agrupar.

3. Elija el tipo de agrupamiento y haga clic en Aceptar.

143
Excel for Masters - Macros y Aplicaciones con VBA

4. Se muestran las fechas agrupadas.

5. Puede agrupar por más de un nivel.

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.

3. Se genera un grupo con los datos seleccionados.

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

Para realizar estas acciones:


1. Haga clic en los botones según quiera expandir o contraer.

Si desea expandir/contraer todos los elementos:


1. Use el botón derecho sobre y elija Expandir o contraer.
2. Puede elegir las opciones de Contraer todo el campo o Contraer hasta ‘Años’ para contraer todos
los elementos.

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 Compacto Diseño Esquema

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

Para obtener columnas en porcentajes:


1. Sobre algún valor de resumen, use el botón derecho del mouse.
2. Elija la opción Mostrar valores como.
3. En el caso de tener valores sin grupos, elija % del total general.

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:

Al cambiar el texto en la tabla dinámica, estos nombres también cambian:

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.

Para crear un campo calculado:


1. Vaya a la ficha Opciones de Herramientas de tabla dinámica.
2. Ubique el grupo Cálculos y elija el comando Campo, elementos y conjuntos. Elija Campo calculado.

3. En esta ventana, debe escribir un nombre para el campo e insertar la fórmula.

4. El nuevo campo se muestra en la tabla dinámica.

149
Excel for Masters - Macros y Aplicaciones con VBA

ESTILOS DE TABLA Y FORMATOS DE NÚMEROS


Una vez creada la tabla dinámica, es importante realizar los procedimientos necesarios para mejorar la
presentación, tanto de los datos como de la propia tabla dinámica.

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.

3. En esta ventana, elija el botón Formato de número.


4. Seleccione el formato de número a aplicar. En la imagen de abajo, se ha aplicado el formato de
moneda con 0 decimales.

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.

5. Para quitar el formato aplicado, seleccione el estilo Ninguno.

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.

Crear un gráfico dinámico desde 0


En este caso no se tiene una tabla dinámica previa para trabajar, es decir se creará directamente desde
una lista de Excel.
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 Gráfico dinámico.

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.

El gráfico de arriba tiene la siguiente distribución de campos:

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).

Crear un gráfico dinámico desde una tabla dinámica


1. Lleve el indicador de celdas dentro de la tabla dinámica.
2. Haga clic en la ficha Insertar.
3. En el grupo Gráficos, seleccione el tipo de gráfico y personalice sus opciones.

154
Capítulo 7: Tablas y Gráficos Dinámicos

LABORATORIO DE PRÁCTICA

1. Abra el libro Listado_Trámites.xlsx de la carpeta Capítulo_7.


2. Este libro posee información de los trámites realizados en distintos países y el costo de cada uno de
ellos.

EJERCICIO 1: CREAR TABLAS DINÁMICAS SIMPLES


En este ejercicio, se creará una tabla dinámica que muestre el Total de ingresos por Trámite.
1. Vaya a la hoja General y realice lo siguiente:
a. Vaya a la ficha Insertar y elija Tabla dinámica.
b. Acepte los valores de la ventana.
c. Distribuya los campos de la tabla de acuerdo a:

d. El resultado debe ser:

2. Modifique los títulos para que se muestre:

3. Cambie el nombre de la hoja a Tabla1.

155
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 2: CREAR TABLAS DINÁMICAS SIMPLES


1. Ahora, se pide crear una tabla dinámica que muestre el Total de ingresos por Continente.

2. Anote la distribución necesaria:

3. Cambie el nombre de la hoja a Tabla2.

EJERCICIO 3: CREAR TABLAS DINÁMICAS SIMPLES


1. Ahora, se pide crear una tabla dinámica que muestre el Total de ingresos de Trámites por Continente.
El resultado debe ser:

2. Anote la distribución necesaria:

3. Cambie el nombre de la hoja a Tabla3 y guarde los cambios efectuados en el libro.

156
Capítulo 7: Tablas y Gráficos Dinámicos

EJERCICIO 4: APLICAR FORMATOS DE NÚMEROS


1. Para mejorar la presentación de los datos que tenemos en nuestras tablas, es necesario realizar el
siguiente procedimiento:
a. Vaya a la hoja Tabla1 y lleve el cursor de alguna celda del área de valores.
b. Luego, en la ficha Opciones de Herramientas de tablas dinámicas, ubique el comando
Configuración de campo.
c. Haga clic en el botón Formato de número y elija el formato de Número con separador de
millares y 0 decimales.

d. El resultado será:

2. Aplique el mismo formato a las tablas dinámicas de las hojas Tabla2 y Tabla3.

EJERCICIO 5: AGRUPAR FECHAS


En este ejercicio se creará una tabla empleando fechas y agrupándolas por mes.
1. Vaya a la hoja General.
a. Vaya a la ficha Insertar, Tabla dinámica y genere un tabla dinámica con la siguiente distribución:

b. Observe que al emplear fechas, estas se muestran día por día.

c. Cambie el nombre de la hoja a Tabla4.

157
Excel for Masters - Macros y Aplicaciones con VBA

2. Para agrupar los datos de tipo fecha, realice lo siguiente:


a. Sobre alguna de las fechas, use el botón derecho del mouse y elija la opción Agrupar.

b. En la ventana, elija Meses y haga clic en Aceptar.


c. Observe el resultado:

3. Puede agrupar por más de un criterio:


a. Agrupe la tabla también por el año. Luego, cambie los textos y aplique un formato para mostrar
el resultado:

4. Vuelva a agrupar su tabla por Trimestres.

158
Capítulo 7: Tablas y Gráficos Dinámicos

5. Anote la distribución de su tabla:

6. Guarde los cambios efectuados en el libro.

EJERCICIO 6: EXPANDIR Y CONTRAER


Cuando se tienen 2 o más niveles de agrupación, puede emplear esta herramienta para navegar por
su tabla:
1. Vaya a la hoja Tabla3.
a. Ubique los botones Expandir/Contraer
b. Emplee estos campos para lograr que la tabla se muestre como:

2. Vaya a la hoja Tabla4 y realice el procedimiento para ver la tabla como:

159
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 7: MODIFICAR LA DISTRIBUCIÓN DE LAS TABLAS


Puede modificar el diseño de una tabla ya creada. En estos ejercicios se cambiará la distribución de los
campos y se eliminará algún campo de la sección de tablas dinámicas.
1. Vaya a la hoja Tabla3.
a. Arrastre el campo Continente a la sección Etiqueta de columnas.

b. El resultado debe ser:

c. En el filtro del campo Continente, apague África y Oceanía. El resultado es:

160
Capítulo 7: Tablas y Gráficos Dinámicos

2. Vaya a la hoja Tabla4 y distribuya los campos de acuerdo a:

3. Modifique el filtro para mostrar sólo América. El resultado debe ser:

4. Cambie la distribución para que ahora sea Años el campo empleado como filtro.
5. Guarde los cambios efectuados.

EJERCICIO 8: AÑADIENDO SEGMENTACIÓN DE DATOS


La segmentación de datos permite aplicar filtros de una manera más efectiva.
1. Vaya a la hoja Tabla4 y realice lo siguiente:
a. Haga clic dentro de su tabla dinámica y vaya a la ficha Opciones.
b. Despliegue las opciones del comando Insertar Segmentación de datos y elija Insertar
segmentación de datos.

161
Excel for Masters - Macros y Aplicaciones con VBA

c. Elija el campo Continente y haga clic en Aceptar.


d. El resultado debe ser:

e. Haga clic en América y responda cuál es el Total general.


Rpta: .............................................................................................................................................
f. Haga clic en Europa y responda cuál es el Total general.
Rpta: .............................................................................................................................................

2. Inserte como campo de segmentación a Años en la tabla dinámica de la hoja Tabla1.


a. Haga clic en cada año y anote el Total general.
2008: .............................................................................................................................................
2009: .............................................................................................................................................
2010: .............................................................................................................................................

3. Para cambiar el diseño del cuadro de segmentación:


a. En la hoja Tabla1, haga clic en el cuadro de la segmentación insertada.
b. Luego, vaya a la ficha Opciones de Herramientas de segmentación de datos y cambie el cuadro
columnas a 3.
c. Luego, escriba como título del cuadro: Seleccione año. También aplique un estilo a su cuadro
para obtener:

162
Capítulo 7: Tablas y Gráficos Dinámicos

4. Cambie el diseño del segmento de datos de la hoja Tabla4.

5. Añada otro campo de segmentación a la tabla de la hoja Tabla4. Luego modifique su apariencia
para obtener:

6. Guarde los cambios efectuados.

EJERCICIO 9: AÑADIENDO COLUMNA DE PORCENTAJES


Ahora, para mejorar el análisis de las tablas, se añadirán columnas que indiquen el porcentaje que
equivales los totales hallados.
1. Vaya a la hoja Tabla1 y realice lo siguiente:
a. Añada en el área de valores al campo Costo.
b. Luego, sobre algún valor del campo agregado, elija el botón derecho y en Mostrar valores
como, seleccione % del total general.

163
Excel for Masters - Macros y Aplicaciones con VBA

c. Cambie los textos correspondientes para obtener:

2. Manipule su tabla y responda:


% por Duplicado de DNI del año 2008: .............................................................................................
% por Legalizaciones en el 2010: ......................................................................................................
% de Expedición de pasaportes: .......................................................................................................

3. Guarde los cambios efectuados.

EJERCICIO 9: INSERTAR GRÁFICOS


Los gráficos ayudan a entender mejor los valores que quiere mostrar. En este ejercicio se crearán
gráficos a partir de las tablas dinámicas ya generadas.
1. Vaya a la hoja Tabla2 y realice lo siguiente:
a. Haga clic dentro de la tabla dinámica.
b. En la ficha Insertar, despliegue el comando Circular y seleccione el tipo de GráficoCircular 3D.

164
Capítulo 7: Tablas y Gráficos Dinámicos

c. Cambie el formato del gráfico y elimine algunos elementos para obtener:

2. En la hoja Tabla4, genere un gráfico de líneas y cambie su diseño para obtener:

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

c. Al realizar estos cambios, su gráfico se debe mostrar así:

4. De igual manera, realice los siguientes cambios:

Resultado Análisis
Año 2010 en
Europa por
Expedición de
pasaportes

Año 2008 en Asía

Año 2009 en
América por Visa
de estudiante

5. Guarde los cambios efectuados.

166
Capítulo 7: Tablas y Gráficos Dinámicos

EJERCICIO 10: INSERTAR GRÁFICOS


En este ejercicio, creará un gráfico dinámico desde los datos de la hoja General.
1. Vaya a la hoja General y realice lo siguiente:
a. Lleve el indicador de celdas dentro de la lista y vaya a la ficha Insertar.
b. Despliegue el comando Tabla dinámica y elija la opción Gráfico dinámico.
c. Acepte los valores de la ventana.
d. Luego, cambie la distribución de acuerdo a:

e. Modifique el gráfico hasta obtener:

2. Genere un gráfico dinámico y modifique sus opciones para mostrar.

3. Guarde los cambios efectuados.

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.

A continuación, se mencionan 2 formas de crear macros:

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.

Escribir procedimientos en VBA


Se emplea el Editor de Visual Basic para Aplicaciones (VBA) y escribe código entre las palabras
reservadas SUB y END SUB. Este método está reservado para personas con conocimientos de algún
lenguaje de programación.

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

Aquí, un resumen de los nuevos tipos de archivos y sus extensiones:

Tipo de archivo Extensión


Libro .xlsx
Libro de Excel habilitado para macros .xlsm
Plantilla .xltx
Plantilla de Excel habilitada para macros .xltm

Los iconos que representan estos tipos de archivos son:

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.

4. Haga clic en Aceptar para ver los cambios efectuados.

La ficha Programador muestra los siguientes elementos:

170
Capítulo 8: Macros

ÁMBITO DE LAS MACROS


Al grabar una macro debe elegir el ámbito en el que va a trabajar, es decir en qué libros podrá emplear
la macro. Al elegir un ámbito puede limitar la acción y disponibilidad de la macro y, por ende, la
funcionalidad que espera alcanzar.

Al grabar la macro tiene 2 ámbitos a seleccionar:


• Si desea que las macros se ejecuten en cualquier libro, debe trabajar con el ámbito Libro de Macro
personal. Este libro se creará la primera vez que graba una macro y luego se abrirá automáticamente
cada vez que abra Excel. El libro de macro personal proporciona a los usuarios código seguro sobre
los procedimientos y tareas que afectarán a cualquier libro que emplee. Use este ámbito para
tareas generales como configurar la página a imprimir, incluir encabezados y pies personalizados
de su organización, etc.
• El ámbito Este libro. Aquí las tareas son específicas para un libro o plantilla en particular. Por
ejemplo, si tiene una macro que borre los datos de una factura, esta macro sólo debe funcionar en
dicho libro ya que no tendrá un efecto práctico en un libro que contiene un listado de clientes.

GRABAR UNA MACRO


Antes de grabar o escribir una macro hay que tener en cuenta los siguientes puntos:
• Planifique los pasos y los comandos que desea que ejecute la macro.
• Si se comete algún error mientras se graba la macro, también se grabarán las correcciones que se
realicen.
• Cada vez que se grabe una macro, ésta se almacenará en un nuevo procedimiento adjunto a un
libro.

Para grabar una macro:


1. Clic en la ficha Programador.
2. Ubique el grupo Código y haga clic en el comando Grabar macro.
3. Escriba el nombre de la macro. Si desea puede incluir un método abreviado de teclado, así la
macro se ejecutará al presionar esa combinación de teclas. Además, debe seleccionar el ámbito y
es adecuado agregar una descripción sobre la tarea a realizar.

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

Una vez realizada la tarea, debe terminar la grabación de la macro:


1. Ubique el botón Detener de la barra de estado de Excel.

2. Haga clic en el comando Detener grabación.

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.

Empleando el cuadro de diálogo Macros


Desde este cuadro puede ejecutar, editar y eliminar macros.
1. Clic en la ficha Programador.
2. En el grupo Código, haga clic en el comando Macros.
3. Puede pulsar la combinación de teclas ALT + F8.

4. El cualquiera de los casos, Excel muestra la ventana Macro:

5. Seleccione el nombre de la macro y haga clic en Ejecutar.

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

Empleando el método abreviado


Si al grabar la macro le asignó una combinación de teclas:
1. Presione la combinación de teclas.

GUARDAR UN LIBRO CON MACROS


Desde la versión 2007 las macros no se pueden guardar en libros comunes de Excel (xlsx). Por esto,
Excel tiene un nuevo formato de libro que almacena los módulos creados al grabar una macro. Estos
son los llamados Libros habilitados para macros (xlsm).

Así, Excel también puede guardar los módulos en Plantillas de Excel habilitadas para macros, con
extensión .xltm.

Para guardar el libro:


1. Haga clic en la ficha Archivo.
2. Clic en Guardar y enviar.
3. Clic en Cambiar el tipo de archivo.
4. Elija el comando Libro habilitado para macros.

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.

La próxima vez que abra el libro, se muestra el mensaje:

1. Haga clic en Habilitar contenido, de este modo podrá ejecutar las macros del libro.

173
Excel for Masters - Macros y Aplicaciones con VBA

REFERENCIAS DE CELDAS EN UNA MACRO

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

CAMBIAR LAS REFERENCIAS AL GRABAR LA MACRO


Para cambiar entre referencias relativas y absolutas:
1. Cuando esté grabando su macro, active el comando Usar referencias relativas.

2. Active este botón cuando necesite la referencia relativa y cámbielo para la referencia absoluta.

VER LA MACRO EN SU EDITOR


Las macros grabadas son códigos VBA que Excel genera automáticamente. Puede ver el código
generado:
1. Presione ALT + F8.
2. Seleccione el nombre de la macro y haga clic en Modificar.
Observe el código generado:

Para retornar a Excel, presione:

3. Presione ALT + F11.

175
Excel for Masters - Macros y Aplicaciones con VBA

ASOCIAR LAS MACROS A OBJETOS


Las macros se ejecutan desde la ventana Macros o a través de la combinación de teclas asignadas.
Ambos métodos obligan a realizar 2 ó 3 pasos para ejecutar la macro creada o bien a recordar las
combinaciones de teclas de todas la macros.

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.

Entre las posibilidades que podemos emplear tenemos:


• Asignar macros a objetos como autoformas o imágenes.
• Asignar macros a controles de formularios.
• Asignar macros a botones de la barra de acceso rápido.
• Asignar macros a comandos de la cinta de opciones.

ASOCIAR MACROS A AUTOFORMAS O IMÁGENES


Para asociar una macro a formas o a imágenes:
1. Use el botón derecho del mouse sobre el objeto o la imagen.
2. Elija la opción Asignar macro…

3. Seleccione el nombre de la macro y elija Aceptar.

De esta manera, podrá tener botones como flechas…

176
Capítulo 8: Macros

O imágenes que llamen o ejecuten una macro.

ASOCIAR MACROS A CONTROLES DE FORMULARIO


Generalmente, se emplea el control Botón para asignar macros, aunque puede asignar la macro a
botones de opción o casillas de verificación.
1. Use el botón derecho del mouse sobre el control.
2. Elija la opción Asignar macro…

3. Seleccione el nombre de la macro y elija Aceptar.

Por ejemplo, puede tener un control como la imagen:

ASOCIAR MACROS A COMANDOS DE LA BARRA DE ACCESO RÁPIDO


La barra de Acceso rápido posee comandos disponibles a sólo un clic.

177
Excel for Masters - Macros y Aplicaciones con VBA

1. Clic en la ficha Archivo y elija Opciones.


2. Elija Barra de herramientas de acceso rápido.
3. Cambie el cuadro Comandos disponibles y elija Macros.

4. Seleccione la macro y haga clic en Agregar.

El comando se agrega a la barra. Para cambiar la apariencia de dicho comando:


1. Seleccione el comando creado.
2. Luego, haga clic en Cambiar nombre.
3. Escriba el nuevo nombre y elija un icono que lo representa.

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

CREAR FICHAS, GRUPOS Y COMANDOS PARA MACROS


Otra forma muy útil de trabajar con macros es crear fichas en la cinta de opciones de Office. Puede
crear fichas personalizadas y crear grupos dentro de ellas, y luego asociar las macros a comandos
dentro de este grupo.

Es necesario reconocer los elementos de la cinta de opciones de Excel 2010.

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.

Ahora, debe cambiar el nombre de este elemento:


2. Seleccione la ficha insertada y haga clic en Cambiar nombre.
3. Escriba el nombre para la 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.

Para cambiar el nombre:


1. Seleccione el grupo creado y luego haga clic en Cambiar nombre.
2. Escriba el nuevo nombre.

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.

Para agregar macros como comandos:


1. Ingrese a Personalizar cinta de Opciones. Luego, cambie el cuadro Comandos disponibles a
Macros.
2. Se muestran las macros generadas.

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

Para cambiar el nombre:


1. Seleccione el comando creado y haga clic en Cambiar nombre.
2. Escriba el nuevo nombre y elija un icono que lo representa.

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

EJERCICIO 1: CREAR UNA MACRO SENCILLA DE ÁMBITO GENERAL


1. Se necesita crear una macro que configure la hoja a imprimir con los siguientes datos:
Posición: horizontal
Márgenes: todos de 1 cm

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.

3. Ahora, grabaremos la macro:


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á 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

e. Para finalizar la macro, ubique el botón Detener de la barra de estado de Excel.

4. Para ejecutar la macro:


a. Abra el libro Reportes.xlsx de la carpeta Capítulo_8.
b. Vaya a la hoja Producción.
c. Presione ALT + F8. Seleccione la macro PrepararHoja y haga clic en Ejecutar.
d. Para ver el resultado, vaya a la ficha Archivo y elija Imprimir.
¿Se aplicaron los cambios? ...........................................................................................................

5. Para ejecutar la macro con el método abreviado:


a. Vaya a la hoja Consumos.
b. Presione las teclas CTRL + SHIFT + P.
c. Para ver el resultado, vaya a la ficha Archivo y elija Imprimir.
¿Se aplicaron los cambios? ...........................................................................................................

6. Guarde los cambios aplicados.

EJERCICIO 2: CREAR UNA MACRO SENCILLA DE ÁMBITO GENERAL


1. Ahora para la impresión de cuadros y tablas de resumen, se necesita crear una macro que realice
la siguiente tarea:
a. Cambie el porcentaje de impresión al 150%.
b. Centrado vertical y horizontal.

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.

4. Para probar la macro creada:


a. Vaya a la hoja Horas y ejecute la macro.
b. Para ver el resultado, vaya a la ficha Archivo y elija Imprimir.
¿Se aplicaron los cambios? ...........................................................................................................

183
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 3: CREAR UNA MACRO PARA ABRIR UNA PLANTILLA


1. Se tiene un libro llamado Simulador.xlsm, el cual tiene un modelo para calcular préstamos. Se
necesita, primero, crear una plantilla en base a este libro:
a. Abra el libro Simulador.xlsm de la carpeta Capítulo_8.
b. Use la ficha Archivo, Guardar como.
c. Cambie el tipo de archivo a Plantilla habilitada para macros.
d. Guarde la plantilla y cierre el archivo creado.

2. Para crear un libro basado en la plantilla recuerde los pasos:


a. Use la ficha Archivo, Nuevo.
b. Elija el vínculo Mis Plantillas y seleccione la plantilla Simulador.
c. Haga clic en Aceptar.

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.

4. Para probar la macro creada:


a. Presione ALT + F8 y ejecute la macro Abrir Simulador.
¿Se ejecutó la macro? ...................................................................................................................
b. Grabe el libro como Prestamos1.
c. Luego, ejecute nuevamente la macro:
¿Qué sucedió? ..............................................................................................................................
d. Grabe el libro como Prestamos2.

EJERCICIO 4: CREAR UNA MACRO PARA ABRIR UNA PLANTILLA


1. Se tiene un libro llamado FacturaServicios.xlsx, el cual tiene un modelo de factura. Se necesita
crear una plantilla en base a este libro:
a. Abra el libro Factura Servicio.xlsx de la carpeta Capítulo_8.
b. Use la ficha Archivo, Guardar como.
c. Cambie el tipo de archivo a Plantilla de Excel.
d. Guarde la plantilla y cierre el archivo creado.

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

3. Para probar la macro creada:


a. Presione ALT + F8 y ejecute la macro Crear Factura.
¿Se ejecutó la macro? ...................................................................................................................
b. Grabe el libro como Factura1.
c. Luego, ejecute nuevamente la macro:
¿Qué sucedió? ..............................................................................................................................
d. Grabe el libro como Factura2.

EJERCICIO 5: ASIGNAR MACROS A COMANDOS


Las 4 macros creadas son de ámbito general, esto significa que pueden utilizarse en cualquier libro de
Excel. En vista de eso, vamos a asignar dichas macros a comandos.

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.

2. Para crear el grupo:


a. Seleccione la ficha para agregar el grupo y haga clic en el botón Nuevo grupo.
b. Seleccione el grupo creado y luego haga clic en Cambiar nombre. El nombre será Soluciones.
c. Crear otro grupo llamado Preparar. El resultado debe ser:

3. Para agregar los comandos:


a. Cambie el cuadro Comandos disponibles a Macros.

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:

e. Haga clic en Aceptar. El resultado debe ser:

4. Agregue las demás macros a los grupos Soluciones y Preparar. El resultado debe ser:

5. Pruebe las macros:


a. En el libro Reportes, vaya a la hoja Pasajeros. Luego vaya a la ficha Desarrollo y haga clic en el
comando Imprimir Resumen.
b. Para ver el resultado, vaya a la ficha Archivo y elija Imprimir.
¿Se aplicaron los cambios? ...........................................................................................................
c. Realice lo mismo sobre la hoja Exporta.

6. Pruebe las macros:


a. Vaya a la ficha Desarrollo y haga clic en el comando Simulador de Préstamos.
¿Se ejecutó la macro? ...................................................................................................................
b. Guarde el libro como Préstamos3.
c. Genere un libro en base a Generar Factura. Guarde el libro como Factura MRE.
d. Cierre todos los libros creados.

186
Capítulo 8: Macros

EJERCICIO 6: CREAR UNA MACRO SENCILLA DE ÁMBITO LOCAL


1. La macros de ámbito local permiten automatizar tareas específicas para un libro. En este caso, se
pide crear una macro que elimine las celdas de ingreso de datos de un libro.
a. Abra el libro Aplicaciones.xlsx.
b. Vaya a la hoja Entrega y observe que las celdas C7, D7, C8 y D8 son ingresadas por teclado, así
que vamos a crear una macro que realice dicha tarea.
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. Borrar las celdas de ingreso de datos.
b. Llevar el indicador a la celda C7.
3. Ahora, grabaremos la macro:
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á 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

4. Para ejecutar la macro:


a. Escriba los siguientes datos en la hoja Entrega.

b. Luego, presione ALT + F8 y ejecute la macro creada.


¿Qué cambios nota? .....................................................................................................................
c. Ahora, escriba estos nuevos datos:

d. Ejecute la macro.
¿Qué cambios nota? .....................................................................................................................
e. Guarde los cambios efectuados.

EJERCICIO 7: CREAR UNA MACRO SENCILLA DE ÁMBITO LOCAL


1. Ahora, se pide crear una macro que copie la hoja Orden1, que borre las celdas F3 y C5 y que deje
el indicador en F3. Los pasos a automatizar son:
a. Sobre la hoja Orden1 use el botón derecho del mouse y elija Mover o copiar.
b. Active la casilla Crear una copia y elija la opción Mover al final.
c. Borre el contenido de las celdas F3 y C5. Lleve el cursor a F3.

2. Ahora, grabaremos la macro:


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á Crear Hoja. En Guardar macro en, elija
Este libro.
d. Clic en Aceptar, a partir de este momento se graba toda acción que usted realice:
i. Realice el procedimiento detallado en el paso 1.
e. Al finalizar haga clic en el botón Detener.

3. Para ejecutar la macro:


a. Presione ALT + F8 y ejecute la macro creada.
¿Qué cambios nota? .....................................................................................................................
b. Repita el proceso hasta tener 4 hojas de la orden.
c. Guarde los cambios.

188
Capítulo 8: Macros

EJERCICIO 8: ASIGNAR MACROS A OBJETOS


1. Para ejecutar las macros se tiene que pulsar las teclas ALT + F8. Se pide asociar las macros a botones
y objetos, en nuestro caso será una imagen.
a. Vaya a la hoja Entrega.
b. Sobre la imagen, use el botón derecho del mouse y elija Asignar macro.

c. Seleccione la macro BorrarIngreso y haga clic en Aceptar.


2. Para probar la funcionalidad:
a. Escriba los siguientes datos:

b. Haga clic en la imagen.


¿Qué cambios nota? .....................................................................................................................

EJERCICIO 9: ASIGNAR MACROS A INICIO RÁPIDO


1. La macro CrearHoja debe estar disponible a sólo un clic.
a. Clic en la ficha Archivo y elija Opciones. Elija Barra de herramientas de acceso rápido.
b. Cambie el cuadro Comandos disponibles y elija Macros. También cambie Personalizar barra de
herramientas de acceso rápido a Para Aplicaciones.xlsx. La ventana debe ser:

189
Excel for Masters - Macros y Aplicaciones con VBA

c. Seleccione la macro Crear Hoja y haga clic en Agregar.


d. Seleccione el comando creado y haga clic en Cambiar nombre.
e. Escriba el nuevo nombre y elija un icono que lo represente.
f. Para finalizar, haga clic en Aceptar.

2. La barra de acceso rápido muestra el botón asociado a la macro y el nombre definido:

3. Para probar la funcionalidad:


a. Haga clic en el comando que acaba de agregar.
¿Qué cambios nota? .....................................................................................................................

EJERCICIO 10: GRABAR UN LIBRO HABILITADO PARA MACROS


1. Las macros de ámbito local se graban e insertan en el libro de trabajo. Para que los módulos no se
pierdan, es necesario guardar el libro con el formato compatible para macros.
a. Use Archivo, Guardar y enviar.
b. Elija Cambiar tipo de archivo y elija Libro habilitado para macros.
c. Haga clic en guardar. Cambie la ubicación al Escritorio y en el cuadro nombre escriba
Aplicaciones Concluidas.
2. Observe en el escritorio el icono de este tipo de archivo.

190
CAP.

Macros y Aplicaciones
9
LABORATORIO DE PRÁCTICA

EJERCICIO 1: MACROS Y GRÁFICOS


Cambiar ciertas características de un gráfico puede ser automatizado a través de macros. En este
ejercicio se aplicarán ciertas características a los gráficos definidos.

Abra el libro llamado Gráficos.xlsm de la carpeta Capítulo_09.

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.

2. Para probar la funcionalidad, primero vamos a cambiar el tipo de gráfico:


a. Cambie el tipo de gráfico a columnas.
b. Ahora, vamos a ejecutar la macro.
c. Presione ALT + F8.
d. Seleccione la macro creada y haga clic en Ejecutar.
¿Funciona correctamente la macro? ............................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

Creando otras macros


1. Vamos a crear una macro que permita cambiar el tipo de gráfico a columnas. La macro se debe
llamar Columnas.
2. Genere otra macro que cambie el gráfico a Columnas 3D. La macro se debe llamar Columna3D.
3. Pruebe las 3 macros creadas.

192
Capítulo 9: Macros y Aplicaciones

Asociando las macros a controles


Ahora usted debe asociar macros a controles de formulario, en este caso a botones de opción.
1. Empleando los controles de formulario, en la parte inferior del gráfico, diseñe la siguiente pantalla:

2. Luego, asocie cada botón a las macros respectivas.


Detalle el proceso ..............................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

3. Para probar la funcionalidad completa:


a. Haga clic sobre el control Columnas.
¿Cambia su gráfico? ......................................................................................................................
b. Ahora, haga clic sobre Líneas
¿Cambia su gráfico? ......................................................................................................................
c. Ahora, haga clic en 3D.

4. Guarde los cambios efectuados y cierre el libro.

EJERCICIO 2: MACROS Y SUBTOTALES


En este ejercicio se crearán macros que permitan aplicar diversos tipos de subtotales. Abra el libro
Expedientes.xlsx de la carpeta Capítulo_09.

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

Subtotales por Continente


1. Abra el libro Expedientes y vaya a la hoja Lista.
2. Vamos a crear una macro que permita obtener subtotales por Continente.
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á 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

v. Haga clic en Aceptar.


vi. Luego, vaya al nivel de esquema y haga clic en el nivel 2.

e. Para finalizar la macro: ubique el botón Detener de la barra de estado de Excel.

f. El resultado es:

3. Para probar la funcionalidad, primero vamos a eliminar el subtotal aplicado:


a. Haga clic dentro del cuadro obtenido.
b. Vaya a la ficha Datos, Subtotal.
c. Elija Quitar todos y haga clic en Aceptar.
d. Ahora, vaya a la columna Ítem y ordene la tabla.

4. Ahora, vamos a ejecutar la macro.


a. Presione ALT + F8.
b. Seleccione la macro creada y haga clic en Ejecutar.
¿Funciona correctamente la macro? ............................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

Subtotales por País y Trámite


1. Vamos a crear una macro que permita obtener subtotales por País. La macro se debe llamar Por
Pais.
2. Para hacer la siguiente macro, debe quitar los subtotales calculados. Genere otra macro que
obtenga totales por Trámite. La macro se debe llamar Por Tramite.
3. Finalmente, genere una macro que permita quitar los subtotales calculados y ordene la lista por el
Ítem. La macro se debe llamar Quitar SubTotal.
a. Para quitar el subtotal, el primer paso de la macro debe ser hacer clic en la celda A9para
asegurar que va a trabajar con la tabla creada.
b. Es recomendable que para ordenar emplee la ficha Datos, Ordenar y se asegure que la casilla
Mis datos tienen encabezados esté activa.

195
Excel for Masters - Macros y Aplicaciones con VBA

Asociando las macros a controles


Tal como se vio en los ejercicios del capítulo anterior, usted puede asociar macros a controles de
formulario, en este caso a botones de opción.
1. Empleando los controles de formulario, en la parte superior de la hoja, diseñe la siguiente pantalla:

2. Luego, asocie cada botón a las macros respectivas.


Detalle el proceso seguido .................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

3. Para probar la funcionalidad completa:


a. Haga clic sobre el control Continente.
¿Se aplica correctamente el subtotal? ..........................................................................................
b. Ahora, haga clic sobre Quitar todos.
¿Funciona correctamente? ...........................................................................................................
c. Ahora, haga clic en País y compruebe que se aplica correctamente. Use el botón Quitar todos y
luego aplique el subtotal por Trámite.

Editando las macros


Puede modificar las macros desde el editor de VBA para mejorar su funcionalidad o añadir código que
sea necesario.
1. Veamos cómo trabajan las macros generadas.
a. Haga clic en Continente. Luego haga clic en País y finalmente haga clic en Trámite.
¿Se aplican correctamente los subtotales? ..................................................................................
b. Ahora, haga clic en Quitar todos y luego en Continente. Seguidamente, clic en Quitar todos y
luego en País. Clic en Quitar todos y luego en Trámite.
¿Se aplican correctamente los subtotales? ...................................................................................

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:

d. Repita el paso C para las macros Por Pais y Por Tramite.


e. Cierre el editor de VBA.

3. Para probar el código agregado:


a. Haga clic en Continente. Luego haga clic en País y finalmente haga clic en Trámite.
¿Se aplican correctamente los subtotales? .................................................................................

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:

2. Prueba la utilidad del comando que acaba de escribir:


a. Ejecute las macros.
¿Se muestra el parpadeo? ...........................................................................................................

3. Guarde los cambios y cierre Excel.

197
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 3: MACROS Y FILTROS AVANZADOS


Puede automatizar la aplicación de filtros avanzados a través de macros. Abra el libro llamado Filtros.
xlsm de la carpeta Capítulo_10.

El libro tiene la siguiente apariencia:

Recuerde para aplicar filtros:


• En la ficha Datos, elija Avanzadas.
• Luego, especifique su rango de Datos, Criterios y haga clic en Aceptar.

El proceso descrito arriba es el que vamos a automatizar.

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.

iv. Clic en Aceptar.

e. Para finalizar la macro: ubique el botón Detener de la barra de estado de Excel.

5. Para probar la funcionalidad:


a. Borre el texto Europa y en País escriba Italia.
b. Para ejecutar la macro presione ALT + F8.
c. Seleccione la macro creada y haga clic en Ejecutar.
¿Funciona correctamente la macro? ............................................................................................
.......................................................................................................................................................

199
Excel for Masters - Macros y Aplicaciones con VBA

Creando otras macros


1. Antes de crear las macros, debe crear nombres de rango de acuerdo a:
a. F3:I5 Criterios2
b. F3:I6 Criterios3
2. Vamos a crear una macro que aplique dos filas de criterios. El nombre será Filtros2. En esta macro
debe emplear el rango Citerios2.
3. Grabe otra macro que aplique tres filas de criterios. La macro se debe llamar Filtros3. El rango a
emplear debe ser Criterios3.
4. Genere una macro que use el comando Borrar para quitar los filtros aplicados.

Asociando las macros a controles


Ahora usted debe asociar macros a controles de formulario, en este caso a botones de opción.
1. Empleando los controles de formulario diseñe la siguiente pantalla:

2. Luego, asocie cada botón a las macros respectivas.


3. Para probar la funcionalidad completa:
a. Escriba estos datos:

b. Haga clic en el botón Una fila de criterios. Escriba los resultados:


Nro. de Trámites ...........................................................................................................................
Monto Total ..................................................................................................................................

c. Escriba estos datos:

d. Haga clic en el botón Dos filas de criterios. Escriba los resultados:


Nro. de Trámites ...........................................................................................................................
Monto Total ..................................................................................................................................

e. Haga clic en el botón Borrar.

4. Guarde los cambios efectuados.

200
Capítulo 9: Macros y Aplicaciones

Copiando datos filtrados en otra hoja


Se necesita crear una macro que permita copiar los datos filtrados a la hoja Listas.

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.

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.
c. Escriba el nombre de la macro. En nuestro caso será Copiar Datos. En Guardar macro en, elija
Este libro.
d. A partir de este momento se graba toda acción que usted realice:
i. Haga clic en la celda A7.
ii. Vaya a la ficha Datos y haga clic en Avanzadas.
iii. Complete el cuadro.

iv. Clic en Aceptar.

3. Asocie la macro a un botón de formulario. El diseño de la pantalla debe ser:

201
Excel for Masters - Macros y Aplicaciones con VBA

4. Para probar la macro:


a. Escriba los datos:

b. Haga clic en el botón para ejecutar la macro.


c. Escriba los datos:

d. Haga clic en el botón para ejecutar la macro.

5. Guarde los cambios y cierre el libro.

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.

En cualquier caso, se muestra una ventana como la siguiente:

En caso de que la ficha Programador no se encuentre activa:


Use la ficha Archivo y elija Opciones.
En la ficha Personalizar cinta de opciones, active la ficha Programador.

203
Excel for Masters - Macros y Aplicaciones con VBA

En la imagen superior, se muestra la ficha Programador activada.

ELEMENTOS DEL EDITOR


Entre los elementos que se van a trabajar tenemos:
• Barra de Herramientas
• La Ventana de propiedades
• El Explorador de proyectos
• La ventana de códigos

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

Para activar su ventana de propiedades puede emplear cualquiera de estas 4 alternativas:


1. Presionar la tecla F4.
2. Hacer clic sobre el botón Propiedades de la barra de herramientas.
3. Use el menú Ver, ventana Propiedades.
4. Si está sobre un formulario, use el botón derecho y elija Propiedades.

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

Para ver su explorador de proyectos:


1. Presionar las teclas CTRL + R.
2. Hacer clic sobre el botón Explorador de Proyectos de la barra de herramientas.

3. Use el menú Ver, Explorador de proyectos.

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.

En el proyecto, los objetos


se organizan en formularios,
módulos y objetos de Excel.

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.).

Para ver el código de un objeto:


1. Seleccione el objeto que contenga el código.
2. Haga clic en el botón Ver código que está en la parte superior del Explorador de proyectos.

3. También puede presionar la tecla F7.

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.

Añadir un nuevo módulo


Para añadir un módulo:
1. Seleccione el proyecto donde desea incluir el módulo.
2. Elija el menú Insertar, Módulo.
3. El módulo se muestra en una carpeta del proyecto.

Introducir un código manualmente


Una vez que ya tiene un módulo, puede agregar un procedimiento:
1. Seleccione el módulo en el Explorador de proyecto.
2. Luego, use el menú Insertar y seleccione las opciones que desee en la caja de diálogo Agregar
Procedimiento; haga clic en Aceptar.

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.

En el módulo puede escribir directamente el procedimiento, escribiendo la palabra reservada


SUB<<nombre>>. El editor reconoce el procedimiento y agrega automáticamente END SUB como
marca de fin de procedimiento.

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

3. Escriba un nombre para el módulo y elija una ubicación.

Los módulos exportados tienen extensión .BAS.

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.

3. Acepte la ventana de confirmación.

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.

Cierre la ventana Propiedades


Si usted está trabajando con las cajas de diálogo o los controles Active X, no lo necesitará. Para volver
a abrir la ventana Propiedades:
• Menú Ver, ventana Propiedades.

209
Excel for Masters - Macros y Aplicaciones con VBA

Ocultar sus barras de herramientas


Oculte cualquier barra de herramientas que no esté utilizando actualmente. Para que vuelva a mostrar
las barras de herramientas Debug, edit, estándar o Userform:
• Haga un clic derecho en la barra de menú.
• Luego haga un clic al nombre de la herramienta que quiere visualizar.

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.

CREACIÓN DE FUNCIONES PERSONALIZADAS


Son funciones creadas en el editor de VBA para resolver casos específicos del negocio. El propósito
de funciones definidas por el usuario es permitir al usuario crear una función personalizada que no se
incluye en las funciones de Microsoft Excel.

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.

CREAR UNA FUNCIÓN PERSONALIZADA


Las funciones deben ser creadas en un módulo de VBA. Así que primero debe ingresar a VBA y agregar
un módulo. Ya en el módulo, debe escribir la función.

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.

3. Clic en el menú Insertar, luego clic en la opción Módulo.

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.

Function IGV(Importe As Double)

IGV = Importe * 0.19

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:

[Public] [Private] FunctionNombreFunción (Lista de parámetros)


sentencia1
sentencia2
End Function

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.

Note como devuelve un resultado la función:


IGV = Importe * 0.19

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:

3. Puede copiar la fórmula arrastrando el cuadro de control.

4. Puede editar la función empleando la tecla F2.

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:

6. Además, el nombre de la función se muestra en el cuadro Insertar función, en la categoría Definida


por el usuario.

EMPLEANDO MÁS DE UN ARGUMENTO


En el caso de que necesite más de un argumento, al definir la función en VBA sólo debe escribir los
argumentos separados por coma y a cada uno definirle un tipo específico de datos.

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.

Function Importe(sueldo As Single, horas As Integer)

If horas> 160 Then


he = horas - 160
ph = sueldo / 160
phe = ph * 1.5
Importe = phe * he
Else
Importe = 0
End If

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:

2. En la celda E6 se debe escribir:


=Importe(C6;D6)

EMPLEAR RANGOS COMO ARGUMENTOS


En los ejemplos anteriores las funciones reciben un valor o una referencia de celda para realizar
cálculos. Muchas de las funciones de Excel emplean rangos como argumentos. La función SUMA o la
función CONTAR.SI, reciben un rango y realizan ciertos cálculos con ellos.

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.

For each x in datos

‘procesar x

Next x

Function mySuma(datos As Range)


Dim celda As Range

For Each celdaIndatos


x = x + Val(celda.Value)
Next celda

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

Para emplear esta función en Excel:


1. Considere la siguiente hoja:

2. La función creada puede ser empleada en la celda C10.


=mySuma(B3:G8)

3. Observe que Excel también considera ese rango en el buscador de rangos.

USAR ARGUMENTOS OPCIONALES


Algunas de las funciones de Excel tienen argumentos opciones (es decir, que se pueden o no enviar al
llamar la función). Por ejemplo, la función CosultaV tiene esta forma de invocarse:
=CONSULTAV(B4; Datos;2)

También puede emplearse:


=CONSULTAV(B4; Datos;2; Falso)

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.

Function Genera(nombre As String, fecha As Date, Optional tipo As String)

inicial = Left(nombre, 1)
espacio = InStr(nombre, “ “)
apellido = Mid(nombre, espacio + 1, Len(nombre) - espacio)
anio = Y ear(fecha)

If tipo = “M” Then


correo = “@empresa.edu.pe”
Else
correo = “”
EndIf

Genera = LCase(inicial & apellido & anio & correo)

End Function

En el ejemplo, el argumento tipo es opcional.

En Excel se puede emplear:


1. Se tiene la siguiente tabla:

2. En la celda E4 puede emplear la función sin el último argumento:


=Genera(C4;D4)

3. En la celda F4 se puede emplear la función con todos los argumentos:


=Genera(C4;D4;”M”)

4. En ambos casos, Excel calcula las funciones:

216
Capítulo 10: Funciones Definidas por el Usuario

AGREGAR DESCRIPCIÓN A LAS FUNCIONES


Cuando usted inserta una función desde el cuadro Insertar función, se ven la sintaxis de la función y
una descripción de la misma:

Sintaxis

Descripción

Las funciones que usted ha insertado tienen sintaxis, pero no descripción…

Sintaxis

Descripción

Puede agregar una descripción a la función:


1. Abra el Examinador de Objetos (F2).
2. Cambie el proyecto a VBAProject.

Proyecto

217
Excel for Masters - Macros y Aplicaciones con VBA

3. Busque la función y modifique sus propiedades.

Proyecto

4. La descripción se muestra en el cuadro Insertar función.

Descripción

CREAR CATEGORÍAS Y ASIGNAR CATEGORÍAS A FUNCIONES


En el cuadro Insertar Función se muestra una lista de las categorías de funciones de Excel.

Las funciones UDF se muestran en la categoría Definidas por el usuario.

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()

Application.MacroOptions Macro:=”Genera”, Category:=”Personales”

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()

Application.MacroOptions Macro:=”IGV”, Category:=”Personales”

End Sub

4. Presione F5. Repita el procedimiento cambiando los nombres de la función.


5. El resultado debe ser:

219
Excel for Masters - Macros y Aplicaciones con VBA

LABORATORIO DE PRÁCTICA

EJERCICIO 1: RECONOCER EL EDITOR DE VBA


Estos ejercicios nos ayudarán a reconocer la interfaz de VBA y manejar los distintos elementos que la
conforman.
1. Ingrese al editor.
a. Abra el libro Demo_01_VBA de la carpeta Capítulo_10.
b. Presione ALT + F11.
c. Ubique la barra de título y escriba qué se muestra:
Rpta. .............................................................................................................................................

d. Presione repetidamente las teclas ALT + F11.


¿Qué sucede? ...............................................................................................................................

2. Reconocer el Explorador de Proyectos y otros elementos.


a. Ubique el Explorador de Proyectos (presione CTRL + R si no lo ve).
¿Qué objetos se muestran? ..........................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
¿Qué nombre se muestra en VBA Project? ..................................................................................

b. Haga clic en el elemento ThisWorkbook y presione la tecla F4.


¿Qué ventana se muestra? ...........................................................................................................
¿Qué valor tiene la propiedad CheckCompatibility? ...................................................................

c. Ahora, haga clic en el objeto Hoja1 del Explorador de proyectos.


¿Qué valor tiene la propiedad DisplayPageBreaks? ....................................................................

d. Haga clic en el elemento ThisWorkbook y presione la tecla F7.


¿Qué ventana se muestra? ...........................................................................................................

e. Cierre su ventana de propiedades y su ventana de código. Además, cierre su explorador de


proyectos.
f. Finalmente, active el Explorador de Proyectos y muestre las propiedades de la Hoja3.

220
Capítulo 10: Funciones Definidas por el Usuario

EJERCICIO 2: AGREGAR OBJETOS AL PROYECTO


1. Agregar módulos y formularios.
a. En VBA, haga clic en algún objeto del Proyecto Demo_01_VBA.
b. Ahora, elija el menú Insertar, Userform.
¿Qué se muestra en el Explorador de Proyectos? ........................................................................
¿Qué nombre recibe el objeto agregado? ....................................................................................

c. Ahora, elija el menú Insertar, Módulo.


¿Qué se muestra en el Explorador de Proyectos? ........................................................................
¿Qué nombre recibe el objeto agregado? ....................................................................................

d. Agregue más elementos para que su proyecto se muestre como:

2. Si desea eliminar alguno de los elementos agregados:


a. Use el botón derecho sobre el objeto llamado Clase1 y elija Quitar.
b. Responda NO a la pregunta para Exportar el objeto.
c. Elimine los elementos necesarios para que el proyecto muestre:

221
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 3: GRABAR EL LIBRO CON LOS OBJETOS


Los objetos creados en el libro se deben guardar junto con él. Recuerde, sólo los Libros habilitados
para macros permiten realizar esta tarea.
1. Para guardar el libro correctamente:
a. Vaya a Excel (presione ALT + F11).
b. Luego, haga clic en Archivo, Guardar y Enviar.
c. Elija Cambiar el tipo de archivo y selecciones Libro habilitado para macros.

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:

2. Guarde los cambios y cierre Excel.

EJERCICIO 4: CREAR FUNCIONES SENCILLAS


Para trabajar con estos ejercicios, es necesario abrir el archivo llamado Funciones_UDF de la carpeta
Capítulo_11.

Crear funciones con 1 argumento


1. Se necesita crear una función que calcule el IGV de un monto.
a. Ingrese al Editor de VBA.
b. Escriba la siguiente función:

Function IGV(ImporteAs Double)

IGV = Importe * 0.19

End Function

c. Para probar la función, vaya a la hoja IGV y en la celda C5 escriba:


=IGV(B5)

222
Capítulo 10: Funciones Definidas por el Usuario

d. Copie la fórmula a las demás celdas. El resultado será:

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:

Function NombreMes(fecha As Date)

NombreMes = UCase(MonthName(Month(fecha)))

End Function

c. Para probar la función, vaya a la hoja Fechas y en la celda B5 escriba:


=NombreMes(B3)

d. El resultado es:

3. Se necesita crear una función que convierta temperaturas Fº en Celsius. Considerando la siguiente
fórmula:

a. Escriba la siguiente función:


.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

223
Excel for Masters - Macros y Aplicaciones con VBA

b. Para probar la función, vaya a la hoja Motores y en la celda D5 escriba:


=Celsius (C5)

c. El resultado debe ser:

d. Guarde los cambios.

EJERCICIO 5: CREAR FUNCIONES CON 2 O MÁS ARGUMENTOS


1. Se necesita crear una función que calcule el área de un triángulo basado en sus lados. Considere la
siguiente fórmula:

P= (a+b+c)/2

a. Ingrese al Editor de VBA.


b. Escriba la siguiente función:

Function AreaT(ladoA, ladoB, ladoC)

p = (ladoA + ladoB + ladoC) / 2

AreaT = Sqr(p * (p - ladoA) * (p - ladoB) * (p - ladoC))

End Function

c. Para probar la función, vaya a la hoja Área y en la celda D5 escriba:


=AreaT(B4;B5;B6)

d. El resultado debe ser:

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

a. Ingrese al Editor de VBA.


b. Escriba la siguiente función:

Function Importe(sueldo As Single, horas As Integer)

If horas> 160 Then


he = horas - 160
ph = sueldo / 160
phe = ph * 1.5
Importe = phe * he
Else
Importe = 0
End If

End Function

c. Para probar la función, vaya a la hoja Horas_Extras y en la celda E6 escriba:


=Importe(C6;D6)

d. El resultado debe ser:

225
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 6: CREAR FUNCIONES CON RANGOS


1. Se necesita crear una función que simule la función SUMA.
a. Ingrese al Editor de VBA.
b. Escriba la siguiente función:

Function mySuma(datos As Range)

Dim celda As Range

For Each celdaIndatos


x = x + Val(celda.Value)
Next celda

mySuma = x

End Function

c. Para probar la función, vaya a la hoja Suma y en la celda C10 escriba:


=mySuma(B3:G8)

d. El resultado debe ser:

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

Function myCount(datos As Range, tipo As String)

Dim celda As Range

For Each celdaIndatos


If (Val(celda) Mod 2) = 0 Then
cp = cp + 1
Else
ci = ci + 1
End If
Next celda

If UCase(tipo) = “P” Then


myCount = cp
Else
myCount = ci
End If

End Function

c. Para probar la función, vaya a la hoja Contar y en la celda E18 escriba:


=myCount(B4:E16;”P”)

d. En la celda E20 escriba:


=myCount(B4:E16;”I”)

e. El resultado debe ser:

f. Guarde los cambios efectuados.

227
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 7: CREAR FUNCIONES CON ARGUMENTOS OPCIONALES


1. Se necesita crear una función que permita crear un nombre de cuenta de red y de correo,
considerando:
Inicial del nombre
Apellido completo
2 ult caracteres del año de nac
@empresa.edu.pe (sólo si se envía M como tercer argumento)

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:

Function Genera(nombre As String, fecha As Date, Optional tipo As String)

inicial = Left(nombre, 1)
espacio = InStr(nombre, “ “)
apellido = Mid(nombre, espacio + 1, Len(nombre) - espacio)
anio = Year(fecha)

If UCase(tipo) = “M” Then


correo = “@empresa.edu.pe”
Else
correo = “”
EndIf

Genera = LCase(inicial & apellido & anio & correo)

End Function

c. Para probar la función, vaya a la hoja Mail y en la celda E4 escriba:


=Genera(C4;D4)

d. Luego, en la celda F4 escriba:


=Genera(C4;D4;”M”)

e. El resultado debe ser:

f. Guarde los cambios efectuados.

228
Capítulo 10: Funciones Definidas por el Usuario

EJERCICIO 8: ORGANIZAR SUS FUNCIONES EN CATEGORÍAS


Agregar descripción a las funciones
1. Ahora que tenemos un buen número de funciones, se va a agregar una descripción a cada una de
ellas.
a. Abra el Examinador de Objetos (F2).
b. En esa ventana, cambie el proyecto a VBAProject.

c. Use el botón derecho sobre la función Genera y elija Propiedades. Escriba una descripción para
esta función.

d. Agregue una descripción a TODAS las funciones creadas.


e. Cierre el examinador de objetos y regrese a su módulo donde escribió las funciones.

2. Luego, para que Excel reconozca las descripciones agregadas:


a. Elija el menú Insertar, Procedimiento.
b. Como nombre escriba Demo y elija el tipo Función.

c. Haga clic en Aceptar.

229
Excel for Masters - Macros y Aplicaciones con VBA

3. Para probar la funcionalidad:


a. En Excel, vaya a la ficha Fórmulas.
b. Haga clic en el comando Insertar función y cambie a la categoría Definidas por el usuario.

c. Compruebe que se muestren las descripciones agregadas.

Agrupar las funciones en Categorías


1. Se va a crear una categoría y añadir las funciones a dicha categoría:
a. En el editor de VBA escriba la siguiente instrucción:

Sub AddUDF()

Application.MacroOptions Macro:=”Genera”, Category:=”Personales”

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()

Application.MacroOptions Macro:=”IGV”, Category:=”Personales”

End Sub

d. Presione F5. Repita el procedimiento para agregar todas las funciones creadas a la categoría
Personales.
2. El resultado debe ser:

3. Guarde los cambios efectuados y cierre Excel.

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.

REVISAR LOS COMPLEMENTOS DISPONIBLES


Muchos de los complementos ya vienen con Excel e incluso ya están trabajando en un segundo plano
y usted todavía no lo nota. Para agregar un complemento, no es necesario realizar una instalación
adicional.

Para revisar la lista de complementos disponibles:


1. Haga clic en el botón Archivo y elija Opciones.
2. Haga clic en la ficha Complementos. Se muestra una lista con los complementos activos en Excel
con la ubicación del archivo y el Tipo de complemento.

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.

Para cargar un complemento:


1. Entre al cuadro 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 situada junto al
complemento que desea cargar y, a continuación, haga clic en Aceptar.

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.

Ficha Fórmulas. Los complementos Asistente para suma


condicional, Herramientas para el euro, Eurotool y Asistente
para búsquedas se muestran en el grupo Soluciones.

232
Capítulo 11: Complementos

Ficha Complementos. La ficha Complementos se agrega a la cinta de opciones, un componente de la


Interfaz de usuario de Microsoft Office Fluent, cuando se carga el primer complemento de esa ficha. Si
no ve la ficha Complementos, salga de Excel y reinicie el programa.

CREAR COMPLEMENTOS PARA FUNCIONES UDF


El capítulo anterior debe haberle dejado una duda rondando en su cabeza. ¿Y qué pasa si deseo que
mi función personalizada esté disponible para todos mis libros?

Un complemento funciona como una librería de utilidades. Puede contener funciones que podrán ser
utilizadas por cualquier libro que las solicite.

Antes de grabar un complemento, es adecuado proteger la visualización del proyecto.

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.

Para proteger el código de su proyecto:


1. Ingrese a su Editor de VBA.
2. Muestre el Explorador de Proyectos.
3. Sobre el proyecto que contiene sus funciones, use el botón derecho y elija Propiedades de VBA
Project. Se muestra una ventana como la siguiente:

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.

5. Haga clic en Aceptar para terminar.

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

Para crear un complemento:


1. Use el comando Archivo y elija Guardar como…
2. Escriba un nombre para el complemento y cambie el tipo de archivo a Complemento de Excel.

3. Observe que automáticamente cambia la ruta para guardar el complemento.


4. Haga clic en Guardar.

DISTRIBUIR UN COMPLEMENTO
Una vez generado un complemento, puede compartirlo con otros usuarios que también quieran
aprovechar de las nuevas funciones agregadas.

En este caso debe:


1. Copiar el archivo XLAM a una unidad de red o a una memoria USB.
2. Luego, en otro equipo, ubique la carpeta de los complementos y copie el archivo.
3. Finalmente, realice el procedimiento para cargar el complemento.

234
Capítulo 11: Complementos

LABORATORIO DE PRÁCTICA

EJERCICIO 1: CREAR COMPLEMENTOS


Este ejercicio creará un complemento con un libro de funciones UDF.

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 ................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

3. Realice el procedimiento para proteger el proyecto:


a. Ingrese a su Editor de VBA y muestre el Explorador de Proyectos.
b. Sobre el proyecto que contiene sus funciones, use el botón derecho y elija Propiedades de VBA
Project.

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

EJERCICIO 2: CARGANDO EL COMPLEMENTO


Veamos ahora si las funciones del complemento se pueden emplear:

Probando el complemento
1. Abra un libro en blanco.
2. Para probar el complemento:
a. Escriba la siguiente tabla:

b. En la celda C4 escriba: =Celsius(C2)


¿Cuál es el resultado? ...................................................................................................................
.......................................................................................................................................................

c. En la celda C6 escriba: =NombreMes(Ahora() )


¿Cuál es el resultado? ...................................................................................................................
.......................................................................................................................................................

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.

e. Haga clic en Aceptar.

236
Capítulo 11: Complementos

2. Para comprobar:
a. En la hoja presione la tecla F9.

3. Guarde los cambios y cierre Excel.

EJERCICIO 3: REVISANDO EL CÓDIGO


1. Ingrese a Excel y vaya al Editor de VBA.
2. En el Explorador de proyectos, ubique el complemento UDF.

3. Haga doble clic en el proyecto para ver el código de las funciones creadas. Se muestra:

4. Escriba una contraseña incorrecta, por ejemplo ZEUS.


Se muestra el código asociado ...........................................................................................................
............................................................................................................................................................

237
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 4: DISTRIBUIR COMPLEMENTOS


En este caso se desea distribuir un complemento a su equipo.

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:

¿Qué acción realiza la función? .........................................................................................................


...........................................................................................................................................................

5. Guarde los cambios y cierre Excel.

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.

Para crear un módulo estándar:


1. Ingrese al editor de VBA.
2. Seleccione el proyecto donde desea agregar el módulo.
3. Luego, desde el menú Insertar, elija Módulo.

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

En el ejemplo, el procedimiento muestra 2 líneas de código:

Sub Lee_Datos( )
nombre = InputBox (“Nombre de usuario: “)
MsgBox “Bienvenido “ & nombre
End Sub

Cuando escriba procedimientos, debe considerar los siguientes aspectos:

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 Inicio2(usuario As String)‘ recibe el argumento enviado por Prueba1


MsgBox “PCH Consultores - Soporte Acádemico” & vbLf _
& “Hola “ & usuario
End Sub

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.

Public Tasa As Double


Public Sub Recalcular ()
Monto= 2500
If Monto>2000 Then
Tasa= 0.15
Else
Tasa= 0.05
End If
End Sub

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.

Para ejecutar un procedimiento:


1. Lleve el cursor sobre alguna línea del procedimiento a ejecutar.
2. Haga clic en botón Ejecutar.

3. También puede usar la tecla F5.

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

[Bloque _de _Sentencias]


NombreFuncion =Valor Devuelto

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:

Función AbrirArchivo() As Boolean

[Intentar abrir un archivo]


If [operación fue satisfactoria]
AbrirArchivo = True
Else
AbrirArchivo = False
End If

End Function

La función AbrirArchivo se llama desde otro procedimiento de este modo:

If AbrirArchivo ( ) = True Then


MsgBox “Satisfactorio”
Else
MsgBox ”Error al Abrir”
End If

PASANDO ARGUMENTOS A PROCEDIMIENTOS


La información se pasa a las Subrutinas y Funciones a través de argumentos, cuando se invoca al
procedimiento. Los argumentos a utilizar se determinan mediante parámetros que se especifican al
definir la Subrutina o función.

Cualquier procedimiento puede aceptar argumentos. Cuando se define el procedimiento, coloque


cada parámetro con su tipo de dato dentro de los paréntesis.

242
Capítulo 12: Fundamentos de Programación

Sintaxis para la Subrutinas


Sub Nombreproced (Param1 As Tipo, Param2 As Tipo,...)

[Código de la Subrutina]

End Sub

Sub Inicio2(usuario As String)‘ recibe el argumento enviado por Prueba1


MsgBox “PCH Consultores - Soporte Acádemico” & vbLf _
& “Hola “ & usuario
End Sub

Luego, puede llamar al procedimiento:

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

Sintaxis para Funciones


FunctionNombreProced (param1 As Tipo, Param2 As Tipo,....) As Tipo

[Código del Procedimiento]

EndFunction

Public Function Valida (monto As Double) As Boolean


‘ejemplo de funciones con argumento
If monto < 2000 Then
Valida = False
Else
Valida = True
End If
End Function

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.

La sintaxis más simple de esta instrucción es:


MsgBox mensaje

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

Por ejemplo, si usted desea que se muestre un mensaje


como el siguiente:

Puede escribir el siguiente procedimiento:

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.

Por ejemplo, si usted desea confirmar una acción


y que se muestre un mensaje como el siguiente:

245
Excel for Masters - Macros y Aplicaciones con VBA

Puede escribir lo siguiente en el procedimiento:

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.

La sintaxis para este caso es:


Resultado = MsgBox( mensaje, botones, título)

Los posibles valores de la variable Resultado en la instrucción anterior están contenidos en el conjunto
vbMsgBoxResult y son:

Constante Botón presionado


vbOK Aceptar
vbCancel Cancelar
vbAbort Anular
vbRetry Reintentar
vbIgnore Ignorar
vbYes Sí
vbNo No

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

rpta = MsgBox(“Este proceso es irreversible” &vbNewLine&_


“¿Desea continua?”, vbYesNo + vbQuestion, “Confirme la acción”)

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.

La sintaxis más simple de esta instrucción es:


valor = InputBox (mensaje)

Adicionalmente, es posible especificar el título del cuadro y el texto que se muestre al aparecer el
cuadro.

La sintaxis en este caso es:


valor = InputBox (mensaje, título, texto predeterminado)

El resultado de la función es de tipo texto.

A modo de ejemplo, se creará un procedimiento que solicite el ingreso de unidades a procesar. Su


cuadro debe ser como el siguiente:

Sub Evaluar()

unidades = InputBox(“Ingrese las unidades a procesar”, “Registro”)

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, CONSTANTES Y TIPOS DE DATOS


En Visual Basic, así como en todos los lenguajes de programación de alto nivel, usted utiliza variables
y constantes para almacenar los valores. Las variables pueden contener los datos representados por
un tipo de dato soportado.

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.

También, el dato almacenado en un Variant sufre un proceso de conversión cuando se manipula el


dato y el rendimiento puede disminuir como resultado de ello.

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

Tipo de dato Prefijo


Byte b
Boolean f(por “flag”)
Integer i
Long l
Single s
Double dbl
Currency c
Date dt
Objet Use el prefijo del objeto
(frm, txt, etc.)
String str
Variant v

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

Por ejemplo, la variable:


gStrUsuario

Indica que es una variable de tipo string y su ámbito es global.

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

TIPOS ADICIONALES DE VARIABLES

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.

Dim lista (20) As Integer ‘21 elementos, del 0 al 20


Dim lista (1 To 20) As Integer ‘20 elementos, del 1 al 20
Dim tabla(1 To 10, 1 To 20 ) As String ‘tabla de 10 x 20

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

Cuando se redimensiona un arreglo, los valores almacenados anteriormente se pierden, porque


cada elemento es reinicializado con cero o NullString dependiendo del tipo de elemento. Si se desea
preservar los valores coloque la palabra Preserve a la sentencia de redimensionamiento.
Redim Preserve X ( Ubound (X) + 10)

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))

If monto > 1600 Then


retencion = monto * 0.1
End If
MsgBox monto & vbTab & Format(retencion, “00.00”)
End Sub

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))

If Ventas >100 Then


Tasa = .10
ElseIf Ventas >50 Then
Tasa = .05
Else
Tasa = .02
End If

Dscto = Ventas * Tasa


Msgbox Ventas & VbTab & Dscto

End Sub

254
Capítulo 12: Fundamentos de Programación

SENTENCIAS SELECT CASE


Una estructura Select Case trabaja con una expresión de prueba simple que es evaluada una vez.
El resultado de la expresión es comparado luego junto con múltiples valores. Esta misma estructura
puede ser escrita usando la sentencia If, pero la sentencia Select Case es más fácil de leer.

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

‘Encuentra segunda coincidencia


Encontrado = Dir
Loop
MsgBox “No hay más archivos coincidentes.”
End Sub

SENTENCIA DO...LOOP WHILE/UNTIL


Este segundo tipo de bucle Do verifica la condición luego de ejecutar el código.

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: ?”)

For Contar = 1 To NumEstud


sPuntaje = CSng(InputBox(“Ingrese Puntaje: “, , 0))
PuntajeTotal = PuntajeTotal + sPuntaje
Next Contar

Spromedio = PuntajeTotal / NumEstud


MsgBox “El promedio es: “ & Spromedio
End Sub

El cuadro de entrada solicita al usuario el número de estudiantes a procesar y el bucle For...Next


ejecuta el bloque de código la cantidad de veces especificada por el usuario. Al final calcula el
promedio.

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).

Además, se desarrollarán instrucciones repetitivas, de selección, etc., como parte de la solución de


aplicaciones en VBA.

EJERCICIO 1: CREAR PROCEDIMIENTOS


Insertando el módulo
1. Abra el libro Procedimientos.xlsm de la carpeta Capítulo_12.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Módulo. Se agrega el objeto Módulo1 el cual se va a emplear para agregar
procedimientos y funciones.

Escribiendo un procedimiento
1. En el módulo escriba:

Sub Inicio( )
MsgBox “Soporte Académico” & vbLf & “Bienvenidos, son las “ & Time
End Sub

2. Debajo, escriba ahora el siguiente procedimiento:

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

3. Recuerde que el código ejecutado es:


MsgBox “Soporte Académico” &vbLf& “Bienvenidos, son las “ & Time
¿Qué acción cree que ejecute la instrucción vbLf? ...........................................................................
............................................................................................................................................................
¿Qué acción cree que ejecute la instrucción Time? ..........................................................................
............................................................................................................................................................

4. Haga clic en Aceptar para salir de ese mensaje.


5. Ahora, haga clic en el procedimiento Lee_Datos y ejecútelo. El resultado es:

6. Escriba su nombre y haga clic en Aceptar. Se muestra:

7. Responda:
¿Qué instrucción pide el ingreso de datos? .......................................................................................
............................................................................................................................................................
¿Qué instrucción muestre el cuadro de mensajes? ...........................................................................
............................................................................................................................................................

8. Guarde los cambios efectuados.

262
Capítulo 12: Fundamentos de Programación

EJERCICIO 2: CREAR PROCEDIMIENTOS CON PARÁMETROS


Escribiendo un procedimiento
Se va a escribir un procedimiento que llame a otro, enviándole valores con los que va a trabajar.
Primero escribiremos el procedimiento que recibe valores para trabajar.
1. En el módulo insertado escriba:

Sub Inicio2(usuario As String)


MsgBox “Soporte Académico” & vbLf & “Hola “ & usuario
End Sub

2. Note en el procedimiento anterior que en el nombre (Inicia2) se declara el parámetro a emplear, es


decir, se indica que nuestro procedimiento va a recibir un valor llamado Usuario.
3. Ahora para emplear este procedimiento, lo vamos a llamar desde otro:

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

4. Observe la línea 4 donde se llama al procedimiento Inicio2 y se envía el parámetro solicitado.

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:

3. Haga clic en Aceptar.

263
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 3: CUADROS DE MENSAJE


Los cuadros de mensaje se usan para mostrar algún tipo de información al usuario, informar sobre un
error o simplemente mostrar el resultado de una operación. En los ejercicios anteriores se ha empleado
el MSGBOX de la manera más sencilla. En estos ejercicios se verán distintas formas de emplear esta
función.

Cuadros de mensaje simples con títulos personalizados


1. En el módulo escriba el siguiente procedimiento:

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:

5. Guarde los cambios efectuados.

264
Capítulo 12: Fundamentos de Programación

Cuadros de mensaje personalizados


Tal como se vio en este capítulo, los cuadros de mensajes pueden personalizarse para mostrar botones
específicos e iconos. Para agregar botones e iconos:
1. Va a crear un procedimiento donde se mostrarán 2 botones: Sí / No.
a. En el módulo, escriba el siguiente procedimiento:

Sub Mensaje3()
MsgBox “Este proceso es irreversible” & vbNewLine & “¿Desea continua?”, _
vbYesNo, “Confirme la acción”
End Sub

b. Ejecútelo. El resultado es:

c. Haga clic en cualquiera de los 2 botones para cerrar el cuadro.

2. Para incluir un icono en el cuadro anterior:


a. Modifique el procedimiento para que se muestre como:

Sub Mensaje3()
MsgBox “Este proceso es irreversible” & vbNewLine & “¿Desea continuar?”, _
vbYesNo + vbQuestion, “Confirme la acción”
End Sub

b. Ejecute el procedimiento. El resultado será:

c. Haga clic en cualquiera de los 2 botones para cerrar el cuadro.

265
Excel for Masters - Macros y Aplicaciones con VBA

3. Otro ejemplo de botones e iconos personalizados:


a. Escriba el siguiente procedimiento:

Sub Mensaje4()
MsgBox “Registro incorrecto”, vbOKOnly + vbCritical, “Error”
End Sub

b. Ejecute el procedimiento. El resultado será:

c. Haga clic en Aceptar para cerrar el cuadro.

4. Escriba el código necesario para generar los siguientes cuadros de mensajes:

SUB Mensaje5()
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

END SUB

266
Capítulo 12: Fundamentos de Programación

SUB Mensaje6()
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

END SUB

Detectando el botón seleccionado en el cuadro de mensaje


Al presentar botones personalizados, se puede detectar sobre cuál de ellos se hizo clic y en base a esto
realizar acciones. En este caso, la sentencia MsgBox se tendrá que emplear como función:
1. En el módulo escriba el siguiente procedimiento:

Sub Mensaje7()
Dim rpta As VbMsgBoxResult

rpta = MsgBox(“Este proceso es irreversible” & vbNewLine & _


“¿Desea continua?”, vbYesNo + vbQuestion, “Confirme la acción”)

If rpta = vbYes Then


MsgBox “Presiono Sí”
Else
MsgBox “Presiono No”
End If

End Sub

2. Ejecute el procedimiento:

3. Haga clic sobre algún botón:


¿El código escrito detecta el botón seleccionado?
............................................................................................................................................................
............................................................................................................................................................

4. Escriba el nombre de las constantes de los botones:


Anular ................................................................................................................................................
Reintentar .........................................................................................................................................

267
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 4: INGRESO DE DATOS


Los cuadros de entrada se usan para solicitar información al usuario. En estos ejercicios se verán
distintas formas de emplear el comando InputBox.

Cuadros de entrada con títulos personalizados


1. En el módulo escriba el siguiente procedimiento:

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:

3. Escriba su edad y presione Aceptar para cerrar el cuadro.

Empleando los valores del cuadro de entradas


1. En caso de querer emplear el valor ingresado en el InputBox debe trabajarlo como función y
asignarle a una variable.
a. En el módulo escriba:

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

c. Escriba A0001 y presione Aceptar. Se muestra:

d. Haga clic en Aceptar.

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:

c. Presione Cancelar. 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:

3. Modifique el último procedimiento para que los cuadros se muestren así:

............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

4. Guarde los cambios efectuados.

270
Capítulo 12: Fundamentos de Programación

EJERCICIO 5: SENTENCIAS CONDICIONALES


Este tipo de sentencias comprueban si una condición se cumple o no y permiten ejecutar instrucciones
de acuerdo a dicha evaluació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)

If monto > 1600 Then


MsgBox monto & vbTab & Format(retencion, “00.00”), , “Resultado”
End If

End Sub

b. Ejecute el procedimiento e ingrese como monto 1700. Haga clic en Aceptar.


¿Cuál es el resultado? ..................................................................................................................
¿Qué utilidad tiene la función FORMAT? .....................................................................................
......................................................................................................................................................

c. Ejecute nuevamente el procedimiento y ahora escriba 1300.


¿Cuál es el resultado? ..................................................................................................................

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

b. El resultado se debe mostrar como el siguiente gráfico:

c. Anote el procedimiento creado.


SUB Condicional2()
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
END SUB

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))

If Ventas >100 Then


tasa = .10
ElseIf Ventas >50 Then
tasa = .05
Else
tasa = .02
End If

Dscto = Ventas * tasa


Msgbox Ventas & VbTab & Dscto

End Sub

272
Capítulo 12: Fundamentos de Programación

b. Ejecute el procedimiento e ingrese una venta de 80. Haga clic en Aceptar.


¿Cuál es el resultado? ...................................................................................................................

c. Ejecute nuevamente el procedimiento y ahora escriba 135.


¿Cuál es el resultado? ...................................................................................................................

2. Otro procedimiento a crear es cuando solicite un turno y se calcule la bonificación respectiva.


a. El cuadro de ingreso debe ser:

b. El resultado se debe mostrar como:

c. Anote el procedimiento creado.


SUB Condicional4()
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

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”)

Select Case val(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

b. Ejecute el procedimiento y escriba 3 en el cuadro.


¿Cuál es el resultado? ...................................................................................................................
c. Ejecute el procedimiento y escriba 1 en el cuadro.
¿Cuál es el resultado? ...................................................................................................................

2. Para emplear rangos de números en la instrucción puede hacer lo siguiente:


a. En el módulo escriba:

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

b. Pruebe el procedimiento 2 ó 3 veces para comprobar los resultados.

274
Capítulo 12: Fundamentos de Programación

EJERCICIO 6: ESTRUCTURAS REPETITIVAS


Estas estructuras permiten ejecutar un grupo de instrucciones un número determinado de veces.

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

b. Ejecute el procedimiento. El resultado es:

c. Escriba una clave incorrecta. Observe que la ventana vuelve a salir.


d. Para terminar, escriba eu129.

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

MsgBox “El bucle se ejecutó “ & contador & “ veces”

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:

c. Escriba el procedimiento empleado:


SUB Repetitiva3 ()
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
END SUB

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

b. Ejecute el procedimiento. El resultado es:

2. En este nuevo procedimiento, se solicitará el puntaje de los estudiantes y se obtendrá el promedio


de sus notas.
a. Escriba el procedimiento:

Sub Repetitiva5( )
NumEstud = InputBox(“¿Cuántos Estudiantes?”, “Calcular promedios”)

For contar = 1 To NumEstud


sPuntaje = Val(InputBox(“Ingrese Puntaje: “, , 0))
PuntajeTotal = PuntajeTotal + sPuntaje
Next contar

Sprome dio = PuntajeTotal / NumEstud


MsgBox “El promedio es: “ & Spromedio
End Sub

b. Escriba la utilidad de las siguientes instrucciones:


PuntajeTotal = PuntajeTotal + sPuntaje ..........................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

277
Excel for Masters - Macros y Aplicaciones con VBA

Spromedio = PuntajeTotal / NumEstud .........................................................................................


.......................................................................................................................................................
.......................................................................................................................................................

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

b. El procedimiento solicitará las filas:

c. Al finalizar el proceso, el resultado debe ser:

4. Guarde los cambios efectuados.

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.

TRABAJANDO CON EL OBJETO WORKBOOK


Cuando abra o grabe un archivo en Microsoft Excel, en realidad está abriendo o grabando un libro de
trabajo. En Visual Basic, los métodos para manipular archivos son métodos del objeto Workbook o la
colección Wookbooks.

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 ( )

Set myBook = Workbooks. Open ( Filename : = “BOOK1.XLS”)


MsgBox myBook.Worksheets (1 ). Range (“A1”). Value

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 ( )

EXEPatch = Application. Patch & Application. ParagraphSeparator


Fname = LibPatch & “BOOK 1.XLS”
Set myBook = Workbooks. Open (Filename := Fname)
MsgBox myBook. Worsheets (1). Range (“A1”). Value

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

MsgBox “Abriendo a… ” & fName

Set myLibro = Workbooks. Open (Filename : = fName )


End Sub

CREANDO Y GRABANDO LIBROS DE TRABAJOS


Usted crea un nuevo libro de trabajo aplicando el método Add para la colección Workbooks. Recuerde
configurar el valor de retorno Add para una variable de objeto de tal manera que se puede referir al
nuevo libro de trabajo en su código.

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

CERRANDO LOS LIBROS DE TRABAJO


Para cerrar un libro de trabajo, emplee el método Close del objeto Workbook. Puede cerrar un libro de
trabajo sin guardar cambios, como muestra el ejemplo siguiente:

Sub AbrirCambiarCerrar ()

Do
FName = Application. GetOpenFilename
Loop Until Fname<>False

Set myBook = Workbooks. Open (Filename :=fName)

‘aquí se hace los cambios


myBook. Closesavechanges := 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

El número de índice de la hoja de cálculo representa la posición de la hoja en la barra de etiquetas


del libro. Worksheets(1) es la primera hoja (en el extremo izquierdo) del libro y Worksheets
(Worksheets.Count) es la última. En el recuento de índice se incluyen todas las hojas, aunque
estén ocultas.

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

TRABAJANDO CON EL OBJETO RANGE


El objeto Range puede representar una celda simple, un rango de celdas, una fila entera o columnas,
una selección que contiene áreas múltiples o un rango 3-D. El objeto Range es algo inusual pues puede
representar tanto a una celda simple como celdas múltiples. No existe un objeto de colección separado
para el objeto Range; usted puede creer que es un objeto único o una colección, dependiendo de la
situación. Existen muchas propiedades y métodos que devuelve un objeto Range, como se muestra en
la siguiente lista:

ActiveCell DirectDependents RowFields


BottomRightCell DirectPrecedents RowRange
Cells EntireColumn Rows
ChangingCells EntireRow Selection
CircularReference Next TableRange1
Columns Offset TableRange2
CurrentArray PageRange TopLeftCell
CurremRegion Precedents UsedRange
Dependents Range VisibleRange

Utilizando un nombre de Rango o una Referencia A1-Style


Uno de los métodos más comunes de devolver un objeto Range es utilizar una referencia de estilo A1
o un nombre de rango, como se muestra en la tabla siguiente:

282
Capítulo 13: Modelo de Objetos

Para hacer esto… …emplee el siguiente código


Configure el valor de la celda A1 en la
Worksheets (“Sheet1”). Range (“A1”). Value=3
hoja 1.
Configure la fórmula para la celda B1 en
Range (“B1”). Formula = “=5-10*RAND ( )”
la hoja activa.
Configure el valor de cada celda en el
Range (“C1:E3”). Value = 6
rango C1:E3 en la hoja activa.
Limpie el contenido del rango A1:E3 en
Range (“A1”, “E”). ClearContents
la hoja activa.
Configurar un estilo fuente para el rango
Range (“my Range”). Font. Bold = True
llamado “myRange”a negrilla.
Configure el valor de cada celda en el
Range (“Sheet1!yourRange”).Value = 3
rango llamado “yourRange”.
Configure una variable de objeto para
Set objRange = Range (“myRange”)
referirse a un rango.

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

EMPLEANDO FILAS NUMÉRICAS E ÍNDICES DE COLUMNAS


Usted puede devolver una celda específica indicando los números de fila y columnas o índices. Primero
especificará el índice de fila, seguido por el índice de columna, como se muestra en la siguiente tabla:

Para realizarlo esto Emplee el siguiente código


Inicie el valor de la celda A1 en Sheet1 Worksheets (“Sheet1”). Cells (1,1). Value = 3
Inicie la fórmula para la celda B1 en la hoja
Cells (1,2). Formula = “=5-10*RAND ( )”
activa.
Inicie la variable de un objeto. Set objRange = Worksheet (“Sheet1”). Cells (1,1)

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

UTILIZANDO LA PROPIEDAD OFFSET


Frecuentemente necesita devolver un rango de celdas, es decir un cierto número de filas o columnas
separadas de otros rangos de celdas. La propiedad Offset se aplica a un objeto Range, toma un
argumento RowOffset y un argumento ColumnOffset, y devuelve un nuevo rango.

Empleando las Propiedades CurrentRegion y UsedRange


Estas propiedades son muy útiles cuando su código opera en los rangos en cuyas medidas no tiene
control. La región actual es un rango de celdas limitado por filas y columnas vacías, o por una
combinación de filas vacías y bordes de la hoja de trabajo.

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 ( )

Set myRange = Worksheets (“Sheetl”). Range(“A1”).CurrentRegion


MyRange.NumberFormat = “0.0”

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.

El siguiente ejemplo muestra un modo de convertir y formatear la fecha y hora:

Sub ConvertirFecha ( )
Set myRange = ActivesSheet.UsedRange
MyRange. Columns (“C”). Insert
Set dateCo1 = myRange.Columns (“C”)
For Each c in data Co1.Cells

If c. Offset(0. –1)- Value <> “Then


C.FormulaR1C1 = “ = RC {-2) +RC +[-1] – (8/24)”
End If
Next c

DateCo1. NumberFormat = “mmm-dd-yyyy hh: mm”


DateCo1.Copy
DateCo1.PasteSpecial Paste:= x1values
MyRange.Column(“A:B2”).Delete
DateCo1. AutoFit
End Sub

Observe que el código utiliza la expresion ActiveSheet.UsedRange.Columns(“C”) para devolver la


tercera columna desde el rango utilizado. Puede utilizar otras propiedades y métodos del objeto Range
en un modo similar a la construcción de expresiones complejas que devuelven subrangos o súper
rangos del objeto Range. Algunas propiedades y métodos comúnmente utilizados aquí son: Áreas,
Cells, Columns, EntireColumn, EntireColumn, EntireRow, Rangey Rows.

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.

Entre los eventos que puede manejar tenemos:


• Se seleccionó una celda o rango.
• Se seleccionó una hoja (haciendo clic en la pestaña o etiqueta de la misma).
• Se ha abierto o cerrado un libro.
• Se ha activado o desactivado una hoja de cálculo.
• Se han calculado de nuevo las fórmulas de una hoja de cálculo.
• Se ha seguido un hipervínculo.

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.

EJEMPLOS DE CÓDIGOS ASOCIADOS A EVENTOS


Evento Open
El código de abajo solicita que el usuario ingrese el tipo de cambio al abrir el libro de trabajo y lo
almacena en la celda A1.

Private Sub Workbook_Open()

cambio = InputBox(“Ingrese tipo de cambio:”)


Range(“A1”).Value =Val(cambio)

End Sub

Este otro código maximiza la ventana de Excel al abrir el libro.

Private Sub Workbook_Open()

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.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

intNumCopias = InputBox(“Número de copias a imprimir:”, Type:=1)

For n = 1 TointNumCopias
ActiveSheet.PrintOut copies:=1
ActiveSheet.Range(“D1”).Value = ActiveSheet.Range(“D1”).Value + 1
Next n

End Sub

Este otro código, solicita confirmación para imprimir.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

IfvbNo = MsgBox(“Está seguro de imprimir”, vbYesNo, “Demo”) Then


Cancel = True
MsgBox (“Impresión cancelada.”)
End If

End Sub

BeforeClose
Este ejemplo guarda una copia del libro antes de cerrarlo.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

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.

Private Sub Workbook_NewSheet(ByValSh As Object)

NomHoja = InputBox(“Introduzca el nombre de la hoja”)


ActiveSheet.Name = NomHoja
ActiveSheet.Move After:=Sheets(Sheets.Count)

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.

EJERCICIO 1: OBJETO WORKBOOKS


Insertando el módulo
1. Abra el libro ObjetoLibros.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 el cual se va a emplear en este capítulo.

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

2. Lleve el cursor sobre alguna línea del procedimiento creado.


3. Pulse la tecla F5. Se debe ver la hoja de Excel y un mensaje como:

4. Haga clic en Aceptar para cerrar la ventana.

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

MsgBox “Abriendo a… “ &fName


Workbooks.Open Filename:=fName
End Sub

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

b. Ejecute el código y observe el resultado.

2. Para crear libros basados en plantillas:


a. Copie el archivo Factura de la carpeta Capítulo_14 a la unidad C:\
b. Luego, en el módulo escriba:

Sub Demo_4( )
MsgBox “Creando un nuevo libro basado en una plantilla…”
Set nuevolibro = Workbooks.Add(“C:\Factura.xltx”)
End Sub

c. Ejecute el procedimiento y observe el resultado.

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

b. Ejecute el código y observe el resultado.


¿Qué instrucción del código mostrado guarda el libro? ...............................................................
......................................................................................................................................................

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

2. Ahora, se asignará el procedimiento a un objeto en el libro:


a. En el libro, inserte el control Botón.
b. Asocie el botón al procedimiento Grabar.
c. El resultado debe ser:

3. Para probar el procedimiento:


a. Escriba los siguientes datos en el libro:

291
Excel for Masters - Macros y Aplicaciones con VBA

b. Haga clic en Grabar.


¿Qué nombre tiene el libro? .........................................................................................................
Compruebe que el libro está en la carpeta Proformas .................................................................
......................................................................................................................................................

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

b. Añada otros datos y vuelva a ejecutar el procedimiento.


¿Qué realiza el procedimiento ahora? ..........................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

5. Modifique el procedimiento para que se muestre un mensaje de confirmación. El resultado debe


ser:

............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

6. Pruebe la funcionalidad y guarde el libro creado.

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.

Agregando hojas al libro


1. En el módulo escriba un procedimiento para agregar una hoja al libro.

Sub Demo_1( )
Sheets.Add
End Sub

2. Ejecute el procedimiento:
¿Qué sucede? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

Determinar el número de hojas


1. En el módulo escriba el procedimiento:

Sub Demo_2( )
MsgBox “El libro tiene “ &Sheets.Count& “ hojas”, _
vbInformation, “Mensaje”
End Sub

2. Ejecute el procedimiento:
¿Qué sucede? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

3. Para probar que funcione correctamente:


a. En Excel, presione ALT + F8 y ejecute el procedimiento Demo_1. Repita el proceso un par de
veces más.
b. Luego, presione ALT + F8 y ejecute el procedimiento Demo_2.
¿El valor mostrado es correcto? ...................................................................................................

293
Excel for Masters - Macros y Aplicaciones con VBA

Cambiando el nombre a la hoja


1. Para cambiar el nombre de una hoja:
a. Escriba el siguiente procedimiento:

Sub Demo_3( )
ActiveSheet.Name = “Metro”
End Sub

2. Para probar el procedimiento:


a. Haga clic en la Hoja1 del libro de Excel.
b. Luego, presione ALT + F8 y ejecute el procedimiento Demo_3.
¿Qué sucede? ...............................................................................................................................

3. Se va a crear otro procedimiento que solicite el ingreso del nombre:


a. Escriba el siguiente procedimiento:

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

b. Vaya a la Hoja2 y presione ALT + F8 y ejecute el procedimiento Demo_4.


c. Ahora, vaya a la Hoja3 y cambie de nombre:

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? ...............................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

Ir a una hoja específica


1. Para ir a una hoja específica:
a. Escriba el siguiente procedimiento:

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

MsgBox “Cambiando a la hoja…” & hoja, vbInformation, “Ir a...”


Sheets(hoja).Activate
End Sub

2. Para probar el procedimiento:


a. Haga clic en la Hoja1 del libro de Excel.
b. Luego, presione ALT + F8 y ejecute el procedimiento Demo_6. Escriba el número de hoja a ir.
¿Qué sucede al hacer clic en Aceptar? .......................................................................................
.....................................................................................................................................................
¿Qué muestra la siguiente expresión: Sheets.Count? .................................................................
.....................................................................................................................................................
.....................................................................................................................................................
¿Qué instrucción es la que direcciona a una hoja? ....................................................................
.....................................................................................................................................................
.....................................................................................................................................................

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

2. Presione ALT + F8 y ejecute el procedimiento Demo_7.


¿Qué sucede? .....................................................................................................................................

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

2. Presione ALT + F8 y ejecute el procedimiento Demo_8.


¿Qué sucede? .....................................................................................................................................

3. El resultado debe salir como:

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? ....................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

3. Compruebe los valores de las siguientes celdas:


Celda B10 ...........................................................................................................................................
............................................................................................................................................................
Celda B5 de la Hoja2 .........................................................................................................................
............................................................................................................................................................

Trabajar con rangos


1. En el módulo escriba un procedimiento:

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

2. Para probar el procedimiento:


a. Vaya a la Hoja3 e inserte un control de tipo Botón. Asocie el control al procedimiento Demo_2.
b. El resultado debe ser:

c. Haga clic en el botón Otro…


¿Qué sucede en las celdas? ..........................................................................................................
......................................................................................................................................................
......................................................................................................................................................

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? .....................................................................

3. Para trabajar con un rango seleccionado:

Sub Demo_4( )
Selection.Formula = “=RANDBETWEEN(1,20)”
With Selection
.Font.Size = 12
.Font.Bold = True
.BorderAroundColorIndex:=5
End With
End Sub

4. Para probar el procedimiento:


a. Seleccione varias celdas en blanco.
b. Pulse la tecla ALT + F8 y ejecute el procedimiento Demo_4.
¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

299
Excel for Masters - Macros y Aplicaciones con VBA

EJERCICIO 7: CELLS Y ACTIVECELL


Estos objetos son muy versátiles ya que permiten trabajar con una referencia de celda de tipo fila,
columna o incluso sólo con la dirección de la celda donde está el indicador.

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.

Ingreso de valores a la celda activa


1. En el módulo escriba un procedimiento para que asigneun valor a la celda activa.

Sub Demo_1( )
valor = InputBox(“Escriba el contenido”, “Ingreso”)
ActiveCell.Value = valor
End Sub

2. Para probar el procedimiento:


a. Ahora, vaya a la Hoja1 y agregue un botón. Asocie el procedimiento al botón. Se debe mostrar:

b. Luego, haga clic sobre cualquier celda y presione el botón Ingresar.


c. Se muestra el cuadro de ingreso de datos. Escriba un valor y haga clic en Aceptar.

¿Qué sucede? ...............................................................................................................................

3. Vaya a otra celda y haga clic en Ingresar.


¿Qué sucede? ....................................................................................................................................

4. Vaya a otra celda y haga clic en Ingresar.

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

¿Qué indica la instrucción Cells(5 + x, 2)? ..........................................................................................


............................................................................................................................................................

2. Para probar el procedimiento:


a. Vaya a la Hoja2 y genere un botón asociado al procedimiento Demo_2.

b. Luego, haga clic en el botón y observe los resultados:


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

Desplazar la celda activa


1. Escriba un procedimiento para desplazar la celda activa a la fila siguiente de la última celda de una
lista.

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

2. También escriba el siguiente procedimiento:

Sub Demo_3b ( )
Range(“B4”).Activate
Selection.End(xlDown).Activate
ActiveCell.Offset(1, 0).Activate
End Sub

3. Para probar los procedimientos:


a. En la Hoja3 inserte 2 botones y asócielos a los procedimientos 3a y 3b.
b. El resultado debe ser:

c. Lleve el cursor a cualquier celda y haga clic en el primer botón.


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................

d. Lleve el cursor a otra celda y haga clic en el segundo botón.


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................

Note que en ambos casos el cursor se desplaza, esto porque se emplea el método ACTIVATE.

Leer datos de la última celda


1. Escriba un procedimiento para desplazar la celda activa a la fila siguiente de la última celda de una
lista.

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

2. Para probar los procedimientos:


a. En la Hoja4 inserte 1 botón asociado a Demo_04.

b. El resultado debe ser:

c. Haga clic en el botón y observe el resultado:

d. Ahora, escriba estos valores en la hoja de cálculo:

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

2. Para probar el procedimiento:


a. Ahora, vaya a Pagos y agregue un botón. Asocie el procedimiento al botón. Se debe mostrar así:

b. Haga clic en el botón Calcular.


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................

3. Escriba otro Monto y otro número de cuotas. Haga clic en Calcular.


¿El cálculo se realiza correctamente? ................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

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? ..............................................................

Creando el primer procedimiento


1. Se debe crear un procedimiento para generar 30 números aleatorios entre 10 y 100.
a. En el módulo escriba:

Sub Demo_6( )
For i = 1 To 30
Cells(2 + i, 2).Value = Int((100 - 10 + 1) * Rnd + 10)
Next i
End Sub

¿Qué celda indica la instrucción Cells(2 + i, 2)? ............................................................................

2. Para probar el procedimiento:


a. En la hoja Cuadros agregue un botón. Asocie el procedimiento al botón. Se debe mostrar:

b. Haga clic en el botón Generar.


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................

c. Repita el paso anterior varias veces y observe los resultados.


¿Se generan números entre 10 y 100? .........................................................................................
......................................................................................................................................................

305
Excel for Masters - Macros y Aplicaciones con VBA

Creando el segundo procedimiento


1. Se debe crear un procedimiento para generar una tabla de n columnas (de acuerdo al valor
especificado en la celda E2) con la lista de valores generados.
a. En el módulo escriba:

Sub Demo_7( )
Dim datos As Range
Set datos = Range(“B3:B32”)
Range(“D7:M50”).ClearContents

For Each x Indatos


col = col + 1
If col >Range(“E2”).Value Then
col = 1
fila = fila + 1
End If
Cells(8 + fila, 3 + col).Value = x
Next x
End Sub

2. Para probar el procedimiento:


a. En la hoja Cuadros agregue un botón. Asocie el procedimiento al botón. Se debe mostrar:

b. Haga clic en el botón Crear cuadro.


¿Qué sucede?................................................................................................................................
......................................................................................................................................................

c. Escriba 6 en Columnas y haga clic en el botón. El resultado debe ser:

3. Guarde los cambios efectuados y salga de Excel.

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.

Propiedades del UserForm


Una vez que insertó su formulario, el paso inmediato es modificar sus propiedades a través de la
ventana Propiedades.
1. Haga clic en algún lugar de su formulario.
2. Pulse la tecla F4 para ver la ventana Propiedades.
3. Ubique la propiedad que desea modificar y cámbiela.

Entre las propiedades que se pueden modificar tenemos:

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:

Private Sub UserForm_Initialize()

texto = InputBox("Escriba el título: ", "Acción")


Me.Caption = texto

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

… el cual carga el formulario en memoria y lo muestra en su pantalla.

Entre los métodos que tiene un formulario encontramos:

Método Utilidad
Load Carga el formulario en memoria.
Show Carga y muestra el formulario.
Hide Oculta el formulario.

Los métodos son accionados a través de código VBA. Por ejemplo:

Private Sub UserForm_Click()

Me.Hide

End Sub

El procedimiento oculta el formulario al hacer clic en algún lugar del mismo.

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.

Control Etiqueta Cuadros de Texto

Botones de Comando

Los controles se agregan al formulario a través del cuadro de Herramientas.

Para ver el cuadro de herramientas:


1. Haga clic en algún lugar de su formulario.
2. Vaya al menú Ver, Cuadro de herramientas.

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.

CONTROL DE ETIQUETA (LABEL)


Las etiquetas son comúnmente usadas para mostrar texto que no cambiará. Un ejemplo de etiqueta
puede ser un título bajo un gráfico, o títulos para unidades, directorios o cuadros de lista de archivos.
También puede incluir instrucciones para completar un cuadro de diálogo.

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

CONTROL CUADRO DE TEXTO (TEXTBOX)


Un control de cuadro de texto es usado para obtener información
i f desde el usuario o para mostrar
información proporcionada por la aplicación. (Note que esa información mostrada en un cuadro de
texto puede ser cambiada por el usuario, a diferencia de la información usada por la etiqueta).

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

En el siguiente ejemplo, el nombre de usuario ingresado por el usuario en el formulario anterior es


convertido a letras mayúsculas cuando txtUsuario pierde el enfoque e invoca el evento LostFocus:

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

CONTROL BOTÓN DE COMANDO (COMMANDBUTTON)


Un botón de comando realiza una tarea cuando el usuario hace clic
l sobre el botón. El evento más
común para el control Botón de Comando es el evento clic.

Entre las propiedades, métodos y eventos más comúnmente usados con el control Botón de Comando
tenemos:

Propiedades Métodos Eventos


Cancel SetFocus Click
Caption MouseDown
Default MouseMove
Font MouseUp
Name
Visible

CASILLAS DE VERIFICACIÓN (CHECKBOX)


Las casillas de verificación se usan para mostrar opciones que se pueden activar o desactivar. Cuando
el usuario selecciona la opción, aparece una marca dentro de la casilla. También se pueden utilizar para
proporcionar al usuario opciones del tipo si/no o verdadero/falso.

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.

BOTONES DE OPCIÓN (OPTIONBUTTON)


Los botones de opción se usan para seleccionar una opción, normalmente entre un grupo de botones
de opción. Cuando se selecciona un botón de opción, éste tiene el centro negro. Al contrario que
las casillas de verificación, dentro de un grupo de botones de opción sólo puede seleccionar uno de
ellos.

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.

El botón de opción tiene asociado por defecto el evento clic.

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.

USAR BOTONES DE OPCIÓN DENTRO DE UN MARCO


Use el control Botón de Opción cuando quiere que el usuario seleccione sólo una opción de un grupo
de opciones disponibles. Cuando selecciona un botón de opción, todos los demás dentro del grupo se
deseleccionan.

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.

El evento asociado a este control es:


Change: Ocurre cuando el usuario se desplaza o se cambia la propiedad Value con código.

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

CONTROL IMAGEN (IMAGE)


El control imagen es un control gráfico que puede presentar un dibujo. Puede presentar un mapa de
bits, un icono o un metaarchivo. Usa pocos recursos y se dibuja rápido.

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.

CONTROLES CUADRO COMBINADO


Y CUADRO DE LISTAS (COMBOBOX / LISTBOX)
Los cuadros de lista y cuadro combinado se usan para presentar alternativas al usuario. Se dispone
de cuatro distintos controles de cuadro de listas y combinado, y cada uno tiene una funcionalidad
ligeramente distinta.
• Control de Cuadro de Lista.
• Control Cuadro Combinado:Se determina mediante la propiedad Style.
0 - StyleDropDown Combo (cuadro combinado desplegable)
2 - StyleDropDownList (cuadro de lista desplegable)

La principal diferencia entre un cuadro de tipo combinado (combinado desplegable) y un cuadro


de tipo lista (cuadro de lista y lista desplegable) es que un cuadro combinado le permite una nueva
opción, en lugar de limitar la selección a sólo uno de aquellos elementos que son proporcionados por
el programa.

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

CONTROL PÁGINA MÚLTIPLE (MULTIPAGE)


Un control MultiPage es útil cuando se desea trabajar con gran cantidad de información que se puede
clasificar en varias categorías. Por ejemplo, utilice un control MultiPage para mostrar información desde
una aplicación de empleados. Una página podría contener información personal como el nombre y la
dirección; otra página podría enumerar anteriores trabajos y una tercera página podría enumerar las
referencias. El control MultiPage le permite combinar visualmente información relacionada, al tiempo
que mantiene fácilmente accesible el registro completo.

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.

EJERCICIO 1: CREAR FORMULARIOS BÁSICOS


Insertando el formulario
1. Abra el libro Formularios.xlsm de la carpeta Capítulo_14.
2. Presione ALT + F11 para ir al Editor de VBA.
3. Use el menú Insertar, Userform. Se agrega el objeto UserForm1.

Modificando las propiedades del formulario


1. Haga clic sobre el formulario ingresado y presione F4 para ver sus propiedades.
2. Cambie las siguientes propiedades:
Name: frmProducto
Caption: Información del producto
StartUpPosition Centrar en pantalla.

3. Para ver los cambios efectuados, presione F5:

4. Use el botón Cerrar para salir de la ventana.

317
Excel for Masters - Macros y Aplicaciones con VBA

Agregando controles
1. Añada los controles necesarios al formulario para que se muestre:

2. Cambie las siguientes propiedades de los controles:


txtNombre
txtVersion
spbVersion
txtEmpresa
cboTipo
txtComentario
btnAceptar
btnCancelar

3. Para ver los cambios efectuados, presione F5.

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:

Private Sub UserForm_Activate()


cboTipo.AddItem “Procesador de textos”
cboTipo.AddItem “Hoja de cálculo”
cboTipo.AddItem “Base de datos”
cboTipo.AddItem “Software de presentación”
End Sub

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:

Private Sub btnCancelar_Click()


Unload Me
End Sub

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:

Private Sub spbVersion_SpinDown()


txtVersion = txtVersion - 1
End Sub

Private Sub spbVersion_SpinUp()


txtVersion = txtVersion + 1
End Sub

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

EJERCICIO 2: CREAR FORMULARIOS BÁSICOS


Se necesita crear un formulario que permita seleccionar un usuario y valide su contraseña. El formulario
debe mostrar la foto del usuario.

Antes de iniciar, copie la carpeta Fotos de la carpeta Capítulo_15 al disco C:\


1. Use el menú Insertar, Userform. Se agrega el objeto UserForm2.
2. Cambie las propiedades del formulario y agregue los controles necesarios para tener una ventana
como:

3. Los controles deben tener los nombres y propiedades siguientes:


cboUsuario
txtCargo (enabled: False)
txtClave (PassWordChar: *)
cmdAceptar
cmdCerrar
imgUsuario (PictureSizeMode: 1)

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

5. Escriba un procedimiento para cargar los valores:

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:

Private Sub UserForm_Activate ()


Estado = False
CargarDatos
For x = 0 To 4
CboUsuario.AddItemUsuarios(x + 1, 1)
Next x
End Sub

7. Ejecute este formulario y haga clic en el cuadro Usuario. El resultado debe ser:

8. Al seleccionar un usuario en el combo, se debe cargar el cargo y su foto:

Prívate Sub cboUsuario_Click ( )


opción = cboUsuario.ListIndex + 1
txtCargo = Usuarios (opción, 2)
txtClave.SetFocus
imgUsuario.Picture = LoadPicture (“C:\Fotos\” &cboUsuario.Text& “.jpg”)
End Sub

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:

10. El procedimiento para validar la clave debe ser:

Private Sub cmdAceptar_Click( )


If txtClave = Usuarios (opcion, 3) Then
Estado = True
End
Else
MsgBox “Error de Ingreso...”, vbCritical, “Error”
End If
End Sub

EJERCICIO 3: CREAR FORMULARIOS BÁSICOS


1. Se pide crear un formulario que permita añadir un texto ingresado por teclado a un cuadro de lista.
El proceso debe activarse al hacer clic en el botón Agregar o pulsar la tecla Intro. Además, se pide
crear otro procedimiento que permita Eliminar un elemento seleccionado del cuadro lista.
2. El formulario debe tener la siguiente apariencia:

Se debe activar sólo


si está seleccionado
un elemento.

322
Capítulo 14: UserForm

3. Los controles deben tener los siguientes nombres:


txtItem
cmdAdd (enabled = False)
cmdDelete (enabled = False)
cmdClose
lstItems

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:

Private Sub txtItem_Change()


cmdAdd.Enabled = Len(txtItem) > 0
End Sub

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? ............................................................................................

c. Con la tecla backspace, borre lo escrito.


¿Qué sucede con el botón Agregar? ............................................................................................

d. Cierre el formulario.

5. Para añadir código al botón Agregar, haga doble sobre él y escriba:

Private Sub cmdAdd_Click( )


‘desde el elemento 0 al número de elementos ingresados
For K = 0 TolstItems.ListCount – 1

‘si el texto ingresado ya existe en la lista, no permite el ingreso


If lstItems.List(K) = txtItem Then
MsgBoxlstItems.List(K) & “ Ya existe en la Lista”, , “Error”
txtItem = “”
txtItem.SetFocus
Exit Sub ‘sale del procedimiento
End If

lstItems.Selected(K) = False
Next K

‘adiciona un elemento a la lista


lstItems.AddItemtxtItem
txtItem = “”
txtItem.SetFocus
cmdAdd.Enabled = False ‘desactiva el botón Agregar

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:

Private Sub lstItems_Click()


cmdDelete.Enabled = True
End Sub

7. Considere el siguiente código para el botón Eliminar:

Private Sub cmdDelete_Click( )


‘elimina el elemento seleccionado de la lista
lstItems.RemoveItemlstItems.ListIndex

‘desactiva el botón Eliminar


cmdDelete.Enabled = False

‘si existen elementos en la lista, se deseleccionan


If lstItems.ListCount> 0 Then
lstItems.Selected(lstItems.ListIndex) = False
End If

txtItem.SetFocus
End Sub

8. Para probar la funcionalidad:


a. Ejecute el formulario. En ítem escriba Lectora de DVD y haga clic en Agregar.
b. Siguiendo el mismo procedimiento añada: WebCam, Disco Duro externo, Tarjeta de video y
Parlantes con subwoofer.
c. Ahora, escriba WebCam y haga clic en Agregar.
¿Qué sucede? ¿Por qué? ..............................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

d. Ahora, seleccione un elemento de la lista y haga clic en Eliminar.


¿Qué sucede? ...............................................................................................................................
......................................................................................................................................................

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.
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

10. Guarde los cambios y salga de Excel.

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.

1. Se debe agregar un formulario en el proyecto actual. Siga los siguientes pasos:


a. Ingrese al editor de Visual Basic Alt + F11.
b. En el proyecto actual, elija el menú Insertar, Formulario…
c. Su explorador de proyectos debe ser como la siguiente figura:

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:

3. Modifique el nombre de los controles de acuerdo a:


txtGuias
txtCliente
txtFecha
txtMonto
cmdAceptar
cmdCerrar
Al formulario frmGuia.

Ingreso de datos a través de Formularios


Ahora, se debe programar para que al hacer clic en el botón Aceptar, los datos ingresados en el
formulario se lleven a la hoja de Excel.
1. Haga doble clic en el botón Aceptar y escriba el siguiente código:

Private Sub cmdAceptar_Click( )


‘activa la hoja Guias y lleva el indicador a la celda A3
Sheets(“Guias”).Activate
Range(“A3”).Select

‘lleva el indicador a la última fila de la tabla


‘si la tabla está vacía baja una sola fila
If ActiveCell.Offset(1, 0).Value <> “” Then
Selection.End(xlDown).Activate
EndIf
ActiveCell.Offset(1, 0).Activate

‘copia el contenido de los textbox a las celdas orrespondientes


ActiveCell.Value = Val(txtGuia)
ActiveCell.Offset(0, 1).Value = txtCliente
ActiveCell.Offset(0, 2).Value = CDate(txtFecha)
ActiveCell.Offset(0, 3).Value = Val(txtMonto)
End Sub

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).

3. En este módulo, escriba el siguiente procedimiento:

Sub Mostrar_Guia( )
frmGuia.Show
End Sub

Crear un menú de Opciones


Los formularios y procedimientos que va a crear a lo largo de este laboratorio deben estar agrupados
en un menú de Opciones, tal como se muestra en la imagen:

1. Vaya a una hoja de Excel del mismo libro e inserte un Cuadro de grupo de los controles de
formulario.

2. Ahora, debemos asignar este procedimiento a un botón:


a. Dibuje el control de tipo Botón del cuadro de grupo.
b. Se presenta la ventana Asignar Macro…. En esta ventana seleccione el procedimiento Mostrar_
Guia preparado en ejercicios anteriores.

c. Cambie el nombre del botón a Registrar Guías.


d. Para probar la funcionalidad, haga clic sobre el botón y agregue 5 guías más.

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:

2. El formulario debe tener la siguiente apariencia:

3. El combo de Distrito debe mostrar:

4. Escriba el procedimiento usado en el botón Aceptar.


...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................

328
Capítulo 14: UserForm

5. Luego, en el módulo insertado escriba un segundo procedimiento…

Sub Mostrar_Clientes( )
frmClientes.Show
End Sub

6. Finalmente, asigne este procedimiento al botón Clientes.

7. Pruebe la funcionalidad ingresando 5 clientes más.

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.

1. Se debe agregar un formulario en el proyecto actual. Siga los siguientes pasos:


a. Ingrese al editor de Visual Basic (Alt + F11).
b. En el proyecto actual, elija el menú Insertar, Formulario…
c. Diseñe la siguiente interfaz:

2. Para cargar los nombres de los clientes en el combo, use el siguiente código:

Private Sub UserForm_Activate( )


‘lleva el indicador a la celda B6 de la hoja Clientes
Sheets(“Clientes”).Activate
Range(“B6”).Select

329
Excel for Masters - Macros y Aplicaciones con VBA

‘agrega cada cliente al combo


Do
cboClientes.AddItemActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value<> “”

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:

Private Sub cboClientes_Click( )


‘lleva el indicador a la celda B6 de la hoja Clientes
Sheets(“Clientes”).Activate
Range(“B6”).Select

‘recorre todos los clientes


Do
‘si el cliente es igual al combo
If ActiveCell.Value = cboClientes.Text Then

‘entonces lo lleva a los cuadros de texto


txtCod = ActiveCell.Offset(0, -1).Value
txtRuc = ActiveCell.Offset(0, 1).Value
txtDireccion = ActiveCell.Offset(0, 2).Value
txtRepresentante = ActiveCell.Offset(0, 3).Value
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value<> “”
End Sub

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

2. Escriba el código usado.

...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................

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.

5. Pruebe la funcionalidad haciendo clic en el botón Buscar Clientes.

Ingresando datos a tablas


1. Realice el procedimiento que permita ingresar registros a la siguiente tabla de Excel:

331
Excel for Masters - Macros y Aplicaciones con VBA

2. Considere el formulario propuesto.

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:

5. Al Aceptar, debe considerar que estos datos se guardan en la tabla de Amortizaciones….

6. El valor ingresado en esa guía se suma al de la tabla Guías.

332
Capítulo 14: UserForm

7. La guía tenía una amortización de 1000, al ingresar una nueva amortización tendrá ahora:

8. Escriba el código usado en el botón Aceptar.


...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................

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

2. En el combo, se debe mostrar las guías de la hoja Guías.

Escriba el código empleado.


...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................

3. Al seleccionar una guía, se debe mostrar sus datos.

Escriba el código empleado.


...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................

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

5. Considere el siguiente código para el botón Mostrar.

Private Sub cmdMostrar_Click( )


‘limpia el cuadro de lista y crea una variable para sumar la amortiz
lstLista.Clear
Dim sMonto As Single

‘lleva el indicador a la celda A5 de la hoja Amortizaciones


Sheets(“Amortizaciones”).Activate
Range(“A5”).Select

‘busca a la guía del combo en la hoja de Amortizaciones


Do
If ActiveCell.Value = Val(cboGuia) Then

‘si la encuentra, agrega la fecha y la amortización


lstLista.AddItemActiveCell.Offset(0, 2).Value & _
vbTab&ActiveCell.Offset(0, 3).Value
sMonto = sMonto + ActiveCell.Offset(0, 3).Value

End If
ActiveCell.Offset(1, 0).Select

Loop While ActiveCell.Value<> “”

‘lleva el valor total al cuadro de texto del formulario


txtAmortiza = sMonto

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

EJERCICIO 5: OLE AUTOMATION


Visual Basic puede utilizar los objetos de otras aplicaciones de la misma forma que cualquier otro
objeto de Visual Basic. Puede establecer o leer propiedades, utilizar sus métodos, etc. Esto se denomina
Automatización OLE.

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:

Dim doc As Word.Application


Set doc = CreateObject(“Word.Application”)

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

3. Considere el código completo para el botón Liquidar.

Private Sub cmdLiquidar_Click( )


‘definir objetos de tipo Word
Dim doc As Word.Application
Set doc = CreateObject(“Word.Application”)

‘agrega un documento basado en la plantilla Liquidación


doc.Documents.Add “C:\Demo\Liquidación.dotx”

‘lleva los cuadros de texto del formulario a los campos de Word


With doc.ActiveDocument
.Fields(1).Result.Text = cboGuia
.Fields(2).Result.Text = txtCliente
.Fields(3).Result.Text = Format(txtFecha, “dd-mm-yyyy”)
.Fields(4).Result.Text = txtMonto
.Fields(5).Result.Text = txtAmortiza
EndWith

‘muestra la aplicación automatizada


doc.Visible = True
doc.Activate

‘el documento se muestra en la vista preliminar


doc.ActiveDocument.PrintPreview

‘libera de memoria al objeto definido


Set doc = Nothing
End Sub

6. Pruebe la funcionalidad ejecutando el formulario y usando el botón Liquidar.


7. Guarde los cambios y salga de Excel.

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).

EJERCICIO 1: PREPARANDO EL ESCENARIO

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

2. Luego, en Excel, diseñe la siguiente tabla y guárdela con el nombre de Facturación.

Escriba la fórmula: Total = Suma de los montos


= B10 * E10 IGV = 19% del Total
…aplique el siguiente formato Neto = Total + IGV
personalizado: 0.00;; y copie la fórmula a
las demás celdas

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

2. Luego, debe crear variables de tipo connection y recordset en un módulo.


a. Haga clic en el proyecto actual y elija el menú Insertar, Módulo…
b. En el módulo, debe declarar las variables a ser usadas:
Public conec As New ADODB.Connection
Public rsClientes As New ADODB.Recordset

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:

Private Sub UserForm_Activate( )


‘llama al procedimiento de conexión
Conectar

‘se conecta a la tabla Clientes


rsClientes.ActiveConnection = conec
rsClientes.Source = “Select * From Clientes”
rsClientes.CursorType = adOpenDynamic
rsClientes.Open

‘lleva el IdCliente al combo


rsClientes.MoveFirst
Do While Not rsClientes.EOF
cmbClientes.AddItemrsClientes!IdCliente
rsClientes.MoveNext
Loop

‘cierra la conexión
conec.Close
End Sub

b. Ejecute el formulario y el resultado deberá ser:

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.

2. Para esto, considere el siguiente código en el combo:

Private Sub cmbClientes_Click( )

Conectar

cad1=”Select * from Clientes where IdCliente=’” &_


cmbClientes.Text& “’”

rsClientes.Open cad1, conec, adOpenDynamic


txtNombre = rsClientes!NomCliente
txtDireccion = rsClientes!DirCliente

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).

Escriba el código empleado:


............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

342
Capítulo 15: Aplicaciones con BD

4. Finalmente, en el módulo debe crear un procedimiento para abrir el formulario creado:

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

Escriba el código empleado:


............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

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.

Escriba el código empleado:


............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

4. El botón Aceptar se debe activar sólo si se ingresa la cantidad de compra.


Escriba el código empleado:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

344
Capítulo 15: Aplicaciones con BD

Llevar datos a la Hoja de Cálculo


1. En este ejercicio se pide que al hacer clic, los datos del formulario anterior se lleven al área de
detalles de la hoja de Facturas, tal como lo muestra la imagen:

2. Considere el siguiente esquema:


a. Lleve el indicador a la última celda de la columna de Cantidad.
b. Luego, lleve los cuadros de texto a las celdas correspondientes de la hoja de cálculo.

3. Para realizar el 1er. paso, considere el siguiente código en el botón Aceptar:

Private Sub cmdAceptar_Click( )

‘lleva el indicador a la última celda de la cantidad


Range(“A9”).Select

Do
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value<> “”

‘aquí debe ir el código

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

5. Luego, en el módulo, debe crear un procedimiento que muestre el formulario de Productos.


Escriba el código empleado:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

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.

2. El procedimiento necesario para lograr esto sería:


a. Conectarse a la base de datos PCVentas.
b. Abrir la tabla Facturas.
c. Leer el último registro.
d. Sumar uno a ese valor y llevarlo a la celda correspondiente:

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

4. Luego, en el módulo, escriba el siguiente procedimiento:

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

‘abre la tabla Facturas


rsFacturas.ActiveConnection = conec
rsFacturas.Source = “Select * from Facturas”
rsFacturas.CursorType = adOpenDynamic
rsFacturas.Open

‘lee el último registro


rsFacturas.MoveLast

‘toma el valor, le incrementa 1 y lo lleva a la celda


Range(“C4”).Value = rsFacturas!IdFactura + 1

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.

3. El código usado para este ejemplo será:

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 sentencia sql para recuperar los encabezados de Facturas


‘y relaciona las tablas
cad1 = “SelectIdFactura, Fecha ,NomCliente, Clientes.IdCliente “
cad2 = “ From Facturas, Clientes “
cad3 = “ WhereFacturas.IdCliente = Clientes.IdCliente “
cad4 = “ And IdFactura = “ & celda
Sql = cad1 + cad2 + cad3 + cad4

‘crea el RecordSet
rsFacturas.OpenSql, conec

If rsFacturas.BOF Then
MsgBox “Factura no Existe”
conec.Close
Exit Sub
EndIf

‘lleva los valores encontrados a la hoja


Range(“C6”) = rsFacturas!NomCliente
Range(“F6”) = rsFacturas!Fecha
Range(“C7”) = rsFacturas!IdCliente
:
:
End Sub

4. Continuando con el procedimiento debe:


a. Crear una instrucción SELECT para recuperar los detalles de la factura correspondiente. Debe
incluir campos de las tablas Detalles y Productos.
IdArticulo, NomArticulo, PreVenta, Cantidad.
b. Además, debe indicar la relación entre las tablas usadas.
c. Luego, recorrer el recordset y llevar cada registro a la hoja de cálculo. Escriba el código,
continuando con el procedimiento anterior:

‘crea la sentencia sql para recuperar los Detalles, paso 1


c1=”SelectIdFactura,NomArticulo, Detalles.PreVenta,”
cad2 = “Detalles.Cantidad, Detalles.IdArticuloFromArticulos, Detalles “
cad3 = “ WhereDetalles.IdFactura = “ & celda & _
“ andArticulos.IdArticulo=Detalles.IdArticulo”

Sql = cad1 + cad2 + cad3


rsDetalles.OpenSql, conec

Range(“A10:E19”).ClearContents
‘lleva los detalles a la hoja de Excel, paso 2
Range(“A10”).Select

348
Capítulo 15: Aplicaciones con BD

Do While Not rsDetalles.EOF


ActiveCell.Value = rsDetalles!IdArticulo
ActiveCell.Offset(0, 1).Value = rsDetalles!Cantidad
ActiveCell.Offset(0, 2).Value = rsDetalles!NomArticulo
ActiveCell.Offset(0, 4).Value = rsDetalles!PreVenta
rsDetalles.MoveNext
ActiveCell.Offset(1, 0).Select
Loop

conec.Close

End Sub

Guardar datos en Access


1. Ahora, se pide crear un procedimiento para que al hacer clic en el botón Facturar, los encabezados
de la factura se guarden en la tabla Facturas. El procedimiento sería:
a. Conectarse a la BD y crear un SELECT para conectarse a la tabla Facturas, 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.

2. El código usado para este ejemplo será:

Sub Facturar( )
‘se conecta a la BD
Conectar

‘crea la sentencia sql para conectarse a la tabla Facturas


Sql= “Select * from Facturas Where IdFactura = 0”
rsFacturas.OpenSql, conec, adOpenDynamic, adLockOptimistic

‘agrega un registro en blanco


rsFacturas.AddNew

‘lleva las celdas a los campos


rsFacturas!IdFactura = Range(“C4”).Value
rsFacturas!Fecha = Range(“F6”).Value
rsFacturas!IdCliente = Range(“C7”).Value
‘actualiza la tabla Facturas
rsFacturas.Update

‘aquí debe ir el código para guardar los detalles. Complete el código


:
:
‘cierra la conexión
conec.Close

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:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................

6. Luego, genere el botón Facturar que permita llamar al procedimiento creado.

7. Pruebe la funcionalidad interactuando con los procedimientos elegidos.

350
Impreso en los Talleres Gráficos de

Surquillo
7199700 - 7199701

Mayo 2011

También podría gustarte