Libro Macros Excel
April 2, 2017 | Author: Claudia Rosas | Category: N/A
Short Description
Download Libro Macros Excel...
Description
Macros en Excel
XXIV
CONTENIDO Introducción ............................................................................................................................................................ XV Desde dónde Iniciar ......................................................................................................................................... XIX CAPITULO 1: Nivelación de conceptos y técnicas de trabajo con Excel Fórmulas con referencias a celdas................................................................................................................................... 2 Análisis de fórmulas copiadas en sentido vertical ............................................................................................ 2 Referencias a filas constantes............................................................................................................................... 2 Análisis de fórmulas copiadas en sentido horizontal ....................................................................................... 3 Referencias a columnas constantes ..................................................................................................................... 3 Referencias a celdas constantes ........................................................................................................................... 3 Crear y emplear nombres de celdas y rangos................................................................................................................. 5 Asignar nombres a celdas .................................................................................................................................... 5 Utilizar los nombres de celdas para elaborar fórmulas.................................................................................... 6 Conceptos para la formulación con nombres a rangos................................................................................... 6 Formulación entre celdas y rangos ..................................................................................................................... 6 Validación de datos en celdas........................................................................................................................................... 7 Cómo asignar la validación de datos a una celda .............................................................................................. 7 ¿Cómo ingresar datos a celdas validadas? .......................................................................................................... 8 Análisis de las funciones lógicas SI, Y y O .................................................................................................................... 8 Análisis lógico de la función SI condicional...................................................................................................... 8 Función SI condicional simple ............................................................................................................................ 8 Función SI condicional anidada ........................................................................................................................ 10 Funciones Y y O.................................................................................................................................................. 12 La función BUSCARV reemplaza la función SI condicional ....................................................................... 13 Manejo óptimo de la información relacionando tablas.............................................................................................. 15 Definición de tablas............................................................................................................................................. 16 Relación de tablas ................................................................................................................................................ 17 Diagramas de relación de tablas ........................................................................................................................ 19 Relacionar tablas en Excel .................................................................................................................................. 20 Análisis de las relaciones..................................................................................................................................... 22 Un caso de relación "muchos a muchos" ........................................................................................................ 22 Algunas características de los manejadores de Bases de Datos.................................................................... 23 Cuando se requiere que un campo llave represente un rango de valores ................................................... 23 Sistemas de información................................................................................................................................................. 24 Fuentes de información de bases de datos ...................................................................................................... 24 Información obtenida mediante procesos internos en Excel .............................................................................. 24 Información obtenida desde fuentes de Datos Externas................................................................................... 26 Estructure bases de datos... ¡A su medida! ................................................................................................................... 27 Reconocimiento de la estructura de una base de datos ................................................................................. 27 Creación de informes de referencias cruzadas o tablas dinámicas........................................................................... 27 Conceptos previos a la elaboración de tablas dinámicas ............................................................................... 28 Pasos a seguir para la elaboración de tablas dinámicas .................................................................................. 30 Sugerencias para el manejo de tablas bases de datos ..................................................................................... 32 Valide los datos de entrada ........................................................................................................................... 32 Adicione campos calculados ........................................................................................................................... 33 Algo más sobre las estructuras de tablas bases de datos ............................................................................... 33 Creación de Gráficos Dinámicos................................................................................................................................... 36
Macros en Excel
CAPITULO 2: Introducción a las Macros y a Excel Visual Basic Las Macros en Excel........................................................................................................................................................ 40 ¿Qué sucede al abrir un archivo con Macros?................................................................................................. 40 Las Macros como listados y listados de instrucciones................................................................................... 41 Tres sugerencias para crear un buen listado de instrucciones ...................................................................... 42 Un primer ejemplo ........................................................................................................................................ 42 Un segundo ejemplo....................................................................................................................................... 43 Antes de grabar la Macro, ejecute una prueba de escritorio ......................................................................... 43 Grabe sus primeras Macros................................................................................................................................ 43 Grabación de la Macro del primer ejemplo..................................................................................................... 44 ¿Qué sucede al ingresar información a celdas? ................................................................................................ 45 Un primer acercamiento a la interfaz de Excel Visual Basic..................................................................................... 46 Dónde quedan grabadas las Macros? ............................................................................................................... 46 La ventana de Macros .................................................................................................................................. 46 La ventana de Visual Basic.......................................................................................................................... 47 Principales herramientas del editor de Visual Basic ....................................................................................... 47 Otros detalles de la interfaz Visual Basic ......................................................................................................... 48 Ejecutar las Macros Paso a Paso........................................................................................................................ 49 El Modo Interrupción ........................................................................................................................................ 50 El concepto de la programación dirigida a objetos .................................................................................................... 50 Un modelo general de objetos ....................................................................................................................................... 50 Objetos, propiedades y métodos....................................................................................................................... 51 Objetos únicos ............................................................................................................................................... 51 Objetos de grupo o colecciones......................................................................................................................... 51 La jerarquía de los objetos.................................................................................................................................. 52 El modelo de objetos en Excel ...................................................................................................................................... 52 Objetos, propiedades y métodos....................................................................................................................... 53 Planteamiento de un ejemplo.......................................................................................................................... 53 Objetos únicos ............................................................................................................................................... 54 Objetos únicos del grupo de objetos que se refieren a celdas o rangos................................................................. 54 Objetos de grupo................................................................................................................................................. 55 Objetos de grupo que se refieren a hojas.......................................................................................................... 56 Objetos de grupo que se refieren a celdas......................................................................................................... 56 Uso de la jerarquía de objetos de Excel ........................................................................................................... 57 Referencia implícita al libro activo ................................................................................................................. 57 Referencia implícita a la hoja de cálculo ......................................................................................................... 57 Algo más sobre propiedades.............................................................................................................................. 58 Asignación de valores a propiedades ................................................................................................................ 58 Tipos de valores que se asignan a las propiedades de objetos Excel........................................................... 59 Algo más sobre métodos.................................................................................................................................... 59 Sintaxis para asignar valores a argumentos de métodos ................................................................................ 60 Objetos que refieren a celdas y sus diferentes formas de expresarse ...................................................................... 61 Reconocimiento de los objetos de Excel que refieren una celda o rango .................................................. 61 Los objetos ActiveCell, Selection y Range ("...") ........................................................................................... 61 El objeto CurrentRegion (región actual) ........................................................................................................ 62 Reconocimiento de los objetos de Excel que refieren a una celda (o rango) a partir de la celda activa..................................................................................................................................... 63 Referencia a una celda (o rango) que se desvía un número conocido de filas y/o columnas a partir de la celda activa .............................................................................................................................. 63 Referencia a la última celda (de la derecha, de arriba, de la Izquierda o de abajo) a partir de la celda activa .............................................................................................................................. 64 X
Contenido
Tabla de resumen de los principales objetos empleados en Excel Visual Basic..................................................... 65 Algo más sobre la interfaz de Visual Basic .................................................................................................................. 66 Acerca de la ventana Examinador de Objetos ................................................................................................ 66 ¿Qué hacer cuando una Macro muestra un Mensaje de Error? ................................................................... 67 Errores en tiempo de ejecución........................................................................................................................ 67 Errores de sintaxis........................................................................................................................................ 68 Creación de funciones personalizadas fx...................................................................................................................... 69 Aspectos generales para la creación de cualquier función personalizada ................................................... 70 Estructuras condicionales en funciones personalizadas ................................................................................ 71 Ubique textos explicativos en sus funciones personalizadas ........................................................................ 72 Creación de funciones personalizadas más complejas................................................................................... 73
CAPITULO 3: Técnicas Detalladas de Interacción con Excel Otras formas de desplazamiento ................................................................................................................................... 78 Seleccionar una celda .......................................................................................................................................... 78 Seleccionar una celda en forma absoluta ......................................................................................................... 78 Desplazarse a una celda en forma relativa ..................................................................................................... 79 Digitar la coordenada de la celda o rango que se quiere seleccionar........................................................... 80 Seleccionar la "Última Celda" de: la Derecha, Arriba, la Izquierda o Abajo.............................................. 81 Líneas de desplazamiento con las teclas........................................................................................................... 83 Seleccionar Rangos con Límites Desconocidos.......................................................................................................... 83 Seleccionar un rango vectorial, donde la primera celda es la celda activa................................................... 83 Si el primer punto es un Rango Horizontal ................................................................................................... 85 Si el primer punto es un Rango Vertical........................................................................................................ 86 Selección de Regiones ......................................................................................................................................... 87 Selección de Rangos Múltiples .......................................................................................................................... 88 Otras formas de Copiar, Cortar, Mover y Pegar ......................................................................................................... 89 Detalles importantes de Pedado Especial .................................................................................................................... 91 Interacción con Hojas ..................................................................................................................................................... 91 Otras formas de seleccionar hojas .................................................................................................................... 91 Selección múltiple de hojas ................................................................................................................................ 92 Desplazamiento entre áreas del Libro de Trabajo ...................................................................................................... 93 Crear Vistas Personalizadas................................................................................................................................ 93 Mostrar las Vistas Personalizadas...................................................................................................................... 94 Otras formas de desplazamiento....................................................................................................................... 95 Personalización de las Barras de Herramientas........................................................................................................... 97 Crear una nueva Barra de Herramientas .......................................................................................................... 97 Insertar botones que ejecutan instrucciones de Excel................................................................................... 98 Insertar botones que ejecutan macros de Excel ............................................................................................. 98 Novedades importantes de MS-Excel 2002................................................................................................................. 99 Etiquetas Inteligentes.......................................................................................................................................... 99 Al copiar arrastrando ................................................................................................................................... 99 Al Pegar.....................................................................................................................................................101 Novedades importantes de MS-Excel 2003...............................................................................................................102 Creación de listas ...............................................................................................................................................103 Visualización alterna de listas...........................................................................................................................104 XI
Macros en Excel
CAPITULO 4: Técnicas avanzadas para el planteamiento, estructuración y auditoría de fórmulas Fundamentos en la formulación..................................................................................................................................108 Combinar expresiones con paréntesis ............................................................................................................108 Referencia a celdas dentro de fórmulas..........................................................................................................110 Algunos detalles sobre las funciones fx ......................................................................................................................112 Formas rápidas de crear y aplicar nombres a celdas y rangos en modelos ya formulados ................................114 Crear nombres de celdas y rangos en forma automática.............................................................................116 Reemplace en las fórmulas las referencias de celdas y rangos por sus correspondientes nombres......117 Formulación en lenguaje natural..................................................................................................................................119 Reglas para la formulación en Lenguaje Natural ..........................................................................................120 Optimización para la formulación de interseccines implícitas ...................................................................123 Ventajas y desventajas de la formulación en lenguaje natural vs. la utilización de nombres a celdas y rangos ................................................................................................................................................123 Técnicas y aplicaciones de la formulación matricial ................................................................................................124 Conceptos que fundamentan la formulación matricial................................................................................124 Formulación matricial simple...........................................................................................................................126 Aplicación de las fórmulas matriciales sobre celdas individuales....................................................................127 Formulación matricial compleja ......................................................................................................................128 Aplicación detallada de las fórmulas matriciales dentro de funciones fx..................................................129 Ejecución de consultas en tablas .................................................................................................................................132 Control de longitudes de rangos dentro de fórmulas...............................................................................................133 Control del punto final de un rango vectorial ...........................................................................................................133 Control de los puntos inicial y final de un rango vectorial......................................................................................134 Control de los puntos inicial y final de un rango matricial .........................................................................136 Control dinámico de los rangos de validación que permiten crear menús inteligentes......................................137 Control de la longitud del rango que alimenta la validación de datos en celdas......................................137 Control de múltiples menús de rangos que alimentan una validación de datos ......................................138 Herramientas que facilitan la revisión de fórmulas y sus posibles errores............................................................139 Opciones para auditar relaciones entre celdas ..............................................................................................140 Opciones para auditar errores .........................................................................................................................141 Errores plenamente identificados por Excel..................................................................................................142 Errores de lógica .........................................................................................................................................143 Opciones para revisión de validación de datos en celdas............................................................................143 Otras opciones ...................................................................................................................................................144
CAPITULO 5: Funciones de Excel y Visual Basic aplicadas a modelos financieros Herramientas y funciones financieras.........................................................................................................................148 Equivalencias entre montos de dinero ...........................................................................................................148 Equivalencias entre tasas de interés ................................................................................................................149 Creación de una función personalizada fx para el manejo de tasas anticipadas.......................................151 Un modelo de Evaluación Financiera para un Proyecto de Inversión ..................................................................152 Formulación del flujo de fondos .................................................................................................................................153 Formulación del flujo de fondos incremental ...............................................................................................155 Otra manera de plantear el flujo de fondos incremental.............................................................................156 Herramientas para la toma de decisiones financieras...............................................................................................157 XII
Contenido
La tasa interna de retorno, TIR..................................................................................................................157 La tasa interna de retorno modificada, TIRM.............................................................................................158 El valor presente neto, VPN ......................................................................................................................159 El periodo de recuperación de inversión ........................................................................................................161 Combine datos de entrada y obtenga reportes inmediatos de resultados ............................................................163 Visualice los resultados de posibles combinaciones de dos variables....................................................................163 Visualice los resultados de posibles combinaciones de muchas variables.............................................................164 Planteamiento de un modelo para la aplicación de Escenarios.......................................................................164 Tipos de reportes emitidos por los Escenarios................................................................................................167 Encuentre el dato de entrada que optimiza los resultados ......................................................................................171 Obtenga el valor de una variable de entrada que satisfaga un resultado exacto ......................................171 Optimización de recursos con Solver .........................................................................................................................172 Optimización de una inversión........................................................................................................................174
CAPITULO 6: Manipulación de listados Bases de Datos Algo más en el momento de ordenar..........................................................................................................................178 Cuando Excel no identifica los campos de una lista ....................................................................................178 Cuando se requiere ordenar por un criterio diferente al alfabético o al numérico..................................178 Cuando requiere ordenar por más de los tres criterios mostrados en la ventana Ordenar....................179 Plantee sus criterios de filtrado y consulte información de sus listas bases de datos..........................................180 Un paseo sobre las opciones de AutoFiltro ..................................................................................................180 Filtros personalizados en campos numéricos................................................................................................181 Filtros personalizados en campos no numéricos..........................................................................................181 La opción "Los diez más…" de los Autofiltros............................................................................................182 Porqué, cuándo y cómo usar los Filtros Avanzados.....................................................................................183 Limitante de los Autofiltros en campos no numéricos................................................................................184 Limitante de los Autofiltros en campos numéricos .....................................................................................186 Ejemplos de rangos de valores determinados por un límite.............................................................................186 Ejemplos de rangos de valores determinados por dos límites ..........................................................................187 Ejemplos de rangos de valores determinados por tres límites ..........................................................................187 Ejemplos de rangos de valores determinados por cuatro límites ......................................................................188 Visualice su lista base de datos agrupada y totalizada ..............................................................................................188 Planteamiento de un Subtotal simple .............................................................................................................189 Incremente el nivel de detalle de su información .........................................................................................190 Si desea hacer varias operaciones sobre un solo campo ..........................................................................................191 Convierta la información en bruto en potentes reportes dinámicos .....................................................................192 Analice la estructura de su Base de Datos y diseñe sus reportes ...............................................................192 Al ubicar más de un campo en el área de FILAS o el área de COLUMNAS ..........................................193 Si desea hacer varias operaciones sobre un solo campo..............................................................................193 Planteamiento de un prototipo para el análisis de ventas........................................................................................194 Edición de Tablas dinámicas ........................................................................................................................................196 Agrupe elementos de campo ...........................................................................................................................196 Ordene los datos de sus Tablas Dinámicas ...................................................................................................198 Filtre la información a visualizar en las tablas dinámicas ............................................................................202 Controle la visualización de los totales en sus tablas dinámicas.................................................................203 Detalles adicionales sobre edición de tablas dinámicas............................................................................................205 Visualizar detalles de un elemento de campo................................................................................................205 XIII
Macros en Excel
La ventana Opciones de tabla dinámica.........................................................................................................206 Preferencias en el momento de crear una tabla dinámica ...........................................................................206 Análisis de datos comparativos con tablas dinámicas ..............................................................................................208 Tabla dinámica que muestra resultados acumulados....................................................................................209 Tabla dinámica que muestra participaciones porcentuales..........................................................................209 Tabla dinámica que muestra el crecimiento...................................................................................................210 Un informe dinámico comparativo de un presupuesto...............................................................................210 Soluciones de análisis mediante campos calculados en tablas dinámicas .........................................................211 Inserción de elementos calculados en tablas dinámicas ...................................................................................212 Un informe de gráfico dinámico comparativo de un presupuesto ............................................................214 Síntesis de cálculos especiales en tablas dinámicas ...................................................................................................215
CAPITULO 7: Técnicas y herramientas de programación El manejo de variables...................................................................................................................................................218 Dimensionamiento de variables ......................................................................................................................218 Formas de asignar valores a variables.............................................................................................................219 Datos que provienen desde valores constantes................................................................................................219 Datos que provienen desde propiedades de Objetos de Excel .........................................................................219 Datos que ingresa el usuario mientras se ejecuta la Macro ............................................................................220 Variables tipo objeto (Object)..........................................................................................................................221 Declaración de variables tipo Object en forma general y en forma particular ..................................................222 Variables tipo rango (Range)............................................................................................................................222 Declaración forzosa de variables.....................................................................................................................223 Errores de Visual Basic que refieren a los tipos de datos ...........................................................................223 Concatenar textos, variables y propiedades de objetos................................................................................224 Cajas de mensaje (MsgBox) ..........................................................................................................................................226 Botones de control sobre las cajas de mensajes (MsgBox) .........................................................................227 Cajas de entrada de información (InputBox) ............................................................................................................230 InputBox como función Visual Basic.........................................................................................................................230 InputBox como método de la aplicación de Excel.......................................................................................232 Estructuras que controlan el flujo de la ejecución de las instrucciones ................................................................233 Estructuras que modifican el flujo del listado de instrucciones .............................................................................233 Estructura de control If-Then-Else................................................................................................................234 Estructura de control Select-Case ..................................................................................................................235 Instrucción GoTo de VBA...............................................................................................................................236 Instrucción Exit de VBA ..............................................................................................................................................238 Estructuras que repiten grupos de instrucciones......................................................................................................239 Estructura For-Next para repetir instrucciones un número conocidode veces.......................................239 Estructura Do Until-Loop para repetir instrucciones hasta que se cumpla una condición ..................240 Estructura para un recorrido simple...............................................................................................................242 Estructura para el recorrido entre dos rangos de diferentes hojas ............................................................243 Estructura para el recorrido entre dos rangos de la misma hoja................................................................245 Estructura For-Each-Next ...............................................................................................................................247 Aplicación For-Each-Next para colecciones de objetos tipo Range .........................................................247 Aplicación For-Each-Next para colecciones de objetos tipo Worksheet .................................................248 XIV
Contenido
CAPITULO 8: Ejemplos prácticos de Macros en tareas repetitivas Terminología, convenciones y métodos .....................................................................................................................252 Terminología ......................................................................................................................................................252 Convenciones para la elaboración de listados de instrucciones .................................................................253 Parámetros para la exposición de los ejemplos .........................................................................................................255 Macro que elabora la tabla de amortización de un crédito......................................................................................255 Objetivo general y definición de tareas ..........................................................................................................256 Tarea 1: Ingreso de datos constantes..............................................................................................................256 Listado de instrucciones...............................................................................................................................256 Optimización del código...............................................................................................................................257 Tarea 2: Ingreso de datos variables .................................................................................................................258 Tarea 3: Llenado de la tabla y formulación....................................................................................................259 Listado de Instrucciones ..............................................................................................................................259 Identificación de ciclos de instrucciones..........................................................................................................260 Optimización del código ..........................................................................................................................................261 Unión de las subrutinas en una sola Macro ...............................................................................................................262 Macro que carga un archivo plano y actualiza un informe......................................................................................264 Objetivo general y definición de tareas ..........................................................................................................265 Tarea 1: Captura del archivo plano y ubicación de la información............................................................266 Listado de instrucciones...............................................................................................................................266 Optimización del código...............................................................................................................................269 Tarea 2: Depuración de la información de acuerdo a la estructura requerida por la base de datos .....271 Listado de instrucciones...............................................................................................................................271 Optimización del código...............................................................................................................................274 Tarea 3: Actualización de la Tabla dinámica..................................................................................................275 Listado de instrucciones...............................................................................................................................275 Optimización del código...............................................................................................................................276 Ajuste final .........................................................................................................................................................278 Corrección de valores numéricos que se importan como texto .........................................................................278 Corrección de caracteres de miles en valores numéricos importados .................................................................279 Macro que organiza la estructura de un archivo importado....................................................................................281 Objetivo general y definición de tareas ..........................................................................................................281 Tarea 1: Instrucciones que no se requieren repetir ......................................................................................283 Optimización del código...............................................................................................................................283 Tarea 2: Instrucciones que se requieren repetir ............................................................................................284 Optimización del código...............................................................................................................................286 Macro que modifica la estructura de un informe......................................................................................................287 Objetivo general y definición de tareas ..........................................................................................................288 Tarea 1: Instrucciones que no se requieren repetir ......................................................................................290 Optimización del código...............................................................................................................................291 Tarea 2: Instrucciones que se requieren repetir ............................................................................................292 Optimización del código...............................................................................................................................294 Tarea 3: Instrucciones que se requieren después del ciclo ..........................................................................296 Ajuste final .........................................................................................................................................................297 XV
Macros en Excel
CAPITULO 9: Controles sobre las hojas y formularios Los controles sobre las hojas .......................................................................................................................................302 Dibujar controles sobre las hojas ....................................................................................................................302 Principales propiedades de los controles .......................................................................................................303 Propiedades que son comunes en los controles................................................................................................304 Propiedades particulares de los controles .......................................................................................................306 Principales eventos de los controles ...............................................................................................................306 Acceso al área de Visual Basic donde se almacenan los eventos................................................................307 Diseño de un formulario sobre la hoja.......................................................................................................................307 Creación de formularios desplegables ........................................................................................................................310 Un ejemplo para la planeación del diseño de un formulario ......................................................................310 Dibujo y diseño del Formulario ......................................................................................................................312 Desarrollo del código para el correcto funcionamiento del formulario................................................................313 En el evento de activar el formulario .............................................................................................................314 En el evento "después de actualizar" el cuadro combinado de las referencias (cboRefs)......................315 En el evento de cambiar el valor del botón de número para las cantidades (spnCant). .........................319 En el evento de cambiar el valor del cuadro de texto para las cantidades (txtCant). ..............................320 En el evento de hacer Click en el botón Cancelar (btnCancelar)...............................................................321 En el evento de hacer Click en el botón Aceptar (btnAceptar) .................................................................322
XVI
Capítulo 1: Nivelación de conceptos y técnicas de trabajo con Excel
Rango ( B2:B4 ) llamado Ubique listas de validación flexibles a posibles cambios Los rangos de celdas que alimentan la "validación de datos" por listas, deben ubicarse preferiblemente en una hoja diferente de donde se encuentra la "base de datos". También se recomienda que sean rangos con nombres, ya que si se modifican estas listas, es mucho más fácil redefinir estos nombres que modificar los nuevos rangos de validación de las celdas afectadas.
Rango (D2:D4) llamado VENDEDOR
PRODUCTO VENDEDOR PRODUCTOA VENDEDOR 1 ZONA 2 3 4 5
fx KARINA E D VENDEDOR PRODUCTO KARINA BISUTERIA ANGELA LABIAL LUCIA PERFUME B
C
BASE DE DATOS Hoja2
F
ZONA NORTE SUR
Rango (F2:F3) llamado
Hoja3
ZONA.
Cada uno de los rangos nombrados en la Hoja2, contiene la lista de validación de los correspondientes campos en la hoja BASE DE DATOS.
Fig 1.55
Para refrescar el tema de validación debe consultar las revise los temas explicados en las Figs 4.39 a 4.42.
Figs 1.13
y 1.14. Si desea profundizar al respecto,
Adicione campos calculados Si basado en los datos de la tabla de la Fig 1.44 requiere elaborar una tabla dinámica por periodos mensuales, es necesario adicionar un campo calculado (al que llamaremos MES) que devuelva el mes correspondiente a la fecha escrita en la columna B, como se muestra en la Fig 1.56. La función BUSCARV del campo MES devolverá el correspondiente mes, dependiendo de la fecha registrada en el campo FECHA. Revise el ejemplo de la Fig 1.27 para ampliar información respecto al uso de esta función. C2
fx =BUSCARV(MES(B2);Hoja2!$A$2:$C$13;2;0)
A B 1 CONSECUTIVO FECHA 03/01/2004 2 1 07/01/2004 3 2 07/01/2004 4 3 12/01/2004 5 4 15/01/2004 6 5 21/01/2004 7 6 21/01/2004 8 7 27/01/2004 9 8 10
C D E F G PRODUCTO CANTIDAD VR UNIT VENDEDOR MES =BUSCARV(MES(B2);Hoja2!$A$2:$C$13;2;0) 9000 KARINA BUSCARV(valor_buscado;matriz_buscar_en;indicador_columnas`[ordenado]) Ene PERFUME 23500 LUCIA Ene 750 Ene Ene Ene BUSCARV Ene Valor_buscado MES(B2) Ene
BASE DE DATOS Hoja2
Hoja2
Matriz_buscar_en Hoja3!$A$2:$C$13 Hoja3 Indicador_columnas 2 Ordenado 0
H ZONA NORTE NORTE SUR
? X =1
= {79411502”Carlos S Preferiblemente asigne nombres a las matrices que alimentan la función BUSCARV de su base =2 de datos y escríbalas en una hoja diferente. = FALSO
1
=
A
B
NUM MES
MES
C BIMESTRE
Busca un valor en la primera columna de la izquierda de una tabla y luego devuelve un valor Ene Bimestre 1 2 1 en la misma fila desde una columna especificada. De forma predeterminada, la tabla Feb se Bimestre 1 3 2 ordena de forma ascendente. Mar Bimestre2 4
Matriz_buscar_en
Resultado de la fórmula = Ene Ayuda sobre esta función
Fig 1.56
5
3 4
Abr Bimestre2
Es una tabla de texto, números o valores 6lógicos en los cuales se May Bimestre 3 5 Recuperan datos. Matriz_buscar_en puede7ser una referencia a un Jun Bimestre 3 6 Rango o un nombre de rango. Jul Bimestre 4 8 7 9 10 11 Aceptar 12 13 14 15
Ago Bimestre 4 8 Sep Bimestre 5 9 Oct Bimestre 5 10 Cancelar Nov Bimestre 6 11 Dic Bimestre 6 12
BASE DE DATOS Hoja2
Hoja3
Algo más sobre las estructuras de tablas bases de datos Una de las principales falencias de los profesionales administrativos respecto al concepto de bases de datos, es la dificultad para diferenciar entre una tabla con estructura de base de datos y un informe con una estructura que limita el análisis de información. 33
Macros en Excel
He querido de manera pedagógica exponer en un ejemplo, todo un proceso de manejo adecuado de la información. Para iniciar con conceptos claros, le sugiero que revise con cuidado los fundamentos de tablas bases de datos expuestos en la Fig 1.44 y los Conceptos previos a la elaboración de tablas dinámicas expuestos en las Figs 1.45 a 1.49. Además debe tener en cuenta que: - La herramienta de Excel más potente para el análisis de la información son las Tablas dinámicas. - El éxito de una tabla dinámica depende de la estructura de la base de datos requerida para su elaboración. En el siguiente ejemplo, nos vamos a concentrar en la estructura que se requiere para analizar las ventas de una empresa. Los datos correspondientes al primer trimestre del año 2.004 se muestran en la Fig 1.57. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
A No. Factura 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
B FECHA 03/01/2004 07/01/2004 11/01/2004 15/01/2004 19/01/2004 23/01/2004 27/01/2004 31/01/2004 04/02/2004 08/02/2004 12/02/2004 16/02/2004 20/02/2004 24/02/2004 28/02/2004 03/03/2004 07/03/2004 11/03/2004 15/03/2004 19/03/2004 23/03/2004 27/03/2004
C MES Ene Ene Ene Ene Ene Ene Ene Ene Feb Feb Feb Feb Feb Feb Feb Mar Mar Mar Mar Mar Mar Mar
D PRODUCTO LABIAL PERFUME PERFUME BISUTERIA BISUTERIA PERFUME LABIAL BISUTERIA BISUTERIA LABIAL PERFUME PERFUME LABIAL LABIAL PERFUME BISUTERIA BISUTERIA PERFUME LABIAL BISUTERIA BISUTERIA LABIAL
E CANTIDAD 1350 1500 750 1050 450 1150 750 1050 750 600 1200 850 900 1450 600 300 600 450 1050 450 300 450
F VR UNIT 9000 4500 10500 13500 2500 6000 12000 9000 7500 9000 3500 10500 6000 9000 1500 4500 7500 7500 10500 3000 6000 10500
G VR TOTAL 12150000 6750000 7875000 14175000 1125000 6900000 9000000 9450000 5625000 5400000 4200000 8925000 5400000 13050000 900000 1350000 4500000 3375000 11025000 1350000 1800000 4725000
H VENDEDOR Karina Angela Lucía Karina Karina Angela Karina Karina Angela Lucía Lucía Angela Karina Lucía Lucía Karina Angela Angela Karina Karina Angela Lucía
I ZONA Norte Norte Sur Norte Norte Norte Norte Norte Norte Norte Sur Norte Norte Norte Sur Sur Sur Norte Sur Sur Sur Sur
Al registrarse las ventas del mes de Abril (Abr), esta tabla crecerá únicamente en su número de filas, ya que esta estructura es de una base de datos que almacena información de ventas.
Fig 1.57
Supongamos que la base de datos de la Fig 1.57 representa el universo del total de la información capturada por la aplicación de facturación de dicha empresa. En este caso, la Fig 1.58 representa un reporte típico obtenido a partir de la misma. Cuando se registren las ventas del mes de Abril (Abr), este informe se ampliará una columna más... A
1 2 3 4 5 6 7 8 9 10 11 12 13
Fig 1.58
34
ZONA Norte Norte Norte Norte Norte Sur Sur Sur Sur Sur
B VENDEDOR Angela Angela Karina Karina Lucía Angela Karina Karina Lucía Lucía
C PRODUCTO BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA LABIAL LABIAL PERFUME
D
E Ene 0 2650 2550 2100 0 0 0 0 0 750
F Feb 750 850 0 900 2050 0 300 0 0 1800
G Mar 0 450 0 0 0 900 450 1050 450 0
... y también se ampliará una fila más, solo si aparece una nueva zona, un nuevo vendedor o un nuevo producto, o sea, un nuevo elemento de cualquiera de estos campos y no un nuevo registro de ventas.
Capítulo 1: Nivelación de conceptos y técnicas de trabajo con Excel
Es usual que se intente crear un informe de tabla dinámica como el de la Fig 1.59, a partir del reporte de la Fig 1.58, para lo que se intentaría distribuir en el Área de columnas de la tabla dinámica, los campos Ene, Feb y Mar (Enero, Febrero y Marzo) como se muestra en la Fig 1.60. El encabezado de columna de esta tabla dinámica, utiliza un campo llamado MES, que permite disgregar la información de cada mes. Esto se consigue con la estructura de base de datos mostrada en la Fig 1.57 y no con el reporte de la Fig 1.58 fx Suma de CANTIDAD
A3 A
1 2 3 4 5 6 7 8
Encabezado de fila Fig 1.59
B (Todas)
ZONA
C
MES Ene
Suma de CANTIDAD PRODUCTO BISUTERIA LABIAL PERFUME Total general
D
Mar
Feb 4050 4550 3075 11675
1200 2075 2050 5325
E
F
Abr 1500 2075 825 4400
2450 2050 3800 8300
Encabezado de columna
Total general 9200 10750 9750 29700
Para crear una tabla dinámica se deben tener campos que contengan los elementos que se quieren visualizar en los encabezados de filas y columnas. Para el caso de la tabla dinámica que se pretende construir a partir de la Fig 1.58, los datos Ene, Feb y Mar, no son elementos de ningún campo, ya que estos son campos como tal. Por ser campos, estos se visualizan a la derecha de la Fig 1.60. Asistente para tablas y gráficos dinámicos - diseño PAGE
Prod
Sales
COLUMN
ROW
Construya el informe de la tabla dinámica arrastrando los botones de campo de la derecha sobre el diagrama de la izquierda.
Prod Month
DATA
Recuerde que en esta área se visualizan los campos de la base de datos
ZONA
PAGINA
Ene
Feb
VENDED
Mar
PRODUC
PRODUC
Ene
FILA
DATOS
Feb
Mar
Ayuda
Fig 1.60
Aceptar
Cancelar
En la Fig 1.61 se muestra la tabla dinámica que resulta al colocar el campo Ene (Enero) en el área de columnas, o sea el mismo diseño de la Fig 1.60 pero sin los campos Feb y Mar. Tenga presente que esta tabla dinámica se creó a partir del reporte de la Fig 1.58. Si revisa el reporte de la Fig 1.58 observará que estos son los posibles valores almacenados en la columna B rotulada como Ene. fx
A2 A
Fig 1.61
1 2 3 4 5 6 7 8 9 10
ZONA
B (Todas)
C
D
E
F
G
Ene
PRODUCTO BISUTERIA LABIAL PERFUME Total general
750
2100
2550
2650 (En blanco) Total general
Lo más dramático de esto es que debido a este tipo de errores por desconocimiento de estructuras de bases de datos, muchos usuarios de Excel desisten de utilizar las tablas dinámicas para el análisis automático de la información. A cambio de esto y de manera recursiva, consiguen obtener el mismo informe de la Fig 1.59 pero de otra forma, que seguramente es mucho más extensa y demorada. En el cuarto ejemplo (llamado Macro que modifica la estructura de un informe) del capítulo 8, se expone una macro que modifica la estructura de la Fig 1.58, para poder elaborar cualquier reporte de Tabla dinámica. 35
Macros en Excel
Creación de Gráficos Dinámicos Los Gráficos dinámicos se crean a partir de tablas dinámicas. Los cambios que se efectúen en la base de datos afectan a la tabla dinámica y ésta a su vez, afecta a sus correspondientes gráficos dinámicos. Partiendo del hecho de que trabajó y entendió lo expuesto en las Figs 1.45 a 1.49 sobre Conceptos previos a la elaboración de tablas dinámicas, tendremos las herramientas suficientes para asimilar el proceso de creación de Gráficos dinámicos. En la Fig 1.62 se muestra el gráfico dinámico creado a partir de la tabla dinámica de la Fig 1.59. La creación de este gráfico se consigue simplemente haciendo click en el botón Asistente para gráficos de la barra de herramientas Estándar (siempre que se encuentre ubicado en una celda sobre la tabla dinámica) o indicándolo en el paso 1 del Asistente para tablas y gráficos dinámicos mostrado en la Fig 1.50. Esta área permite filtrar los elementos de cada campo que allí se ubique.
ZONA (Todas) Norte Sur 12000
En el área de leyenda, se visualizan los elementos del campo MES.
SUMA DE CANTIDAD
10000
La escala de estos valores la define el valor más alto del área de DATOS de la tabla dinámica, sin incluir los totales.
8000
MES Abr Mar Feb Ene
6000 4000 2000
En el eje X se visualizan los elementos del campo PRODUCTO.
0
BISUTERIA
LABIAL
PERFUME
PRODUCTO
Fig 1.62
Es posible que una vez que visualice el gráfico dinámico, requiera hacerle cambios. Estos se pueden hacer sobre el mismo gráfico dinámico como se muestra en la Fig 1.63, donde se intercambia la ubicación de los campos MES y PRODUCTO. Cada una de estas áreas corresponde a un área de la tabla dinámica, expuesta en la Fig 1.53.
ZONA (Todas)
14000
SUMA DE CANTIDAD
Al arrastrar un campo fuera del área de gráfico, éste será eliminado del mismo.
12000 10000
PRODUCTO PERFUME LABIAL BISUTERIA
8000 6000 4000 2000 0
Fig 1.63
36
Ene
Mar
Feb MES
Abr
Capítulo 1: Nivelación de conceptos y técnicas de trabajo con Excel
Una vez haga las modificaciones sobre el gráfico dinámico, estos cambios se visualizarán también en la correspondiente tabla dinámica. En el caso de los cambios hechos en la Fig 1.63, la tabla dinámica se visualizará como se muestra en la Fig 1.64. Los elementos ubicados en el área de fila de la tabla dinámica, se visualizan en el eje X del gráfico dinámico.
fx Suma de CANTIDAD
A3 A
1 2 3 4 5 6 7 8 9
B
ZONA
(Todas)
Suma de CANTIDAD MES Ene Feb Mar Abr Total general
PRODUCTO BISUTERIA 4050 1200 1500 2450 9200
C
D
E
LABIAL PERFUME Total general 4550 3075 11675 2075 2050 5325 2075 825 4400 2050 3800 87300 10750 9750 29700
Los elementos ubicados en el área de columna de la tabla dinámica, se visualizan en el área de leyenda del gráfico dinámico.
Fig 1.64
Habría mucho más que hablar acerca de gráficos dinámicos como también de tablas dinámicas. El objetivo de este primer acercamiento a estos temas es que Usted conozca el alcance de estas potentes herramientas y explore más al respecto para así aplicarlas a sus propios modelos y bases de datos.
37
Macros en Excel
Grabación de la Macro del primer ejemplo En el menú Herramientas seleccione Macro y a continuación Grabar Nueva Macro. Excel despliega la ventana mostrada en la Fig 2.4
1.
En esta área de escritura ingrese el nombre de la Macro. No deje espacios en blanco.
Grabar macro
? X
Las opciones: Este libro: graba la Macro en el libro activo y sólo se podrá ejecutar si éste se encuentra abierto. Libro de Macros personal: graba la Macro en una ubicación que le permitirá usarla cuando la requiera y desde cualquier archivo. Libro nuevo: graba la Macro en otro libro.
Nombre de la macro:
Mis_Datos_Absolutos
Si desea ejecutar la Macro con una combinación de teclas, escríbala en esta casilla. Se sugiere que escriba esta letra en mayúscula para que la combinación incluya la tecla SHIFT (o MAYÚS), y así no cancelar las combinaciones preestablecidas en Excel, que para este caso sería C TRL + A , que corresponde a la instrucción Abrir. Fig 2.4
Método abreviado:
Guardar macro en:
Ctrl+Mayús+ A
Este libro Libro en macros personal Libro nuevo Macro grabada el 12/05/04 Este libro
Descripción:
Aceptar
Cancelar
Escriba, si lo desea, un comentario que le describa la función de la Macro.
Asegúrese de visualizar la barra de herramientas Detener grabación antes de grabar la primera instrucción. Independientemente de que se encuentre visible o no, revise con detalle la Fig 2.5
2.
Ver
No pretenda detener el proceso de A1 grabación de la Macro con este botón. A Lo único que conseguirá es ocultar la 1 barra de herramientas. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Barra de herramientas
Estándar
Panel de tareas
Formato
Vistas personalizadas... fx
Auditoría de fórmulas
Cuadro de controles De
Datos externos Detener grabación
F
Dibujo Formularios
Detener grabación Detenga el proceso de grabación de la Macro con este botón.
Listo
Bordes
Observe que esta opción de este menú aparece únicamente mientras está grabando una Macro. Puede G confirmar esto desplegando este menú en un momento en que no esté grabando una Macro.
Hoja1 Hoja2 Grabando
Mientras está grabando una Macro, la barra de estado mostrará este texto.
Gráfico Imagen
Controle si desea desplazamientos relativos o absolutos Este botón funciona como un interruptor. En esta imagen se muestra en su estado inicial (desactivado), y significa que al ubicarse en una celda, se grabará una instrucción de selección absoluta de dicha celda. Aplica en el caso del primer ejemplo, donde las instrucciones 2, 4 y 6 del listado de instrucciones requieren la ubicación exacta de las celdas A1, A2 y A3, respectivamente.
Hoja3
Fig 2.5
Le sugerimos que no oculte la barra de herramientas Detener grabación. Tenga presente que: 44
Esta es una barra de herramientas que sólo se activa mientras se está grabando una Macro. El hecho de que cierre esta barra, NO detiene el grabador de Macros y en cambio sí la ocultará. Esto no es conveniente ya que la va a necesitar constantemente. Si cerró esta barra de herramientas, sólo podrá cargarla mientras esté grabando una Macro.
Capítulo 2: Introducción a las Macros y a Excel Visual Basic
3.
Ejecute una a una las instrucciones del listado de instrucciones: 1. 2. 3. 4. 5. 6. 7.
Seleccionar la hoja Hoja1 Seleccionar la celda A1 Escribir Richard Fernando Arias Seleccionar la celda A2 Escribir Carrera 18 No. 78-40 Of. 602 - Bogotá (Colombia) Seleccionar la celda A3 Escribir Tels.: 6219327 6219303
Mientras graba las instrucciones le sugerimos que: Confirme el ingreso de datos sin desplazarse Cuando ingresa un texto, número o fórmula a una celda, esta acción no quedará registrada hasta que no se confirme. Normalmente se confirma con la tecla ENTER, con la tecla TAB o haciendo click en cualquier otra celda. Estos tres procedimientos no son recomendables mientras se está grabando una Macro, ya que se grabará una instrucción adicional que selecciona una nueva celda. Se sugiere confirmar haciendo click en el botón .
A1
fx Richard Fernando Arias
B A 1 Richard Fernando Arias 2 3 4 5 Hoja1 Hoja2 Hoja3
Fig 2.6
C
Como las instrucciones 2 y 4 indican desplazamientos absolutos, no active este botón. Su opción por defecto graba desplazamientos absolutos.
D
De
No omita instrucciones al grabar las Macros Referente a las dos primeras instrucciones: 1. Seleccionar la hoja Hoja1 2. Seleccionar la celda A1, ... ...si en el momento de activar el grabador de Macros el cursor se encuentra en la celda A1 de la Hoja1, NO significa que puede omitir la grabación de estas dos primeras instrucciones. Las instrucciones que se obtienen mientras se graba una Macro no dependen de la ubicación previa del cursor, sino de las acciones que se realicen.
¿Qué sucede al ingresar información a celdas? Para entender qué es lo que sucede si mientras se graba una Macro se ingresa información a celdas y sus diferencias (en cuanto al código obtenido) si se hace con el botón de Referencia relativa (de la barra de herramientas Detener grabación) activado o desactivado, supondremos que estamos se está ingresando el texto "Hola" en la celda A1. En la siguiente tabla se muestran las instrucciones que se graban al confirmar el texto de diferentes maneras: INSTRUCCIONES GENERADAS
MÉTODO DE CONFIRMACIÓN
En forma absoluta
En forma relativa
De
De
La tecla ENTER
-
Escribe "Hola" en la celda activa (o sea A1) Selecciona la celda A2
-
Escribe "Hola" en la celda activa (o sea A1) Desplaza el cursor una fila abajo
La tecla TAB
-
Escribe "Hola" en la celda activa (o sea A1) Selecciona la celda B1
-
Escribe "Hola" en la celda activa (o sea A1) Desplaza el cursor una columna a la derecha
Click en C2 (por ejemplo)
-
Escribe "Hola" en la celda activa (o sea A1) Selecciona la celda C2
-
Escribe "Hola" en la celda activa (o sea A1) Desplaza el cursor una fila abajo, dos columnas a la derecha
Click en de la barra de Fórmulas
-
Escribe "Hola" en la celda activa (o sea A1)
-
Escribe "Hola" en la celda activa (o sea A1)
Tabla 2.1. Resultados obtenidos con las diferentes formas de confirmar el ingreso de información en celdas. 45
Macros en Excel
Errores de sintaxis Por lógica, estos errores únicamente suceden cuando se digita el código y no cuando se graban las macros. Algunos de ellos los detecta Visual Basic de manera inmediata, y otros no. Los casos de errores aquí expuestos son los más comunes cuando se está digitando código Visual Basic. Por la forma como Visual Basic los detecta, se pueden clasificar en dos grandes grupos: - Errores de sintaxis detectados en el momento de la ejecución - Errores de sintaxis detectados en el momento de digitarse el código
Errores de sintaxis detectados en el momento de la ejecución En la Fig 2.29 se muestran algunos ejemplos de errores de sintaxis no detectados por Visual Basic en el momento de digitarse el código sino en el momento de su ejecución. Tenga presente que durante la misma, algunos errores enviarán su propio mensaje describiendo brevemente lo que sucedió. Un nombre de algo que no dice nada. Podría ser una variable, que para el caso no está capturando ni asignando ningún valor. Visual Basic interpreta esto como si se tratara de una llamada a otra Macro cuyo nombre es "HOLA". Si en el momento de la ejecución de esta instrucción no existe otra Macro con este nombre, Visual Basic lo indicará en un mensaje. Microsoft Visual Basic - Fig 2.29.xls - [Módulo1 (Código)] Archivo
Edición
Ver
Insertar
Formato
Depuración
Ejecutar
Herramientas
?
(General)
Complementos
Ventana
Ayuda
Lín 1, Col 1
Errores_de_Sintaxis_1
Sub Errores_de_Sintaxis_1() HOLA
La falta de letras y los errores de ortografía. Para que Usted mismo detecte estos errores, sugerimos que digite todo el código con letras mayúsculas, ya que cuando se pase al siguiente renglón, Visual Basic modificará todo lo que esté bien escrito a mayúsculas y minúsculas.
RANGO("A1").SELEC Selection.COPI Range(a1).Select
Falta asignar las comillas a los textos que refieren a los nombres de las celdas o de la hojas. Esto no necesariamente es un error, ya que para el caso de Range(A1).Select, puede ser que se refiera a una variable llamada A1, cuyo valor sea la cadena de caracteres que identifica el nombre de una celda o de un rango.
Range("A1").Select.Copy Range("A1").Select = 500 Sheets(ew).Select If Range("A1") = "" Then Range("A1") = 10 End Sub
Fig 2.29
68
No se puede hacer referencia a dos métodos en una misma instrucción. Cada instrucción debe hacer referencia a un único método o a una única propiedad de un único objeto. Para este caso los métodos "Seleccionar" y "Copiar" se están escribiendo en una misma instrucción.
Las instrucciones sin sentido lógico. Lea detenidamente la instrucción y verá que no tiene sentido asignar un valor de 500 a una acción de seleccionar una celda.
No se indica una instrucción "End If" que cierre el condicional. Todas las instrucciones condicionales se abren con un IF..... y se cierran con una instrucción End If, encerrando entre ellas las instrucciones a ejecutar si se cumple la correspondiente prueba lógica.
Capítulo 2: Introducción a las Macros y a Excel Visual Basic
Errores de sintaxis detectados en el momento de digitarse el código Los errores de sintaxis expuestos en la Fig 2.30 se manifiestan en el momento de digitar el código. Cada vez que cometa un error como éstos, Visual Basic cambiará a rojo el color del código, acompañado de un mensaje. Microsoft Visual Basic - Fig 2.30.xls - [Módulo1 (Código)] Archivo
Edición
Ver
Insertar
Formato
Depuración
Ejecutar
Herramientas
?
(General)
Complementos
Ventana
Ayuda
Lín 1, Col 1
Errores_de_Sintaxis_2
Sub Errores_de_Sintaxis_2() varTASA=
RANGO("A1") =
Falta una expresión en algún lado de la igualdad. En una instrucción donde participa un signo igual (=), normalmente es porque se va a asignar un valor a un objeto o a una variable. En el caso de que no se escriba nada al lado opuesto del signo, Visual Basic mostrará un error indicando que se esperaba una expresión. Falta escribir una parte del condicional. Al final de una prueba condicional se debe utilizar una instrucción Then (Si ... entonces) para indicar lo que se debe hacer si se cumple dicha condición.
IF ACTIVECELL="" Sheets("Ho ja1”).Select ""
Se corta una instrucción en dos renglones. Es muy frecuente que se presione la tecla ENTER cuando el cursor se encuentra en la mitad de una instrucción ya escrita, partiendo la misma en dos renglones. Visual Basic envía un mensaje muy personalizado para cada caso.
End Sub
Fig 2.30
Creación de funciones personalizadas fx El asistente de funciones fx tiene definida una gran cantidad de funciones, que a su vez están clasificadas por categorías, según su aplicación. Mediante Visual Basic, Usted puede crear sus propias funciones ya sea para utilizarlas dentro de Excel, o inclusive, dentro de una macro, donde dicho cálculo se repita con cierta frecuencia. En esta sección daremos las pautas para crear funciones que permitan hacer cualquier tipo de cálculo. Por orden de complejidad, clasificaremos estas funciones de acuerdo a los tipos de datos que admiten sus argumentos para sus cálculos. Esta clasificación es: -
Funciones cuyos datos de entrada para sus argumentos no pueden ser rangos matriciales de valores. Por ejemplo, la función MES devuelve el mes de una fecha. Su único argumento (Núm_de_ serie) solicita un único número que representa una fecha. Si a este argumento le ingresa un rango de celdas, Excel ejecutará el cálculo sobre el valor de la primera celda de dicho rango.
-
Funciones cuyos datos de entrada para sus argumentos pueden ser rangos matriciales de valores. Por ejemplo, la función SUMA permite que en cualquiera de sus argumentos número1, número2,… número30, se ingrese un rango matricial de valores. Excel operará sobre todas las celdas de dicho rango.
Antes de entrar en algún ejemplo puntual, mostraremos aspectos generales para la creación de cualquier función personalizada. 69
Capítulo 3: Técnicas detalladas de Interacción con Excel
Objeto: Método: Explicaciones:
Range("B2,D2:D8,F2,H2:H8") Select y Activate -
y
Range("H2")
La explicación de la primera instrucción es igual a la de la Fig. 3.1, excepto porque se trata de un rango múltiple. La segunda instrucción Range("H2").Activate se genera una vez que se hace el segundo barrido del rango múltiple, modificándose cada vez que se hace un nuevo barrido. Como al final debe quedar activa una celda del rango múltiple, ésta será la primera celda del último rango seleccionado.
En el ejemplo de la Fig. 3.19 se pueden hacer los barridos de los rangos verticales con CTRL + SHIFT + FLECHA ABAJO después de seleccionar la primera celda de cada rango vertical. Si hace el ejercicio, observará que durante toda la selección deberá mantener activa la tecla CTRL, ya que ésta se usa tanto para el proceso de selección múltiple, como para el proceso de barrido de cada rango vertical.
Otras formas de Copiar, Cortar, Mover y Pegar Las técnicas explicadas en esta sección aplican en todo el ambiente Windows y en todas sus aplicaciones. Lo mismo que se va a hacer sobre celdas y hojas de Excel, funciona sobre bloques de texto en Word, sobre archivos y carpetas en el explorador de Windows, sobre diapositivas e imágenes de Power Point o sobre mensajes de OutLook. Puede ensayar hacer lo mismo en cualquier procedimiento de estas aplicaciones o de otras, siempre que esté interactuando con un objeto de la misma. Para mover una celda...
A
1 2 3 4 5 6 7 8 9
Para mover un rango...
Para MOVER el contenido de una celda o de un rango de celdas, simplemente arrastre el ratón hasta la celda destino cuando el cursor muestre las cuatro flechas en la punta de la flecha blanca. B
C
América
A
Click sostenido
América B6
Fig 3.20
Para copiar una celda...
A
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
B 1 2 3
C
Click sostenido
1 2 3 B6:B8
Para copiar un rango...
Para COPIAR, ejecute la misma acción que en el caso anterior pero manteniendo presionada la tecla CTRL. Se podrá dar cuenta que al presionar la tecla CTRL aparece un signo más (+) en la parte superior derecha de la flecha blanca. B
América
Click sostenido
América B6
A
C
+
1 2 3 4 5 6 7 8 9
B 1 2 3
1 2 3 B6:B8
C
Click sostenido
+
Fig 3.21
89
Macros en Excel
Si el rango destino a donde va a mover o a copiar se encuentra ubicado en otra hoja, presione la tecla ALT mientras ubica el cursor sobre la etiqueta de dicha hoja. ... lo mismo pasa con otros objetos como las hojas: Para mover una hoja...
Para copiar una hoja... Cuando se copian hojas también se visualiza el signo mas (+).
Esta flecha indica la nueva posición de la hoja.
Click sostenido
Click sostenido
Fig 3.22
En otro caso, se puede requerir mover el contenido de una celda (o de un rango de celdas) a un área determinada de otro libro, para lo que tendrá primero que ubicar los dos libros en la misma ventana de Excel, y después arrastrar con click sostenido, como se explica en la Fig 3.23. Puede visualizar varias ventanas de un mismo libro si previamente ha creado más ventanas de visualización del mismo, con la opción Nueva ventana. Microsoft Excel - Fig 3.23 Archivo
Ver
Edición
Insertar
Herramientas
Formato
Venntana tana Datos Ve
?
Escriba una pregunta
Nueva ventana Ocultar
10
Arial C2
Organizar
1 Fig 3.23
1
Mosaico
2 Libro1
Fig 3.23 A
?Organizar vent...
100%
Organizar...
Horizontal
Libro1 B
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4
Hoja1
Hoja2
D
E
F
A
B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
C 1 2 3 4
C2:C5
D
Vertical E Cascada Aceptar
Hoja1
Hoja3
Hoja2
Hoja3
Click sostenido Al igual que en la Fig 3.22, debe presionar la tecla ALT, en el instante de ubicar el cursor sobre la hoja de destino a donde requiere mover o copiar el rango original
90
Cancelar
Esta ventana permite modificar el diseño de visualización de los archivos abiertos.
Alt
Fig 3.23
F
Ventanas del libro activo
Macros en Excel
Cajas de entrada de información (InputBox) Las cajas de entrada de datos existen en la mayoría de los lenguajes de programación. Estas se diseñaron pensando en que los usuarios suministren información mientras se ejecuta un programa. En general, el leguaje de programación Visual Basic for Application (VBA), contiene funciones que son comunes a todas las aplicaciones que permiten trabajar con macros (como Word, Excel, Power Point, Access, ...). Por ejemplo, la función MsgBox, tiene la misma estructura desde cualquier aplicación VBA. En otros casos, VBA ha modificado algunas de las funciones originales de Visual Basic y las ha adaptado a la estructura del modelo de objetos de cada aplicación. Estas herramientas se manejan como métodos de los correspondientes objetos Application. Por ejemplo, el método Goto de la aplicación de Excel (cuyo código se obtiene grabando la acción expuesta en la Fig 3.5) que difiere de la función Goto de Visual Basic, explicada en la Fig 7.20. Otro ejemplo es el método InputBox de la aplicación Excel que permite mediante su argumento Type controlar el tipo de dato que se quiere capturar desde dicha caja de diálogo. A diferencia, la función InputBox de VBA (como se explica a continuación), solamente recibe cadenas de caracteres.
InputBox como función Visual Basic La función InputBox de Visual Basic despliega una ventana de diálogo que permite capturar información y devolverla como cadena de caracteres. Mientras esto sucede, la Macro se interrumpe hasta tanto el usuario no seleccione uno de los botones Aceptar o Cancelar. En un primer ejemplo, retomaremos lo explicado en la Fig 7.1, donde la variable MiVariable almacena el nombre del usuario. En la Fig 7.12 se detalla la sintaxis Visual Basic de esta instrucción. Este argumento permite configurar un valor que se mostrará por defecto cada vez que se despliegue la ventana.
Estas opciones controlan la posición en sentido horizontal y vertical que tendrá la ventana del InputBox. Si éstos se omiten, queda centrada. Si se les asigna el valor cero (0), ubicarán la ventana en la esquina superior izquierda de la pantalla.
Al igual que la función MsgBox, el único argumento obligado es Prompt.
Ejemplo_de_InputBox
(General)
Sub Ejemplo_de_InputBox () MiVariable = InputBox( Ingrese su Nombre , End Sub
Mi Nombre )
InputBox(Prompt, [Title], [Default],[XPos],[YPos],[HelpFile], [Context])As String
Este término al final de la ayuda significa el tipo de dato que la función le pasará a la variable. Para este caso será de tipo String. Igual que la función MsgBox, estos argumentos permiten manejar archivos de ayuda debidamente indexados. Este tema no se tratará por estar fuera del objetivo de este Libro.
Fig 7.12
El término As String de la función InputBox, indica que lo que se ingrese en la caja de diálogo se interpretará como una cadena de caracteres. En el caso del InputBox como método, se tiene un argumento adicional llamado Type en donde el ususario define el tipo de dato que esta función asignará a la variable, como se explica en la Fig 7.16. 230
Capítulo 7: Técnicas y herramientas de programación
De la Fig 7.13 a la 7.15 se exponen los aspectos a tener en cuenta al ingresar valores numéricos utilizando la función InputBox. En la Fig 7.13 se muestra la primera parte de la Macro, donde se capturan valores utilizando la función InputBox, y se hace una operación en Visual Basic con ellos. El resultado de la misma se almacena en una variable que al final se muestra en una caja de mensajes MsgBox. Al capturar valores numéricos con InputBox, esta función los devuelve como cadena de texto. Operaciones_con_cadenas_de_caracteres_de_InputBox
(General)
Sub Operaciones_con_cadenas_de_caracteres_de_InputBox() VarCANTIDAD = InputBox( Ingrese la Cantidad ) VarVR_UNITARIO = InputBox( Ingrese el Valor Unitario )
Para comprobar que son cadena de texto, basta con ubicar el cursor encima de cada variable mientras ejecuta la Macro paso a paso. Los Cuadros de inspección rápida muestran los valores de las variables entre comillas (""), indicando que son cadenas de caracteres
Microsoft Excel Ingrese la Cantidad
Aceptar
Microsoft Excel 40
Cancelar
Ingrese el Valor Unitario
Aceptar Cancelar
2500
VarVR_TOTAL = VarCANTIDAD * VarVR_UNITARIO VarCANTIDAD= 40 VarVR_UNITARIO= 2500
Cuadro de inspección rápida Microsoft Excel
MsgBox VarVR_TOTAL
100000
VarVR_TOTAL= 100000
Aceptar
Una forma práctica de mostrar valores de variables mientras se prueban las Macros es utilizando la función MsgBox.
Visual Basic permite hacer operaciones con estos valores. Observe que el MsgBox muestra el valor sin comillas (""), mientras que el Cuadro de inspección rápida lo muestra como lo que es, o sea una cadena de texto.
Fig 7.13
Continuando la Macro de la caracteres) a celdas.
Fig 7.13
en la
Fig 7.14,
se pasan los valores de las variables (que son cadenas de
(General)
Operaciones_con_cadenas_de_caracteres_de_InputBox
Sub Operaciones_con_cadenas_de_caracteres_de_InputBox()
fx 1 2 3 4
A Cantidad Vr Unitario Vr Total
B 40 2500 10000
VarCANTIDAD = InputBox( Ingrese la Cantidad ) VarVR_UNITARIO = InputBox( Ingrese el Valor Unitario ) Igual que en la Fig 7.13, se puede comprobar que VarVR_TOTAL = VarCANTIDAD * VarVR_UNITARIO MsgBox VarVR_TOTAL el tipo de dato almacenado en las variables son Range( B1 ) = VarCANTIDAD VarCANTIDAD= 40 Range( B2 ) = VarVR_UNITARIO VarVR_UNITARIO= 2500
cadena de texto, ya que los Cuadros de inspección rápida que se despliegan, muestran sus valores entre comillas "". Al pasar estos valores a celdas, Excel los evalúa y los convierte en números. Lo mismo sucede con las fechas y con los valores porcentuales.
Range( B3 ) = VarCANTIDAD * VarVR_UNITARIO End Sub
Fig 7.14
231
Macros en Excel
Es importante aclarar que existe un método Goto de la aplicación de Excel que desplaza la ubicación del cursor a la celda que se indique en su argumento Reference, como se muestra en la Fig 3.5. Es por esto que si consulta la palabra GoTo desde la ayuda de Visual Basic, ésta le preguntará por cuál opción desea averiguar. Esto lo hace mediante la siguiente ventana: Ayuda contextual Se han encontrado varias instancias de la palabra seleccionada. Selecciones un tema y haga click en Ayuda. Biblioteca
Objeto
VBA Excel
GoTo GoTo
Ayuda Cancelar
Tema de Ayuda
Instrucción Exit de VBA Esta instrucción hace que la secuencia de instrucciones salga de una estructura o bloque de instrucciones. Su sintaxis es: Exit Nombre_del_Bloque
Entendamos como bloques a líneas de código Visual Basic diseñadas para agrupar listados de instrucciones. A nivel de código, existe una línea que abre o inicia un bloque y otra que lo cierra o finaliza. Un ejemplo sencillo de bloque es una subrutina, ya que ésta agrupa todas las instrucciones de una Macro, como se muestra en el siguiente ejemplo: Sub Nombre_de_la_macro()
…… …… ……
End Sub
Es este caso, las instrucciones Sub Nombre_de_la_macro() y End Sub, son las que inician y finalizan la subrutina respectivamente. Otros casos donde aplican las instrucciones Exit, son los bloques For-Next y Do-Until explicados en las Fig 7.24, 7.25 y 7.26. Una instrucción como Exit Sub hace que el flujo de instrucciones se desplace hasta la instrucción End Sub. En un momento determinado no tendría sentido programar instrucciones posteriores a Exit Sub, a no ser que estas se encuentren dentro de un condicional. En el ejemplo de la Fig 7.23 se culmina la Macro en caso de que la celda C1 se encuentre vacía. (General)
C1 A
Ejemplo_Exit_Sub 1 2 3 4
Fig 7.23
Sub Ejemplo_Exit_Sub() If Range("C1") > 0 And Range("C1") 1000000 Then MsgBox "El valor de préstamo registrado es " & ActiveCell Else Exit Sub End If 'más instrucciones…… La instrucción Exit Sub se ejecuta dentro del 'más instrucciones…… '…… condicional sólo si la celda C2 se encuentra vacía End Sub o con valor menor o igual a cero (0).
También se puede utilizar la instrucción Exit, acompaña de los bloques Do, más adelante. 238
fx B Valor del Préstamo Tasa de interés Plazo
For
C
E 2,50% 12
y Function, que se explican
Capítulo 7: Técnicas y herramientas de programación
Estructuras que repiten grupos de instrucciones El objetivo de estas instrucciones es permitir que se repita un grupo de instrucciones un número determinado de veces. Dependiendo de la forma como se determina el número de veces que se repiten las instrucciones, se pueden agrupar así: - Cuando previamente se conoce el número de veces que se repetirán las instrucciones - Cuando no se conoce el número de veces que se deben repetir las instrucciones pero se tiene claro que se limita por el cumplimiento o no de una condición.
Estructura For-Next para repetir instrucciones un número conocido de veces Esta es una de las estructuras más empleadas en programación debido a que se implementó desde las primeras versiones de Basic. Su sintaxis es: For Variable = Valor_de_inicio To Valor_final
…… …… Next
En el ejemplo de la Fig 7.24, se utiliza el ciclo For para escribir los periodos de una tabla de amortización. El número de periodos es variable y el usuario lo ingresa mediante un InputBox. Lo ideal es que el usuario ingrese el valor del plazo, y que éste determine el número de veces que se deben repetir las instrucciones del bloque For...Next.
A6 A B C 1 Valor del Préstamo 20.000.000 2,50% 2 Tasa de interés 3 6 Plazo 4 Capital Interés 5 Periodo 6 1 7 8 9 10 11 12 13 14 15 For...Next.
fx 1 D
Sub Ejemplo_For_Next() Range("C3") = InputBox("Ingrese el plazo") Microsoft Excel
Saldo
Esta instrucción garantiza la ubicación correcta de la celda activa, requerida antes de iniciar el bloque
Ingrese el plazo
Range("A6").Select For X = 1 To 12 ActiveCell = X
X=1
Aceptar Cancelar
6
ActiveCell.Offset(1, 0).Select Next End Sub
Esta instrucción se encarga del desplazamiento a la celda activa, requerida para el siguiente ciclo. Fig 7.24
Ejemplo_For_Next
(General)
El valor de la Variable X inicia con el Valor_de_inicio, uno (1), y, por comportamiento propio del ciclo For...Next, se va incrementando en uno (1) en cada ciclo. Este valor se asigna a la celda activa que, para el primer ciclo, es A6, para el segundo ciclo será A7, para el tercero A8 y así sucesivamente.
Las instrucciones que se encuentren entre el For y el Next, se repetirán el número de veces indicado por el Valor_final, que en el ejemplo de la Fig 7.24, es el valor constante 12. Si bien el InputBox de la Fig 7.24 descarga el número de periodos de la tabla de amortización en la celda C3, este valor no se está utilizando como Valor_final del ciclo For-Next. Esto se corrige en la Fig 7.25. 239
Capítulo 7: Técnicas y herramientas de programación
Después de tener la estructura de recorrido se debe ingresar el código que ejecute una acción sobre cada celda recorrida. Este código se debe ingresar en las líneas señaladas con el texto 'más instrucciones (sin importar cuántas líneas sean) de la figura anterior. Es importante que cualquiera que sea la acción (o acciones) sobre cada celda, al final no se pierda la ubicación de la celda activa ya que esto desviaría el recorrido. En un ejemplo que complemente lo anterior suponga que desea resaltar con fondo amarillo las referencias cuyas cantidades sean mayores a cinco (5). En este caso, la acción que se requiere ejcutar sobre cada celda recorrida es la de evaluar las cantidades de cada referencia y asignarles el color de fondo amarillo (a este color le corresponde el número seis (6) en Visual Basic) a las que cumplan con la condición planteada. Esto se consigue con el código de la Fig 7.29. Al finalizar la macro, se visualizan de fondo amarillo las referencias que cumplieron con la condición.
A2 A
1 2 3 4 5 6 7 8 9 10 11
REFERENCIA R01 R02 R03 R04 R05 R06 R07
(General)
fx R01 B CANTIDAD
C 5 6 3 2 7 9 2
Recorrido_simple
Sub Recorrido_Simple() Sheets("TEORICO").Select Range("A2").Select Do Until ActiveCell = "" If ActiveCell.Offset(0, 1) > 5 Then ActiveCell.Interior.ColorIndex = 6 End If ActiveCell.Offset(1, 0).Select Loop End Sub
TEORICO REAL
Fig 7.29
Estas tres instrucciones evalúan una condición por cada celda recorrida. Al ejecutarlas, se conserva la misma celda activa y, por lo tanto, no se afecta la estructura del recorrido.
La anterior estructura de recorrido tiene aplicación en macros que capturan información proveniente de archivos planos, que usualmente bajan desorganizados, por lo que se requiere hacer un barrido sobre toda la información para irla organizando registro por registro.
Estructura para el recorrido entre dos rangos de diferentes hojas Continuando con el ejercicio planteado en la Fig 7.27 se propone que se resalte la celda de la referencia que presente inconsistencias entre los listados de inventarios real y teórico. Igual que en las Figs 7.28 y 7.29, este caso, también requiere que primero resuelva lo referente al recorrido que debe hacer la macro en cada listado, para, después, plantear una estructura If-Then-Else que compare las cantidades de cada referencia en cada una de las listas. En la Fig 7.30 se muestra un listado de instrucciones en el cual, por cada referencia del inventario teórico, se recorren todas las referencias del inventario real. Se sugiere que los recuadros se lean según el orden de las instrucciones allí mostradas. 243
Macros en Excel
Las instrucciones 1 y 2 seleccionan la hoja y la celda donde se encuentra la primera referencia del inventario teórico: 1- Sheets("TEORICO").Select 2- Range("A2").Select En este momento debe capturarse en una variable la referencia escrita en la celda activa, para después buscarla en la hoja REAL. Para esto, requiere de la suguiente instrucción: 3- varREFERENCIA = ActiveCell Aunque la instrucción anterior no es indispensable para el recorrido como tal, sí se requiere para la segunda parte de la macro donde se comparará dicho valor con cada una de las referencias del listado de la hoja REAL. A2 A
1 2 3 4 5 6 7 8 9 10 11
REFERENCIA R01 R02 R03 R04 R05 R06 R07
fx R01 B CANTIDAD
A2 A
C 5 6 3 2 7 9 2
1 2 3 4 5 6 7 8 9 10 11
REFERENCIA R01 R02 R03 R04 R05 R06 R07
TEORICO REAL
B CANTIDAD
fx instrucción R01 La 8 desplaza la celda activa una fila abajo. Esto seChace con el ánimo de ubicar el mismo punto de referencia con que debe iniciar el siguiente ciclo de 5 instrucciones repetitivas. 6 8- ActiveCell.Offset(1, 0).Select 2
2 7 10 0
La instrucción 6 recorre el listado de referencias de la hoja REAL hasta que encuentre una celda vacía: 6- Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop
TEORICO REAL
La instrucción 7 regresa a la hoja TEORICO. 7- Sheets("TEORICO").Select Fig 7.30
Las instrucciones 4 y 5 seleccionan la hoja y la celda donde se encuentra la primera referencia del inventario real. 4- Sheets("REAL").Select 5- Range("A2").Select En esta hoja se requiere buscar el valor almacenado en la variable varREFERENCIA.
El recorrido que ejecuta el listado de instrucciones de la Fig 7.30 serviría solamente para evaluar la primera referencia de la hoja TEORICO. Para evaluar la segunda referencia, basta con repetir desde la instrucción 3 hasta la 8. Lo mismo para evaluar la tercera referencia, la cuarta, y así sucesivamente, hasta que la celda activa (antes de repetir la instrucción 3 o después de repetir la instrucción 8) esté vacía. Esto se resuelve implementando otro ciclo Do Until-Loop, como se muestra a continuación: Sheets("TEORICO").Select Range("A2").Select Do Until ActiveCell="" varREFERENCIA = ActiveCell Sheets("REAL").Select Range("A2").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select
Estas instrucciones corresponden a las instrucciones 3 a 8 explicadas en la Fig 7.30. Se incluyeron en otro ciclo Do Until con el ánimo de repetirlas hasta que encuentre una celda vacía en la columna A de la hoja TEORICO.
Loop
Sheets("TEORICO").Select ActiveCell.Offset(1, 0).Select Loop
El nuevo ciclo Do Until-Loop garantiza el recorrido de la hoja TEORICO. Se dice que el ciclo Do Until-Loop de la instrucción 6 de la Fig 7.30, se encuentra anidado a este nuevo ciclo. Al igual que en el ejemplo de la Fig 7.28, al ejecutar esta macro, verá que lo único que hace es que por cada referencia de la hoja TEORICO, recorre el rango de referencias de la hoja REAL. Hasta este momento falta resolver las siguientes dos pruebas condicionales: 1- Si el valor almacenado en la variable varREFERENCIA existe en el recorrido de la hoja. 2- Si este valor existe, se debe evaluar si hay diferencias entre sus correspondientes cantidades. Para el ejemplo que estamos trabajando se propone que si ambas condiciones se cumplen, se asigne color amarillo al fondo de la celda de la correspondiente referencia en la hoja REAL. 244
Macros en Excel
Tarea 2: Instrucciones que se requieren repetir Como se expuso en la Fig 8.49, en la segunda tarea se ejecutan todas las instrucciones que se requieren repetir por cada mes que se encuentre registrado a la derecha del mes de enero. La lista de instrucciones se hace basándose en el análisis de las Figs 8.52 y 8.53. Lo primero que se debe hacer es seleccionar este rango. Para esto, deberá seleccionar en forma absoluta el rango A2:C2 para después utilizar la combinación CTRL + SHIFT + ↓
+
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Shift +
A ZONA Norte Norte Norte Norte Norte Sur Sur Sur Sur Sur
B VENDEDOR Angela Angela Karina Karina Lucía Angela Karina Karina Lucía Lucía
C PRODUCTO BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA LABIAL LABIAL PERFUME Cortar
Después se deberá ubicar en la celda donde se pegará el rango copiado. Partiendo de que, al iniciar, la celda activa es la celda A2, deberá utilizar la combinación CTRL + ↓ y después desplazarse un fila abajo en forma relativa.
D MES Ene Ene Ene Ene Ene Ene Ene Ene Ene Ene
+
Copiar Pegar
El rango seleccionado se deberá copiar.
A partir de esta celda, se pega el rango copiado en la acción anterior.
Hoja1 Hoja2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
A ZONA Norte Norte Norte Norte Norte Sur Sur Sur Sur Sur Norte Norte Norte Norte Norte Sur
B C VENDEDOR PRODUCTO BISUTERIA Angela PERFUME Angela BISUTERIA Karina LABIAL Karina LABIAL Lucía BISUTERIA Angela BISUTERIA Karina LABIAL Karina LABIAL Lucía PERFUME Lucía BISUTERIA Angela PERFUME Angela BISUTERIA Karina Cortar LABIAL Karina LABIAL Lucía Copiar BISUTERIA Angela Pegar Hoja1 Hoja2
D MES Ene Ene Ene Ene Ene Ene Ene Ene Ene Ene
Fig 8.52
De la misma manera que copió el rango de la Fig 8.52, deberá copiar el correspondiente rango del mes de febrero, como se muestra en la Fig 8.53. Después se deberá ubicar en la celda donde se pegará el rango copiado. Dicho rango siempre se pegará en la primera celda vacía de la columna E, por lo que deberá primero seleccionar en forma absoluta la celda E2.
Lo primero que se debe hacer es seleccionar este rango. Para esto deberá seleccionar la celda F2 y después utilizar la combinación CTRL + SHIFT + ↓. C PRODUCTO BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA LABIAL LABIAL PERFUME BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA
+
D MES Ene Ene Ene Ene Ene Shift Ene Ene Ene Ene Ene
+
El rango seleccionado se deberá copiar.
Fig 8.53
292
E Ene 0 2.650 2.550 2.100 0 0 0 0 0 750
F G Feb Mar 750 0 850 450 0 0 900 0 2.050 0 0 900 300 450 0 1.050 0 450 1.800 0
H
I
C PRODUCTO BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA LABIAL LABIAL PERFUME BISUTERIA PERFUME BISUTERIA LABIAL LABIAL BISUTERIA BISUTERIA
+
Cortar Copiar Pegar
D MES Ene Ene Ene Ene Ene Ene Ene Ene Ene Ene
F G Feb Mar 0 750 0 2.650 850 450 0 0 2.550 0 2.100 900 0 2.050 0 0 0 900 0 300 450 0 0 1.050 0 0 450 0 750 1.800 750 850 0 Cortar 900 Copiar 2.050 Pegar 0 300
E Ene
H
I
Después deberá utilizar la combinación CTRL + ↓ y desplazarse un fila abajo en forma relativa, para allí pegar dicho rango.
Capítulo 8: Ejemplos prácticos de Macros en tareas repetitivas
Adicionalmente, debe ubicar el cursor en la celda donde inicia el siguiente ciclo de instrucciones repetitivas, que, para el ejemplo, debe ser la celda que se encuentra una columna a la derecha de la celda donde se inició este primer ciclo. El siguiente es el correspondiente listado de instrucciones: Listado de Instrucciones
Sentencias grabadas
1- Seleccionar A2:C2
Range("A2:C2").Select
2-
Range(Selection,Selection.End(xlDown)).Select
CTRL
+ SHIFT + ↓
3- Copiar
Selection.Copy
4-
Selection.End(xlDown).Select
CTRL
+↓
5- Seleccionar (1↓)
ActiveCell.Offset(1, 0).Range("A1").Select
6- Pegar
ActiveSheet.Paste
7- Seleccionar F2
Range("F2").Select
8-
Range(Selection,Selection.End(xlDown)).Select
CTRL
+ SHIFT + ↓
9- Copiar
Selection.Copy
10- Seleccionar E2
Range("E2").Select
11- CTRL + ↓
Selection.End(xlDown).Select
12- Seleccionar (1↓)
ActiveCell.Offset(1, 0).Range("A1").Select
13- Pegar
ActiveSheet.Paste
14- CTRL + SHIFT + ←
Range(Selection,Selection.End(xlToLeft)).Select
15- Edición / Ir a… / Especial… / Celdas en blanco
Selection.SpecialCells(xlCellTypeBlanks).Select
16- Escribir "Feb" y CTRL + ENTER
Selection.FormulaR1C1 = "Feb"
17- Seleccionar F1
Range("F1").Select
18- Seleccionar (1→)
ActiveCell.Offset(0, 1).Range("A1").Select
Si tiene claro que en el primer ciclo se debe copiar el rango de cantidades del mes de febrero, en el segundo el del mes de marzo y así sucesivamente, se puede apreciar que no siempre la primera celda de dicho rango será la celda F2. Esto hace que se deba reemplazar la instrucción 7 del listado de instrucciones original, haciendo que la selección de esta primera celda sea en forma relativa. Lo anterior obliga a almacenar en una variable la celda de inicio de cada ciclo, modificando también la instrucción 17 del listado de instrucciones original. Como la celda donde inicia el rango a copiar (correspondiente a las cantidades de cada mes) siempre se encontrará una fila debajo de la celda donde inicia cada ciclo, se puede utilizar la referencia de dicha variable para llegar hasta ella. Para esto, se requiere incluir la siguiente sentencia al iniciar esta segunda tarea: Set varINICIO = Activecell
Como varINICIO es una variable tipo objeto, se debe declarar al inicio de la macro, con la sentencia: Dim varINICIO As Range 293
Macros en Excel
Para este ejemplo, esta instrucción asigna al TextBox2 los dos caracteres de la izquierda ("79"), de los actuales caracteres del mismo TextBox2 (o sea, "79a"). Esta instrucción, tan extensa, se debe hacer, debido a que no hay una instrucción Visual Basic que de manera directa borre el carácter de la derecha de un texto.
TextBox3
A NOMBRE
Felipe Gómez
CEDÚLA
79a
EDAD
25a
C
D
Private Sub TextBox2_Change() If Not IsNumeric(TextBox2) Then E F TextBox2 = Left(TextBox2, TextBox2.TextLength - 1) Left(String, Length As Long) EndREGISTRAR If End Sub Private Sub TextBox3_Change() If Not IsNumeric(TextBox3) Then TextBox3 = Left(TextBox3, TextBox3.TextLength - 1) End If Left(String, Length As Long) End Sub
{
1 2 3 4 5 6 7
B
Change
De la misma manera que se controla que los tipos de datos para el TextBox2 sean numéricos, se deben controlar los tipos de datos para el TextBox3.
La función Left de VBA devuelve la cantidad de caracteres (contados de izquierda a derecha) indicados en su segundo argumento Length as Long.
Para obtener el valor correspondiente a dicho argumento, se requiere restarle uno (1) a la longitud de la cadena de caracteres del TextBox3, o sea TextBox3.TextLength – 1.
Fig 9.10
Creación de formularios desplegables Llegó la hora de sincronizar el funcionamiento de un proceso de manejo de información. Todo lo que hemos hecho de programación, se debe ejecutar en el momento exacto y sólo si se cumplen las condiciones ideales que garanticen que no habrá errores. Los formularios no son simples adornos para ver agradable la interfaz de trabajo, son potentes herramientas de control de acceso y consulta de información. En un primer ejemplo, proponemos controlar el acceso de información a una base de datos de Excel que registra las entradas o salidas de un inventario. Para esto, se debe diseñar un formulario que maneje la información de la base de datos y que controle que no se cometan errores al registrar dicha información.
Un ejemplo para la planeación del diseño de un formulario Lo primero que se debe hacer, antes de escribir la primera línea de código, es definir cómo funcionará el formulario. Para esto, se recomienda que, antes de crear dicho formulario, se plantee en una hoja de borrador el funcionamiento de todos lo controles y los eventos en los que se ejecutarán las diferentes tareas. Para el ejemplo planteado, se propone la planeación del formulario en la Fig 9.11.
310
Capítulo 9: Controles sobre las hojas y formularios
En el evento "después de actualizar" correspondiente al cuadro combinado (ComboBox_AfterUpDate): Este es uno de los controles que más trabajo tiene ya que debe evaluar si es una nueva referencia, o si se trata de una existente. Si es nueva, debe solicitar mediante una caja de entrada, InputBox, la confirmación de la creación de una nueva referencia. De ser afirmativa la respuesta, se debe pedir la descripción de la misma. Si es una referencia existente, se debe consultar su descripción, y mostrarla en el correspondiente cuadro (donde se visualiza la palabra "Scanner" del ejemplo). Todo esto no se puede hacer en el evento Change de este control, ya que cada vez que digite un carácter de la nueva referencia, el programa evaluaría si ésta es nueva o no. En el evento que se active el formulario (UserForm_Activate), se debe: 1- Asignar el consecutivo para la numeración: Para esto se debe ubicar en la celda donde se encuentra el último consecutivo e incrementar su valor en uno (1). 2- Asignar la fecha: La función Date de Visual Basic, permitirá capturar la fecha del sistema.
En el evento en que se cambie el valor del cuadro de texto (TextBox_Change): Lo primero que se debe hacer es evaluar si es un dato numérico. Si se cumple esta condición, se debe asignar este mismo valor al control de número SpinButton que acompaña este TextBox; de lo contrario, se debe borrar el texto que se está asignando.
Registro de movimientos Número de consecutivo
Fecha de Hoy Lunes, 21 de abril de 2004
4
Descripción:
Referencia:
Scanner
CC4560 Garantía
60
Tipo de movimiento
días
Entrada
Cantidad
En el evento en que se cambie el valor del botón de número (SpinButton_Change): Debe asignar este mismo valor al cuadro de texto Textbox que acompaña este SpinButton.
60
En el evento de hacer click en el botón Aceptar (CommandButton_Click), se deben hacer las siguientes tareas:
Salida
CANCELAR
ACEPTAR
En el evento de hacer click en el botón Cancelar (CommandButton_Click): Este evento simplemente cierra el formulario. Si desea que la instrucción de este botón se ejecute también al presionar la tecla ESC, asigne True a la propiedad Cancel de este botón.
1- Ubicarse en la celda donde va a registrarse la información dentro de la base de datos. 2- Descargar en las correspondientes celdas, los valores contenidos en cada control del formulario. 3- Limpiar el formulario para ingresar nuevos datos. Todo esto lo debe hacer sólo si todos los datos del formulario se han diligenciado.
Fig 9.11
Recuerde que nos encontramos en el el proceso de la planeación del formulario, por lo que no requiere que éste se dibuje en Visual Basic. Usualmente esto se hace a "mano alzada". No pretenda dibujar el formulario todavía, esto se expone a continuación. Es importante insistir en la planeación del formulario antes de su elaboración. Usualmente, no se dedica tiempo a esta parte y, por esto, se termina haciendo más trabajo por correcciones sobre la marcha, que, a su vez, implican mayor posibilidad de errores y mayor dificultad en la revisión del código. Una vez definido el funcionamiento de cada control, procedemos a explicar el proceso de dibujo del formulario. 311
Macros en Excel
Dibujo y diseño del Formulario Dibuje controles sobre el formulario Este botón carga la barra de herramientas Cuadro de herramientas. Es posible que, mientras se encuentre visualizando la ventana de Propiedades, esta barra se oculte de forma temporal. Después de haber diseñado su formulario, se recomienda cerrar esta barra de herramientas, ya que se supone que no la va a necesitar más.
Lo primero que se debe hacer es insertar un formulario de usuario o UserForm. A partir de este instante, se visualizará un objeto más en la ventana Explorador de proyectos .
Microsoft Visual Basic - [Fig 9.12.xls - UserForm1 (UserForm)] Archivo
Edición
Ver
Insertar
Formato
Depuración
Ejecutar
Herramientas
Procedimiento Proyect -VBAProject
?
UserForm
x
Módulo
Cuadro de herramien...
VBAProject (Fig 9.14.xls) Microsoft Excel Objetos Hoja1 (Hoja1) Hoja2 (Hoja2) Hoja3 (Hoja3) ThisWorkbook Formularios UserForm1
Ayuda
Frame1
Archivo
VBAProject (Fig 9.11.xls) Microsoft Excel Objetos Hoja1 (Hoja1) Hoja2 (Hoja2) ThisWorkbook
Ventana
UserForm1
Módulo de clase
Funcres (FUNCRES.XLA)
Complementos Lín 1, Col 1
Puede modificar el tamaño de cualquier control, o del mismo formulario, desplazando los pequeños cuadros que se muestran alrededor del control seleccionado.
x
Controles
A Marco
Para dibujar los controles, simplemente arrástrelos desde el cuadro de herramientas hasta el formulario.
Mientras desplace el cursor sobre algún control, se desplegará el nombre del mismo. Fig 9.12
Asigne propiedades a sus controles Algunas de las características de los controles se definirán de forma permanente (por ejemplo: la propiedad Caption del Frame1 es "Número de consecutivo") y no en un evento de un control (por ejemplo, la asignación del número de consecutivo en el evento Activate del UserForm). En el primer caso, estas características se definirán desde la ventana Propiedades. Microsoft Visual Basic - [Fig 9.13.xls - UserForm1 (UserForm)] Archivo
Edición
Ver
Insertar
Formato
Depuración
Ejecutar
Herramientas
Procedimiento Proyect - VBAProject
UserForm
x
Número de consecutivo
Archivo
VBAProject (Fig 9.11.xls) Microsoft Excel Objetos Hoja1 (Hoja1) Hoja2 (Hoja2) ThisWorkbook
Complementos
Ventana
Fecha de Hoy Label2
Label1 Referencia:
Descripción: Label3
VBAProject (Fig 9.14.xls) Cuadro de herramien... Microsoft Excel Objetos Hoja1 (Hoja1) Controles Hoja2 (Hoja2) Hoja3 (Hoja3) ThisWorkbook Formularios UserForm1
x
Garantía
A
Tipo de movimiento
Cantidad
Entrada
días
Salida
CANCELAR
El código detrás del formulario Asegúrese de estar ubicado en el lugar donde se encuentra el formulario y su código. Para visualizar el formulario, debe hacer doble click en este ícono. Para visualizar el código del evento de un control, haga doble click en el respectivo control dibujado sobre dicho formulario.
312
x
Frame1 Frame Alfabética
Por categorías
(Name) BackColor BorderColor BorderStyle Caption ControlTipText Cycle Enabled Font ForeColor Height HelpContextID
Recuerde que la propiedad Caption de estos controles se modifica desde Excel Visual Basic, ya que se requiere que ésta cambie en determinados eventos (ver Fig 9.11).
ACEPTAR
Propiedades
Fig 9.13
Ayuda
Lín 1, Col 1
UserForm1
Módulo Módulo de clase
Funcres (FUNCRES.XLA)
?
Frame1 &H8000000F& &H800000012& 0 - FmBorderStyleNone Número de consecutivo 0 - FmCycleAllForms True Tahoma &H80000012& 36 0
Capítulo 9: Controles sobre las hojas y formularios
Mientras hemos dibujado el formulario, lo hemos manipulado en el modo diseño. En el momento de utilizarlo desde Excel, se visualiza en modo de ejecución o modo normal. Para hacer esto, basta con ejecutar la instrucción Visual Basic que se muestra en la Fig 9.14. Como se muestra en dicha figura, esto se hará en el evento de hacer click en el CommandButton dibujado sobre la hoja llamada "BASE DE DATOS". A este control se le ha asignado el nombre btnFormulario. Para dibujar este botón y modificar sus propiedades, revise las Figs 9.1 y 9.2. Este botón de comando activa el formulario UserForm1.
fx 20/04/2004
A5 A
B
C
D
E
F
G
Formulario 1 2 3 4 5 6 7
FECHA CONCEC REF 12/04/2004 1 CC4520 18/04/2004 2 CC4535 3 CC4525 20/04/2004 4 CC4560 21/04/2004
DESCRIPCION VIDA UTIL MOVIMIENTO CANT
Proyecto -VBAProject
x
Click
Funcres (FUNCRES.XLA)
BASE DE DATOS Hoja2
Hoja3
Listo
VBAProject (Fig 6.29.xls) Microsoft Excel Objetos Hoja1 (BASE DE DATOS) Hoja2 (Hoja2) Hoja3 (Hoja3) ThisWorkbook
Formularios UserForm1
Esta instrucción activará el formulario.
Tenga presente que el botón Formulario hace parte de la hoja en la cual se dibujó y no del formulario. A la ubicación de este código dentro de Visual Basic, se le llama el código detrás de la hoja. Fig 9.14
Desarrollo del código para el correcto funcionamiento del formulario Si retomamos lo que se ha hecho hasta el momento, se tiene que se ha planeado y dibujado el formulario. Antes de entrar a analizar el código, es importante que tenga presente que, para el ejemplo desarrollado, se han modificado los nombres de los controles, utilizando los prefijos sugeridos al comienzo de este capítulo. Estos se muestran en la Fig 9.15 lblFecha
lblConsecutivo cboRefs
lblDescripcion
Registro de movimientos Número de consecutivo
cboGarantia
Fecha de Hoy Lunes, 21 de abril de 2004
5
Impresora
CC4530 Garantía
30
obtEntrada obtSalida
txtCant
Descripción:
Referencia:
Tipo de movimiento
días
Entrada
Cantidad
btnCancelar
25
btnAceptar
Salida
CANCELAR
ACEPTAR
Fig 9.15
Falta desarrollar el código que permita el correcto funcionamiento del formulario mientras el usuario interactúa con él. Según lo propuesto en la Fig 9.11, a continuación se expone el código Visual Basic para los siguientes eventos: 313
View more...
Comments