curso excel avanzado

160
CURSO DE MICROSOFT EXCEL AVANZADO Eudo González Página 1 25/10/2022

Upload: manueleme66

Post on 28-Dec-2015

38 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: Curso Excel Avanzado

CURSO DE MICROSOFT EXCEL AVANZADO

Eudo González Página 1 19/04/2023

Page 2: Curso Excel Avanzado

TABLA DE CONTENIDO

Tablas dinámicas.....................................................................................................................5

Creación de una tabla dinámica.....................................................................................5Opciones de presentación de las tablas dinámicas........................................................9Gráficos dinámicos......................................................................................................20Importar Datos.............................................................................................................21

Excel Avanzado....................................................................................................................26

Rangos.........................................................................................................................26Rellenar y Autorellenar...............................................................................................26

Series..................................................................................................................27Series lineales.....................................................................................................27Series geométricas..............................................................................................28Serie cronológica................................................................................................28Autorellenar........................................................................................................29Límite.................................................................................................................29Tendencia...........................................................................................................29Llenar y autollenar con arrastre..........................................................................29

Funciones Excel...........................................................................................................30Funciones Financieras........................................................................................31Función pago......................................................................................................32Tasa....................................................................................................................33Nper....................................................................................................................33Pagoint................................................................................................................34Pagoprin.............................................................................................................34Pago.Int.Entre.....................................................................................................34Pago.Princ.Entre.................................................................................................34Función Valor Actual (Va).................................................................................34Vf........................................................................................................................34Vf.Plan...............................................................................................................35Funciones Matemáticas......................................................................................35Contar.Si.............................................................................................................35Funciones Lógicas..............................................................................................35Funcion O...........................................................................................................35Funcion Y...........................................................................................................35Funcion SI (CONDICIONALES)......................................................................35Funciones Estadísticas.......................................................................................37Contar Y Contara...............................................................................................37Operador De Texto.............................................................................................37Concatenar..........................................................................................................38Espacios..............................................................................................................38Extrae.................................................................................................................38Funciones Anidadas...........................................................................................39

Eudo González Página 2 19/04/2023

Page 3: Curso Excel Avanzado

Complementos.............................................................................................................40Buscar Objetivo...........................................................................................................42

Macros...................................................................................................................................43

Automatizar una tarea rutinaria...................................................................................44Desarrollar su propia macro........................................................................................44Como crear una Macro................................................................................................46Como ejecutar una macro............................................................................................46Macros.........................................................................................................................47

Niveles................................................................................................................47Tipos de estructuras de programación.........................................................................49

Estructuras De Los Programas...........................................................................49Las instrucciones condicionales.........................................................................50Utilizar bucles para repetir código.....................................................................50

Comandos Visual Basic para Excel.............................................................................51El primer punto de diferenciación......................................................................51El segundo punto................................................................................................51

Comandos Visual Basic mas usados...........................................................................52Barra de Herramientos de Visual Basic para Excel.....................................................52Que son Módulos.........................................................................................................54

Sub y End Sub....................................................................................................55Modulo de Visual Basic.....................................................................................57Escribiendo Una Macro Manualmente...............................................................57Activar Y Desactivar La Verificación De Sintaxis Para Los Módulos.............58Ejecutar una macro.............................................................................................58Grabar una Macro..............................................................................................59Copiar una Macro...............................................................................................60

Cajas de Dialogo........................................................................................................60Creación de una caja de dialogo.........................................................................61Utilización de botones en la creación de la caja de diálogo...............................61Ejecutar una macro desde un método abreviado................................................63Ejecutar una macro desde un botón o un control gráfico...................................63Ejecutar una macro desde un botón de la barra de herramientas.......................64Ejecutar una macro desde un área, zona interactiva o un objeto gráfico...........64

Algunas funciones de visual basic...............................................................................65Conceptos de Programación........................................................................................66

Reglas de asignación de nombres en Visual Basic............................................66Comprender la sintaxis de Visual Basic.............................................................67Comprender objetos, propiedades, métodos y eventos......................................69Tipos de Datos....................................................................................................71Declarar variables...............................................................................................72Comprender la vida de las variables..................................................................74Declarar constantes............................................................................................75Sub (Instrucción)................................................................................................76Function (Instrucción)........................................................................................79Llamar a procedimientos Sub y Function..........................................................83

Eudo González Página 3 19/04/2023

Page 4: Curso Excel Avanzado

Cómo hacer referencia a celdas y rangos...........................................................85Instrucciones................................................................................................................90

Do...Loop (Instrucción)......................................................................................90For Each...Next (Instrucción).............................................................................93For...Next (Instrucción)......................................................................................95Utilizar paréntesis en el código..........................................................................98Select Case (Instrucción)....................................................................................98Utilizar instrucciones With..............................................................................100Call (Instrucción).............................................................................................101Exit (Instrucción).............................................................................................102GoSub...Return (Instrucción)...........................................................................102GoTo (Instrucción)...........................................................................................103On Error (Instrucción)......................................................................................104Option Explicit (Instrucción)...........................................................................107Public (Instrucción)..........................................................................................107MsgBox (Función)...........................................................................................109

User Form..................................................................................................................111UserForm (objeto), UserForms (Colección)....................................................111Control Label...................................................................................................113Control TextBox...............................................................................................113Control ComboBox..........................................................................................114Control ListBox................................................................................................114

Ejemplos de Macros..................................................................................................115Añadir bordes gruesos......................................................................................115Centrar..............................................................................................................116Cambiar a Negrillas..........................................................................................116Escribir dias de la semana................................................................................116Ejemplo de Aplicación 1..................................................................................117Ejemplo de Aplicación 2..................................................................................119

Eudo González Página 4 19/04/2023

Page 5: Curso Excel Avanzado

TABLAS DINAMICAS

TABLAS DINÁMICASTABLAS DINÁMICAS

Una tabla dinámica es una hoja de cálculo interactiva que resume rápidamente grandes cantidades de datos usando el formato y los métodos de cálculo que se elijan. En esta tabla se podrán girar los encabezados de fila y columna alrededor del área de los datos principales para lograr distintas presentaciones de los datos fuente. Se puede actualizar la tabla dinámica a medida que éstos cambian.

CREACIÓN DE UNA TABLA DINÁMICA

Supongamos que tenemos un informe de ventas usted necesita saber total de ventas "x" mes. En la base en la cual reposa la información se puede realizar una tabla dinámica (en inglés "Pivot Table" y agrupar la información del total de las ventas por cada mes

También podremos lograr los totales por cada día, de tal forma que pueda observar y analizar los días en los cuales las ventas fueron regulares.

Si la base de datos en la cual tiene la información, cada venta tiene asociada a un vendedor, (o sucursal, son, etc.), podrá saber la gestión de sus vendedores, compararlos (la eficiencia) entre ellos, como ser las zonas en las cuales el producto presenta mas fortaleza, en donde se debe reforzar el mercadeo y la publicidad, etc.

Utilizando los registros diarios, puede conocer la cantidad de registros que procesa su departamento de contabilidad organizarlos por días, conocer dónde están los picos de procesamiento los cuales obligan a su personal a quedarse ciertos días, analizar y tratar mejor el flujo de información.

Esta es una base de datos que simula ser un informe de ventas:

Fecha Producto Cantidad Vr Unit Vr Total Vendedor Zona

07/03/1999 Gutis 1200 100 120,000 Agustin Sur

06/03/1999 MegaAcido 400 120 48,000 Julio Distrito Oriente

07/03/1999 Gutis 1200 100 120,000 Julio Distrito Oriente

02/03/1999 Krokanticos 1200 130 156,000 Karime Centro

06/03/1999 Krokanticos 1200 130 156,000 Karime Centro

07/03/1999 MegaAcido 800 120 96,000 Karime Centro

01/03/1999 Gutis 1200 100 120,000 LuzMa Distrito Sur

01/03/1999 MegaAcido 800 120 96,000 LuzMa Distrito Sur

05/03/1999 Monchitos 800 140 112,000 LuzMa Distrito Sur

07/03/1999 MegaAcido 800 120 96,000 LuzMa Distrito Sur

01/03/1999 MegaAcido 800 120 96,000 Sandra Distrito Oriente

02/03/1999 Gutis 800 100 80,000 Sandra Distrito Oriente

05/03/1999 Galleton 800 140 112,000 Sandra Distrito Oriente

07/03/1999 Krokanticos 800 130 104,000 Sandra Distrito Oriente

03/03/1999 MegaAcido 1200 120 144,000 Wilber Sur

Vamos a construir una tabla dinámica que nos agrupen los totales por producto

PASOS:

Eudo González Página 5 19/04/2023

Page 6: Curso Excel Avanzado

TABLAS DINAMICAS

1. vamos al menú DATOS - INFORMES DE TABLAS Y GRÁFICOS DINÁMICOS, nos aparecerá un cuadro como éste:

2. Aplicamos el botón "siguiente" y seleccionamos el rango de datos de la tabla dinámica.

3. Aplicamos el botón "siguiente" no aparecerá lo siguiente:

Eudo González Página 6 19/04/2023

Page 7: Curso Excel Avanzado

TABLAS DINAMICAS

Acá debemos indicar si la tabla dinámica base creada en la hoja donde están los datos o en una hoja nueva.

Para este caso seleccionar en una hoja de cálculo nueva.

4. Veremos que queremos una lista de campo, y tenemos varias áreas donde colocar los mismos. En nuestro caso en el área correspondiente a "campos de fila" colocaremos el campo "producto" y en el área de datos colocaremos "Vr total".

5. obtenemos la suma total de los bolívares por producto, pero debemos darle formato a los números presentados en la tabla dinámica.

6. seleccionamos el botón de configuración de campo para darle formato a los valores de la tabla dinámica.

Al aplicar el botón configuración de campo, nos aparece la siguiente ventana:

Eudo González Página 7 19/04/2023

Page 8: Curso Excel Avanzado

TABLAS DINAMICAS

En el campo “nombre” podremos cambiar el nombre que aparece. En el cuadro de selección "resumir por:" podremos seleccionar cual cooperación (suma, cuenta, promedio, etc.) bajo utilizar en nuestra tabla dinámica, en este caso utilizaremos "suma".

En el botón "número", especificaremos cual el formato de los datos que vamos utilizar nuestra tabla dinámica.

Eudo González Página 8 19/04/2023

Page 9: Curso Excel Avanzado

TABLAS DINAMICAS

La tabla dinámica tienen lugar resumir las ventas por producto va a quedar de la siguiente manera:

OPCIONES DE PRESENTACIÓN DE LAS TABLAS DINÁMICAS

Ahora bien, podemos cambiar la ubicación de los productos de las filas a las columnas y tendremos la siguiente presentación de la tabla dinámica:

Eudo González Página 9 19/04/2023

Page 10: Curso Excel Avanzado

TABLAS DINAMICAS

Para ello sencillamente arrastramos el campo producto del área de las filas a al área de columnas.

Podemos también saber la cantidad de ventas que se realizaron de cada uno de los productos, es decir la cantidad de negocios realizados por cada producto. Para ello arrastramos el campo "Vr Total” al área de columnas.

Seleccionamos el campo "suma de Vr Total", aplicamos el botón derecho y seleccionamos "configuración del campo".

En el seleccionamos la opción "cuenta" y cambiamos el nombre por "negocios realizados" obteniéndose la siguiente tabla dinámica:

Eudo González Página 10 19/04/2023

Page 11: Curso Excel Avanzado

TABLAS DINAMICAS

Podemos también arrastrar el campo "datos" al área de columnas y obtendremos la siguiente presentación de la tabla dinámica:

Y decíamos colocar primero el campo "negocios realizados" seleccionando el campo a mover, aplicamos "ordenar", y seleccionamos "mover al principio".

Eudo González Página 11 19/04/2023

Page 12: Curso Excel Avanzado

TABLAS DINAMICAS

Obteniéndose el siguiente resultado:

Ahora bien, vamos a reconfigurar la data para saber qué vendió cada vendedor. Arrastramos el campo "vendedor", hacia el área de las filas encima del campo "producto".

Eudo González Página 12 19/04/2023

Page 13: Curso Excel Avanzado

TABLAS DINAMICAS

Si arrastramos el campo "producto" a la lista de campos nos quedará la tabla así:

Para ordenar por el campo "vendedor" nos colocamos en la columna correspondiente al campo “vendedor” y presionamos el botón ordenar que se encuentra en la barra de herramientas.

Este es otro ejemplo, en donde obtenemos un reporte por Zonas, Vendedores y Productos: simplemente se arrastran los campos desde la lista de campos.

Eudo González Página 13 19/04/2023

Page 14: Curso Excel Avanzado

TABLAS DINAMICAS

Si desea eliminar total por vendedor procederemos de la siguiente manera: seleccionamos el campo "vendedor", botón derecho del ratón, y seleccionamos "ninguno", aceptar.

La tabla dinámica quedara así:

Eudo González Página 14 19/04/2023

Page 15: Curso Excel Avanzado

TABLAS DINAMICAS

La base de datos tiene datos por día, vamos a ver cuáles fueron los días que se vendió menos. Para ello arrastramos el campo de "fecha" y lo colocamos en el área de columna.

Podemos personalizar la fecha para ver el día de la semana, para ello seleccionamos el campo "fecha" y aplicamos el botón derecho del ratón y seleccionamos "configuración del campo".

Eudo González Página 15 19/04/2023

Page 16: Curso Excel Avanzado

TABLAS DINAMICAS

La tabla no quedará de la siguiente manera:

Vamos a calcular el porcentaje de participación de cada vendedor referido a las ventas totales. Para ello colocamos el campo "vendedor" en el área de filas, y el campo "Vr Total" en el área de datos dos veces.

Eudo González Página 16 19/04/2023

Page 17: Curso Excel Avanzado

TABLAS DINAMICAS

Seleccionamos el campo "un mar de Vr Total2" y aplicamos el botón derecho del ratón seleccionando la configuración del campo y luego activando el botón opciones.

En la casilla "mostrar datos como" seleccionando "% del total" presionamos el botón "aceptar".

La tabla dinámica nos quedaría así:

Directamente podemos seleccionar la columna "suma Debra", aplicamos la tecla F2 y editamos los nombres.

Eudo González Página 17 19/04/2023

Page 18: Curso Excel Avanzado

TABLAS DINAMICAS

Podemos también utilizar el botón "dar formato al informe", para ello seleccionamos nuestra tabla dinámica y aplicamos el botón mencionado seleccionando la plantilla de nuestro agrado.

Ahora bien vamos a sacar los totales diarios y los totales acumulados por día, para ello, vamos emplear la misma opción del ejemplo anterior, pero en vez de utilizar "% del total" emplearemos "total en" y escogemos como campo base "fecha”.

Quedando una tabla dinámica así:

Si arrastramos de la tabla de datos en insertamos el campo "producto" en el área de filas obtendremos los datos acumulados por producto.

Eudo González Página 18 19/04/2023

Page 19: Curso Excel Avanzado

TABLAS DINAMICAS

Y si cambiamos el campo "producto" por el campo "vendedor" tendremos lo siguiente:

Para obtener el porcentaje de participación con respecto al producto por cada día y al total general lo logramos cuando personalizamos el campo "total" seleccionando en el campo de la tabla dinámica "% de las filas".

Eudo González Página 19 19/04/2023

Page 20: Curso Excel Avanzado

TABLAS DINAMICAS

GRÁFICOS DINÁMICOS

En el ejemplo anterior vamos a arrastrarlo campos "zona, vendedor, producto" a la ventana de la lista de campos, obteniéndose la siguiente tabla dinámica:

Seleccionamos la tabla dinámica, y aplicamos el botón "asistente para gráficos" obteniéndose la gráfica de histograma de ventas. La gráfica se insertará en una hoja nueva.

Eudo González Página 20 19/04/2023

Page 21: Curso Excel Avanzado

TABLAS DINAMICAS

IMPORTAR DATOS

Cuando se requiere este análisis de datos que no pertenecen a Excel se toma la segunda opción del asistente.

En este caso el asistente pregunta el origen de los datos como se ve a continuación:

Eudo González Página 21 19/04/2023

Page 22: Curso Excel Avanzado

TABLAS DINAMICAS

En el caso de Microsoft Access, se pueden obtener datos fácilmente, a trabes de una de las tablas o consultas

Cuando se usa un archivo de tipo texto se debe importar la información a Excel para poder trabajarla. Si se intenta importarla desde este asistente no se podrá obtener correctamente como se ve en la vista previa.

Eudo González Página 22 19/04/2023

Page 23: Curso Excel Avanzado

TABLAS DINAMICAS

En este caso los datos se encuentran todos unidos, por lo cual debemos trabajarlos importándolos en columnas.

Para importarlos en columnas se ingresa por el menú ABRIR, submenú Archivo, asegurándonos de ver todos los archivos.

De allí se toma el archivo de texto y en seguida nos presenta el asistente para importar los datos.

Eudo González Página 23 19/04/2023

Page 24: Curso Excel Avanzado

TABLAS DINAMICAS

El origen del archivo se elige dependiendo del programa de donde vienen los datos. En tipo texto generalmente son de DOS u OS/2.

Se determina cual es el separador de los campos y se selecciona.

Todos los campos ingresaran en Excel en formato general, por lo cual en el tercer paso se puede definir, si es necesario, un campo específico con formato diferente.

Eudo González Página 24 19/04/2023

Page 25: Curso Excel Avanzado

TABLAS DINAMICAS

Al dar clic en el botón de terminar obtiene un archivo de Excel con la base de datos con la que se puede trabajar

Eudo González Página 25 19/04/2023

Page 26: Curso Excel Avanzado

EXCEL AVANZADO

EXCEL AVANZADOEXCEL AVANZADO

RANGOS

Los rangos en una hoja de cálculo son la selección de un conjunto de celdas. Una celda es el rango mínimo y una hoja de cálculo completa es el rango máximo. Los rangos pueden definirse de cualquier tamaño.

Para seleccionar un rango arrastre el puntero del ratón desde la celda superior izquierda hasta la celda inferior derecha del rectángulo de selección deseada; la región seleccionada aparecerá sombreada.

También puede seleccionar rangos presionando la tecla Shift y las teclas de flecha de su teclado, hasta sombrear la región deseada.

Al pulsar la tecla F8 y las mismas teclas de flecha, hasta sombrear la región deseada. También puede sombrear un rango de esta manera: ubíquese en la primera celda del rango, pulse la tecla F8, haga clic en el cuadro de nombre y digite la dirección de la celda inferior derecha del rectángulo.

Para seleccionar como rango una columna completa, haga clic en encabezado de la columna

De la misma manera, si desea seleccionar como rango una fila completa haga clic en el encabezado de fila

Para seleccionar el rango máximo, es decir, la hoja de cálculo completa, haga clic en el botón superior izquierdo de la hoja de cálculo conocido como “Zona Global”.

Para marcar Rangos no adyacentes, es decir, no continuos haga clic en una celda luego pulse la Tecla ctrl. y simultáneamente haga clic en otra celda. Por ejemplo ubíquese en la celda C10, mantenga presionada la tecla Ctrl. y haga clic sobre la celda C3 y de la misma manera haga clic en la celda F5.

RELLENAR Y AUTORELLENAR

Existen ocasiones en que se desea copiar la información de una celda hacia otras celdas que se encuentran en forma contigua a ésta, es decir, hacia arriba, abajo, izquierda o derecha de la celda. Cuando esto ocurre se puede realizar un llenado y/o un auto llenado.

Primero debe seleccionar la celda que desea copiar a las demás junto con toda el área donde se va a copiar el contenido.

Eudo González Página 26 19/04/2023

Page 27: Curso Excel Avanzado

EXCEL AVANZADO

Posteriormente se selecciona del menú “EDICIÓN” la opción “RELLENAR”. Según el área que esté seleccionada aparecerán activas o no las opciones.

SERIES

También se puede llenar una serie de datos en forma creciente sin necesidad de escribir cada uno de los datos. Al igual que en el ejemplo anterior, se debe seleccionar el primer valor junto con el resto de las celdas que se van a llenar, el contenido de la primera o primeras celdas en cada fila o columna serán usado como los valores iniciales de la serie.

Seleccione RELLENAR en el menú EDICIÓN y, a continuación, haga clic en Series, luego aparecerá la siguiente caja de diálogo:

Series en : seleccione si se llenan a través de las filas o columnas.

Tipo : Indique el tipo de progresión que se va a tener:

SERIES LINEALES

Microsoft Excel aumenta o disminuye los valores según un valor constante, basado en la diferencia entre los valores iniciales seleccionados.

Eudo González Página 27 19/04/2023

Page 28: Curso Excel Avanzado

EXCEL AVANZADO

Estos ejemplos indican que si su selección inicial es la indicada Excel llenará el resto de la selección con los datos de la columna Serie lineal extendida Por ejemplo:

SERIES GEOMÉTRICAS

Al crear una serie Geométrica si la casilla Tendencia está desactivada Excel multiplicará el valor inicial del rango por el valor que se encuentre en la casilla Incremento. El producto resultante y cada producto siguiente se multiplican a su vez por este mismo valor., Si la casilla Tendencia está seleccionada, el Incremento se ignora y se calcula una progresión geométrica calculada a partir de los datos que se encuentran seleccionados.

Eudo González Página 28 19/04/2023

Page 29: Curso Excel Avanzado

EXCEL AVANZADO

SERIE CRONOLÓGICA

Una serie de tiempo puede incluir incrementos de los días, semanas o meses que se especifiquen, o bien secuencias repetidas como días de la semana, nombres de meses o trimestres. Por ejemplo, las selecciones de tiempo iniciales de la siguiente tabla dan como resultado las series que se indican.

Seleccióninicial

Serieextendida

9:00 10:00, 11:00, 12:00

Lunes Martes, Miércoles, Nueve

Enero Febrero, Marzo, Abril, Mayo

Ene-96, feb.-96 Mar-96, abr.-96

15-ene, 15-feb. 15-mar, 15-abr.Abr. 1994, 1995

Abr.1996, 1997

AUTORELLENAR

Rellena las celdas en blanco de una selección con una serie basada en los datos incluidos en la selección. Si se selecciona esta opción, se ignorarán todos los valores en el cuadro Incremento y cualquier opción seleccionada en Unidad de tiempo.

LÍMITE

Seleccione un límite para indicar donde debe terminar la serie. Si el Límite se alcanza y aún existen celdas seleccionadas, la serie termina en ese punto.

TENDENCIA

Produce un ajuste en series lineales y una curva exponencial en series geométricas basados en los valores de la selección.

LLENAR Y AUTOLLENAR CON ARRASTRE

Otra forma de llenar y autollenar es utilizando el apuntador del ratón.

Coloque el puntero del ratón justo en la esquina inferior derecha de la celda, cuando el apuntador del ratón toma el aspecto de + cruz delgada

Eudo González Página 29 19/04/2023

Page 30: Curso Excel Avanzado

EXCEL AVANZADO

Con un clic sostenido se extiende hacia abajo o a la derecha dependiendo hacia donde vaya a realizar el llenado.

El resultado es el mismo, pero mucho más sencillo y rápido. A esta acción se le conoce como Autollenado y es equivalente a la acción Rellenar tratada anteriormente.

Si utiliza números con incremento, se seleccionan y se copian igualmente y tendrán un incremento como en la opción del menú.

Para que aparezca un menú rápido con las opciones de relleno, mantenga presionado el botón secundario del ratón mientras arrastra el controlador de relleno.

FUNCIONES EXCEL

Las funciones en Excel son fórmulas integradas que realizan una operación, pueden usarse de forma independiente o combinada con fórmulas de mayor tamaño.

Eudo González Página 30 19/04/2023

Page 31: Curso Excel Avanzado

EXCEL AVANZADO

El botón “Insertar Función” permite crear desde una fórmula muy sencilla hasta una fórmula muy compleja, al hacer clic sobre este botón obtendrá una lista de las funciones que posee Excel y una breve descripción de lo que realiza.

En Categoría de la función aparece una lista de todos los tipos de categoría que puede utilizar, por ejemplo, fórmulas financieras, de texto, lógicas y otras.

En la categoría Todas encontrará una lista de todas las funciones disponibles.

En la categoría Usadas recientemente aparece una lista de las últimas funciones utilizadas.

En Nombre de la Función, muestra la lista de las funciones según la categoría seleccionada.

En la parte inferior del cuadro Pegar Función aparece el formato de la función seleccionada y una descripción de lo que realiza.

Al seleccionar una función de la lista, Excel abrirá una nueva ventana donde solicita la referencia de los argumentos de la función. Entiéndase como argumentos los valores que utiliza una función para ejecutar las operaciones o cálculos.

El tipo de argumento que utiliza una función es específico para esa función. Los argumentos más comúnmente utilizados son: valores numéricos, valores de texto, referencias de celda, rangos de celdas, nombres, rótulos y funciones anidadas. Generalmente los argumentos necesarios para realizar dichas operaciones aparecen en negrilla, los demás son argumentos adicionales.

FUNCIONES FINANCIERAS

Las Funciones financieras ejecutan operaciones contables comunes, como determinar los pagos de un préstamo, el valor futuro o el valor neto actual de una inversión y los valores de obligaciones y bonos.

Eudo González Página 31 19/04/2023

Page 32: Curso Excel Avanzado

EXCEL AVANZADO

Los argumentos más comunes de las funciones financieras incluyen:

Valor futuro (vf): el valor de la inversión o del préstamo una vez realizados todos los pagos.

Número de períodos (Per): el número total de pagos o períodos de una inversión.

Pago: el importe pagado periódicamente en una inversión o Préstamo.

Valor actual (va): el valor de una inversión o préstamo al comienzo del período de inversión. Por ejemplo, el valor presente de un préstamo es el importe principal que se toma prestado.

Interés (interés): el interés o el descuento de un préstamo o una inversión.

Tipo (tipo): el intervalo en que se realizan los pagos durante el período de pago, como al comienzo o al final de mes.

Es importante tener claro esto para desarrollar las funciones.

FUNCIÓN PAGO

Calcula el valor de la cuota fija de un préstamo a una tasa de interés constante y termino fijo. Esto se resume en el concepto de Anualidad. Por ejemplo si desea calcular el valor de la cuota de un préstamo de $18.000.000 al 4% de interés mensual y con un plazo de 60 meses, realice lo siguiente:

Primero digite los datos dentro de una hoja de cálculo:

Ubíquese sobre la celda B4 que corresponde al lugar donde va a colocar el valor de la cuota.

Haga clic sobre el botón herramientas Estándar “Pegar Función” de la barra de Herramientas Estándar.

Elija la Categoría Financieras y Pago en Nombre de la Función.

Haga clic en el botón “Aceptar” y aparecerá una ventana como la siguiente:

Eudo González Página 32 19/04/2023

Page 33: Curso Excel Avanzado

EXCEL AVANZADO

En la casilla Tasa escriba la referencia de celda donde se encuentra el interés (B1). En la casilla Nper escriba la referencia de la celda donde se encuentra el número de

períodos(B3).

En la casilla Va escriba la referencia de celda donde se encuentra el valor del préstamo precedido de un signo menos (-) porque constituye un desembolso

En la casilla Vf es el valor futuro o saldo en efectivo que desea lograr después de efectuar el último pago. Si el argumento vf se omite, se asume que el valor es 0 (por ejemplo, el valor futuro de un préstamo es 0).

Tipo es el número 0 (cero) o 1 e indica el vencimiento de pagos (anticipado o vencido):

0 u omitido Al final del periodo

1 Al inicio del periodo

Cuando haya especificado todos los argumentos de la función haga clic en “Aceptar”. Y obtendrá el resultado de la operación. En este ejemplo el valor de la cuota es de $795.633 mensuales.

TASA

Con esta función se obtiene la tasa de interés por período de una anualidad. En el caso trabajado sería hallar la tasa de interés del préstamo con las demás condiciones como argumentos.

Eudo González Página 33 19/04/2023

Page 34: Curso Excel Avanzado

EXCEL AVANZADO

NPER

Esta función permite obtener el número de periodos de una anualidad. En el caso trabajado sería hallar la cantidad de cuotas del préstamo con las demás condiciones como argumentos.

PAGOINT

Esta función permite conocer el monto de interés pagado en un período específico por una inversión basándose en pagos periódicos constantes y en una tasa de interés constante. En el ejemplo sería hallar en una cuota específica cuando se pago de intereses

PAGOPRIN

Calcula la amortización sobre el capital de una inversión durante un período determinado basándose en pagos periódicos y constantes, y en una tasa de interés constante. En el ejemplo es el monto de dinero pagado en una cuota específica como amortización a la deuda.

PAGO.INT.ENTRE

Es similar al PAGO.INT, pero permite establecer dicho monto entre dos períodos determinados, luego esta función permite conocer la cantidad acumulada de dinero pagado en intereses, entre dos períodos específicos.

PAGO.PRINC.ENTRE

Es similar al PAGO.PRINC, pero permite establecer dicho monto entre dos períodos determinados, luego esta función permite conocer la cantidad acumulada de dinero pagado en amortización entre dos períodos.

FUNCIÓN VALOR ACTUAL (VA)

Devuelve el valor actual de una inversión. El valor actual es el valor que tiene actualmente la suma de una serie de pagos que se efectuarán en el futuro. Por ejemplo, cuando pide dinero prestado, la cantidad del préstamo es el valor actual para el prestamista.

Cuando se utiliza esta función no se conoce el valor de la inversión pero si se conoce el valor de la cuota, el número de cuotas y la tasa de interés periódica. Por ejemplo si desea calcular el valor actual de un préstamo con una cuota de $795.633 mensuales al 4% de interés mensual y con un plazo de 60 meses, active esta función en el asistente.

Los argumentos que pregunta también son referidos a una anualidad.

VF

La función VF determina el valor futuro de una inversión basándose en pagos periódicos constantes y en una tasa de interés constante.

Eudo González Página 34 19/04/2023

Page 35: Curso Excel Avanzado

EXCEL AVANZADO

Supongamos que se tiene en una cuenta de ahorros un $1.000.000 de pesos y se desea saber cuanto dinero se obtendrá al cabo de tres años, si el banco ofrece un interés nominal anual del 12% capitalizable trimestralmente y depositando cuotas cada trimestre de $35.000 pesos.

Así se obtiene un Valor Futuro de $1.937.383,55.

VF.PLAN

Mientras la función VF determina el valor futuro de una inversión basándose en pagos periódicos constantes y en una tasa de interés constante, la VF.PLAN determina el mismo valor futuro pero los pagos y los intereses pueden varias y se almacenan en una zona de criterios en la hoja de cálculo, como planes de amortización.

FUNCIONES MATEMÁTICAS

CONTAR.SI

Esta función permite contar cuantas celdas cumplen con un criterio determinado, dentro de un rango específico. Únicamente tiene en cuenta las celdas que no están en blanco.

FUNCIONES LÓGICAS

Pueden utilizarse las funciones lógicas para evaluar si una condición es cierta o falsa o, para comprobar varias condiciones.

FUNCION O

La función O permite evaluar varias condiciones sobre una celda. Si cualquiera de estas condiciones se cumple da como resultado VERDADERO, y si ninguna se cumple FALSO. Puede juzgar hasta 30 condiciones.

FUNCION Y

Al igual que la función Y permite evaluar varias condiciones sobre una celda, pero en este caso se toma el valor VERDADERO si todas las condiciones se cumplen. Si alguna no se cumple toma el valor FALSO. Puede juzgar hasta 30 condiciones.

FUNCION SI (CONDICIONALES)

Devuelve un valor si la condición especificada es VERDADERA y otro valor si dicho argumento es FALSO.

Utilice SI para realizar pruebas condicionales en valores y fórmulas. La sintaxis de esta función es: SI (prueba_lógica;valor_si_verdadero;valor_si_falso)

Por ejemplo suponga que tiene las cifras de los gastos actuales y los pronosticados de esta manera:

Eudo González Página 35 19/04/2023

Page 36: Curso Excel Avanzado

EXCEL AVANZADO

Cree una nueva columna con el nombre de evaluación

Ubíquese en la celda D2 y pulse el botón de la Barra de Herramientas Estándar.“Pegar Función”

Elija funciones Lógicas y luego seleccione la función Si, aparecerá una ventana como esta:

Es la casilla Prueba _ lógica escriba la condición a avaluar, es decir, cualquier valor o expresión que pueda evaluarse como VERDADERO o FALSO. Para este ejemplo evalúe si los gastos actuales son mayores que los pronosticados es decir si la celda B2>C2

En la casilla Valor_si_verdadero escriba el valor que se devolverá si la condición a evaluar (prueba _ lógica) es VERDADERA. Si prueba _ lógica es VERDADERA y esta casilla aparece vacía la función devuelve VERDADERO. Esta casilla puede ser texto o puede ser una fórmula. Para este ejemplo escriba Presupuesto Excedido

En la casilla Valor_si_falso escriba el valor que se devolverá si la condición a evaluar (prueba _ lógica) es FALSA, si se omite el argumento de esta casilla, la función devuelve FALSO. Esta casilla puede ser texto o puede ser una fórmula.

Para este ejemplo escriba Presupuesto Exacto.

Haga clic en el botón “Aceptar” y copie la fórmula hacia abajo.

Al final obtendrá un resultado como este

Eudo González Página 36 19/04/2023

Page 37: Curso Excel Avanzado

EXCEL AVANZADO

Observe que al ubicarse en la celda D2 la barra de fórmulas indica la siguiente operación:

SI(B2>C2;"Presupuesto excedido";"Presupuesto exacto")

FUNCIONES ESTADÍSTICAS

CONTAR Y CONTARA

A través de CONTAR se puede determinar la cantidad de celdas que contienen un número y los números en la lista de argumentos. Con esta función puede obtener el número de entradas en un campo numérico de un rango o de una matriz de números.

Con CONTARA se puede obtener la cantidad de celdas que contienen información sin importar el tipo. Con esta función puede obtener el número de entradas un rango o de una matriz de números.

Por ejemplo tomemos la siguiente matriz:

En el mismo rango A1:Q1, la función CONTAR da como resultado 15, y la función CONTARA 17, debido al tipo de datos.

OPERADOR DE TEXTO

Existe un operador de texto, representado por el signo & que une dos o más valores de texto en uno sólo Por ejemplo, si la celda B2 contiene el texto Compra y la celda D5 contiene el texto de Frutas

Eudo González Página 37 19/04/2023

Page 38: Curso Excel Avanzado

EXCEL AVANZADO

Para concatenar esta palabras vaya a la celda C2 la siguiente fórmula =B2&D5 y el resultado será: compra de Frutas

Si desea agregar un espacio entre las palabras compra y de simplemente digite esta fórmula: =B2&” ”&D5, es decir agregue un espacio en blanco entre comillas y luego si concatene con la celda D5.

Si al concatenar uno de los valores es una referencia de celda y la celda a la que hace referencia contiene fórmulas , este operador une el valor producido por la fórmula con los valores de texto.

CONCATENAR

La función de concatenar permite realizar la operación anterior, a través del asistente para funciones. Es igual a la utilización del operador tipo texto.

ESPACIOS

Esta función sirve para eliminar los espacios que se encuentran al interior de un texto, a excepción del espacio normal que se deja entre palabras. Por ejemplo, si se tiene un texto como: “Estado de perdidas y ganancias” al usar la función de espacios quedaría así: “Estado de perdidas y ganancias”.

EXTRAE

Como su nombre lo dice esta función extrae de una celda determinada denominada “texto”, un numero determinado de caracteres denominados “núm_de_caracteres”, a partir de un carácter inicial de ese texto llamado “posición_inicial“.

Eudo González Página 38 19/04/2023

Page 39: Curso Excel Avanzado

EXCEL AVANZADO

FUNCIONES ANIDADAS

Pueden utilizarse funciones como argumentos de otras funciones. Una fórmula puede contener como máximo siete niveles de funciones anidadas Puede utilizar la Paleta de fórmulas para anidar funciones como argumentos.

Con los mismos datos del ejemplo anterior, se desea evaluar las siguientes condiciones:

Si los gastos actuales son menores que 3000 son “bajos” Si son mayores que 3000 pero menores que 4000 son “justos"

Si son iguales o mayores que 4000 son “altos”

Para evaluar estas condiciones, realice lo siguiente:

Cree una nueva columna con el nombre de observaciones

Ubíquese en la celda E2 y pulse el botón “Pegar Función” de la Barra de Herramientas Estándar.

Elija funciones Lógicas y luego seleccione la función Si

En la casilla Prueba_lógica, evalúe si los gastos actuales son menores que 3000 (B2<3000).

Si esta condición se cumple los precios son bajos.

Si esta condición no se cumple podrían cumplir cualquiera de las otras condiciones, por tal razón es necesario evaluar una nueva condición.

Ubíquese en la casilla Valor_si_falso y haga clic sobre la función SI de la paleta de fórmulas y aparecerá una nueva ventana para evaluar otra condición.

Eudo González Página 39 19/04/2023

Page 40: Curso Excel Avanzado

EXCEL AVANZADO

En esta nueva ventana evalúe si los gastos son menores que 4000 si esto se cumple los precios son justos, puesto que son mayores que 3000 pero menores que 4000.

La ultima condición siempre se evalúa por descarte, es decir si los precios no son menores que 3000 (primera condición) o no están entre 3000 y 4000 (segunda condición), necesariamente deben ser mayores que 4000 y son “altos”.

La segunda ventana quedará de la siguiente manera:

Pulse el botón “Aceptar” y obtendrá el siguiente resultado:

Entonces se puede concluir que los gastos de enero son altos, los de febrero justos y los de marzo bajos.

COMPLEMENTOS

Los complementos son macros automáticas que manejan comandos y funciones y opciones especiales en Excel. Para activarlos se ingresa por el menú HERRAMIENTAS, Complementos, donde aparecerá la siguiente ventana:

Eudo González Página 40 19/04/2023

Page 41: Curso Excel Avanzado

EXCEL AVANZADO

AccessLinks : Crea formularios e informes de Microsoft Access para utilizarlos con datos de Microsoft Excel e importa datos de Microsoft Excel en Microsoft Access. Para poder utilizar el complemento AccessLinks, deberá tener instalado Microsoft Access en el sistema.

Herramientas para análisis : Agrega funciones de análisis financiero, estadístico y técnico.

Autoguardar : Guarda automáticamente los libros, en los intervalos de tiempo especificados.

Asistente para sumas condicionales : Crea una fórmula que suma los datos de una lista si los datos cumplen los criterios que se especifiquen.

Asistente para convertir archivos : Convierte un grupo de archivos a formato de libro de Microsoft Excel.

Asistente para consultas : Crea una fórmula para consultar datos en una lista utilizando otro valor de la lista.

ODBC : Utiliza funciones ODBC para conectar con fuentes de datos externas mediante controladores ODBC instalados.

Administrador de informes : Crea informes que contienen diferentes áreas de impresión en el libro, vistas personalizadas del libro y escenarios.

Asistente para el ayudante de Internet de Microsoft Excel : Convierte los rangos de datos de la hoja de cálculo y los gráficos en archivos de páginas Web en lenguaje de marcas de hipertexto (HTML).

Solver : Calcula soluciones para los escenarios, basándose en las celdas ajustables y en las celdas restringidas.

Eudo González Página 41 19/04/2023

Page 42: Curso Excel Avanzado

EXCEL AVANZADO

MS Query para MS Excel 5.0 : Convierte los rangos de datos externos en formato de Microsoft Excel 97 a formato Microsoft Excel Versión 5.0/95; permite utilizar las macros creadas en Visual Basic para aplicaciones de las versiones anteriores de Microsoft Excel.

Herramientas de plantilla : Proporciona las herramientas que utilizan las plantillas integradas en Microsoft Excel.

Asistente para plantillas con seguimiento de datos : Crea plantillas que registran entradas en una hoja de cálculo para efectuar seguimientos y análisis.

Actualizar vínculos : Actualiza los vínculos con las funciones integradas de Excel que fueron macros automáticas en las versiones anteriores.

Asistente para formularios Web : Configura un formulario en un servidor Web de modo que los datos que se introduzcan en el formulario se agregarán a una base de datos.

Si el complemento o macro que se desea no se encuentra en la lista del cuadro dialogo, se hace clic en examinar y se ubica el complemento, para su posterior activación. Para que no ocupen memoria, se deben descargar los complementos que no se utilicen con frecuencia.

Cuando se descarguen complementos o macros se quitarán todas las funciones y comandos de Microsoft Excel, pero el programa de complementos permanecerá en el sistema; por tanto, podrá cargarlos de nuevo con facilidad.

Cada una de las opciones activa nuevas herramientas en la hoja de calculo, donde la principal son las herramientas para el análisis de datos, que anteriormente no aparecían, pero en el momento en que se activan a través de los complementos aparecerá en el menú HERRAMIENTAS, Análisis de datos. Al activar esta opción surge inmediatamente la siguiente ventana:

Eudo González Página 42 19/04/2023

Page 43: Curso Excel Avanzado

EXCEL AVANZADO

BUSCAR OBJETIVO

Buscar objetivo es el caso más sencillo de Escenarios. Esta función permite conocer el resultado deseado de una fórmula sencilla. Todas las formulas calculadas tienen valor Al realizar una búsqueda de objetivo, Excel varía el valor de determinada celda hasta que la fórmula dependiente de dicha celda da el resultado que se desea obtener. Por ejemplo, se desea tener una cuota de $300.000, sin importar el número de periodos de pago. Para activar la función se ingresa por el menú Herramientas, previamente ubicados en la celda que contiene la formula que deseamos de este resultado.

Al llenar la información requerida por Excel, presenta una ventana llamado estado de la búsqueda, donde muestra previamente el resultado antes de aceptarlo en la hoja.

El objetivo de una cuota de $300000, se logró con 8.3 periodos. Al dar Click en Aceptar, se realiza el cambio, en el caso contrario no se varia la celda de periodos.

Eudo González Página 43 19/04/2023

Page 44: Curso Excel Avanzado

EXCEL AVANZADO

MACROSMACROS

Las macros de Excel permiten automatizar tareas que normal-mente se realizan repetidas veces. Una macro consiste en una serie de comandos e instrucciones de Excel que se agrupan en un solo comando de forma que la tarea pueda realizarse automáticamente.

En lugar de perder el tiempo realizando una serie de acciones repetitivas en Excel, puede crear y ejecutar una macro, es decir, un comando personalizado, que ejecute la tarea por usted.

A continuación se indican algunos usos típicos de las macros:

Acelerar las tareas rutinarias de modificaciones y formatos. Combinar varios comandos.

Hacer que una opción de un cuadro de diálogo sea más accesible.

Automatizar series de tareas complejas.

Excel incluye dos métodos para crear macros: La grabadora de macros y el Editor de Visual Basic. La grabadora de macros puede ayudarle a obtener los conocimientos fundamentales para la creación de macros. Excel graba la macro como una serie de comandos de Excel utilizando el lenguaje de programación de Visual Basic para aplicaciones. Las macros grabadas se pueden abrir en el Editor de Visual Basic para modificar las instrucciones.

El Editor de Visual Basic también puede crear macros flexibles y eficaces con instrucciones de Visual Basic que no se pueden grabar. Para obtener más información acerca de la utilización de Visual Basic en Word, consulte «Referencia de Visual Basic para Microsoft Excel» en la ficha Contenido de la Ayuda

AUTOMATIZAR UNA TAREA RUTINARIA

Si alguna vez se ha encontrado en esta situación, ya existe una solución para usted: la creación de una macro para aplicaciones con Microsoft Visual Basic. Para crear una macro no necesita saber programación, ya que es muy sencillo. De hecho, la mayoría de las macros pueden crearse siguiendo unos simples pasos, similares a los que realiza para imprimir los reportes semanales. Microsoft Excel descifra los detalles (como el nombre del filtro a usarse) y crea el código Visual Basic necesario. Incluso es posible vincular la macro a un botón de la barra de herramientas, de forma que los complicados reportes semanales se conviertan en una actividad tan sencilla como imprimir o hacer click en un botón

Una macro, según la definición encontrada en los manuales de Excel, es una secuencia de instrucciones que le indican a Excel qué debe hacer, y éste las ejecuta automáticamente. Por medio de las macros podemos automatizar tareas repetitivas y aquellas en las que se requiere una cantidad considerable de pasos complejos. Y, aunque se requiere de un poco de conocimientos de programación, se puede realizar una gran cantidad de tareas usando instrucciones sencillas, y todo sin saber programar.

Eudo González Página 44 19/04/2023

Page 45: Curso Excel Avanzado

EXCEL AVANZADO

DESARROLLAR SU PROPIA MACRO

1. Del menú Herramientas seleccionar en la opción Macro, luego hacer un click en la sub-opción Grabar Nuevo Macro.

2. Introduzca un nombre para la macro o use el nombre proveído.

3. En la caja de almacenamiento macro, hacer un click en el lugar en donde desea almacenar la macro. Si elige guardarla como archivo global, la macro estará disponible siempre que use Microsoft Excel, y no sólo cuando use la hoja de cálculo específica donde la creó.

4. Hacer un click en el botón Aceptar y entonces escribir las acciones que desea grabar. Recuerde que todo lo que usted escribe se guarda, incluyendo errores y cualquier cosa hecha para corregirlos.

5. Cuando haya finalizado sus tareas, seleccione la opción Macro en el menú de herramientas y hacer un click en la opción detener grabación.

Eudo González Página 45 19/04/2023

Page 46: Curso Excel Avanzado

MACROS EN EXCEL

COMO CREAR UNA MACRO

Para grabar una macro no requiere del conocimiento de Visual Basic, no necesita aprender este lenguaje. Visual Basic es necesario, sólo, si usted decide modificar una macro en lugar de regrabarla o desea crearla de la nada.

Consideremos el problema original: cada semana necesita imprimir un reporte. El reporte tiene una vista particular, un filtro definido, es tipificado en una manera particular, y es impreso. Generar este reporte requiere demasiados pasos cada semana, sin mencionar que es, más bien, tedioso. Una macro que permita crear un reporte así, puede ser muy sencilla. Veamos el código de Visual Basic que hace de la macro algo tan simple.

Para crear una macro desde el principio, hacer los pasos siguientes:

1. En el menú Herramientas, seleccionar la opción Macro.2. A continuación se muestra una caja de diálogo, en el cuadro Nombre de la macro, escriba el

nombre correspondiente.

3. En la lista descendente Macros en seleccionar una de las opciones plantilla o el documento donde desea guardar la macro.

4. Hacer un click en Crear para abrir el Editor de Visual Basic. En el editor codificar en lenguaje Visual Basic.

COMO EJECUTAR UNA MACRO

Para ejecutar una macro, hacer los pasos siguientes:

1. Del menú Herramientas seleccionar la opción Macro y hacer un click en la sub-opción Macros.

2. En el cuadro Nombre de la macro, hacer un click en el nombre de la macro que desee ejecutar.

3. Hacer un click en el botón Ejecutar.

Por ejemplo, se desea ejecutar la macro para añadir bordes a un determinado número de celdas.

En la ventana de Macros se seleccionó de la lista Nombre de la macro «Bordes», Luego se hizo un click en el botón Ejecutar.

Eudo González Página 46 19/04/2023

Page 47: Curso Excel Avanzado

MACROS EN EXCEL

MACROS

Macro es una secuencia de órdenes que se realizan con el Visual Basic, que puede ser en Español o Inglés.

Por lo tanto las definiciones de macros:

Secuencias de órdenes bajo una orden determinada Otro nombre Seudo-Programación

Desarrollo lineal.

Programa toma de decisiones.

NIVELES

1. Grabadora. Indicar a Excel hacer el programa.a. Rutina (Objeto, Botón).

b. Módulo.

2. Programación Visual Basic. Maneja herramientas para el entorno operativo de Windows.

3. Desarrollo de Funciones. Funciones de usuarios (MACRO.FUNCION)

a. Suma, promedio, máximo, etc.

b. También se puede crear muestras propias, funciones(por

Ejemplo : I.V.A., en contabilidad.

Eudo González Página 47 19/04/2023

Page 48: Curso Excel Avanzado

MACROS EN EXCEL

Para entender el concepto de programación, supóngase que declaramos un objeto llamado Suma. Este objeto requiere dos parámetros (o datos) como mensaje para operar. En la programación tradicional tendríamos que definir el tipo de datos que le enviamos, como por ejemplo dos números enteros, dos números reales, etc. Entonces podríamos tener los siguientes curiosos resultados al enviar a Suma dos datos:

Suma( 2, 4) => 6

Suma( ‘Alberto’, ‘Cortez’) => Alberto Cortez

Suma( %Música1, %Música2) => se escuchan simultáneamente las dos melodías

El polimorfismo implica que el objeto será capaz de operar correctamente con cada tipo de dato y generar un resultado predecible.

En Visual Basic presentan tres aspectos que considerar: las propiedades, los métodos y los eventos.

Con el fin de facilitar la comprensión de estos aspectos, nos referiremos a una analogía con algún objeto de la vida diaria: una televisión conectada a una videograbadora. Las propiedades representan los ajustes bajo los cuales opera el equipo: el volumen, el brillo de la imagen, la saturación de color, el tamaño vertical y horizontal de la imagen. Los eventos son las acciones o comandos que puedo ejecutar sobre el aparato: presionar el botón de encendido, presionar el botón de avance de cinta, presionar el control para el cambio de hora, mover el control de volumen. En el caso de VB el programa responde a los eventos por medio de procedimientos que se programan en forma tradicional. La principal dificultad consiste en seleccionar el evento correcto para la acción deseada (en ocasiones inadvertidamente se puede provocar una cascada de eventos: dentro del proceso de un evento se activa otro evento que a su vez activa al primer evento que activa al segundo evento… etc.).

Y, por último, los métodos son los procesos internos que ocurren en el aparato (procedimientos) en respuesta a un comando: al presionar el botón de avance de la cinta, se activa un motor, se activa el contador, se “lee” y transmite la imagen de la cinta a la televisión, etc. El programador de VB no tiene acceso a la codificación de los métodos, sólo los usa. En VB tenemos como ejemplo el método FindFirst (parámetro) que al aplicarse a un objeto de base de datos localiza la primera ocurrencia del dato especificado en el parámetro.

Eudo González Página 48 19/04/2023

Page 49: Curso Excel Avanzado

MACROS EN EXCEL

TIPOS DE ESTRUCTURAS DE PROGRAMACIÓN

Se define como estructura de un programa, la forma establecida como fluyen las órdenes o comandos en el momento de su ejecución.

Las estructuras pueden ser: Lineales, condicionales y repetitivas.

1. Estructura lineal

Cuando la ejecución del programa sigue una secuencia simple de arriba hacia abajo, de la primera a la última línea de órdenes, sin ninguna desviación.

Por ejemplo: Entrar a la bodegaPedir 1 Kg. Azúcar blancaPagar el importeSalir de la Bodega.

2. Estructura repetitiva

Cuando se plantea la repetición de un conjunto de órdenes, hasta que deje de cumplirse cierta condición o afirmación.

Por ejemplo: Entrar a la bodegaHasta completar listaHacer pedidoBucle (repetir)Pagar el importe de todo lo solicitadoSalir de la Bodega.

ESTRUCTURAS DE LOS PROGRAMAS

Tipos de estructurad de los programas:

Lineal.- Una tras otra línea en forma secuencial. Bifurcación.-Un camino se abre en dos, Función SI

Eudo González Página 49 19/04/2023

Page 50: Curso Excel Avanzado

MACROS EN EXCEL

Simple.- Un camino se abre en “dos” posibilidades

Múltiple.- Un camino se abre en “N” posibilidades

Repetitivas.- Controla que determinados procesos se efectúen adecuadamente

Definición De algunos comandos : al escribir las líneas del programa débenos de tomar en cuenta lo siguiente:

Letras color Azul (palabra clave) Letras color Verde (comentarios)

Letras color Rojo (error)

LAS INSTRUCCIONES CONDICIONALES

Evalúan si una condición es True o False y a continuación especifican las instrucciones a ejecutar en función del resultado. Normalmente, una condición es una expresión que utiliza un operador de comparación para comparar un valor o variable con otro.

If...Then...Else: Salto a una instrucción cuando una condición es True o False

Select Case: Selección de la instrucción a ejecutar en función de un conjunto de condiciones.

UTILIZAR BUCLES PARA REPETIR CÓDIGO

Es posible ejecutar un grupo de instrucciones de forma repetida. Algunos bucles repiten las instrucciones hasta que una condición es False, otros las repiten hasta que la condición es True. Hay también bucles que repiten un conjunto de instrucciones un número determinado de veces o una vez para cada objeto de una colección.

Do...Loop: Seguir en el bucle mientras o hasta una condición sea True

For...Next: Utilizar un contador para ejecutar las instrucciones

Eudo González Página 50 19/04/2023

Page 51: Curso Excel Avanzado

MACROS EN EXCEL

COMANDOS VISUAL BASIC PARA EXCEL

El lenguaje de programación Visual Basic difiere de todos los anteriores en varios aspectos.

EL PRIMER PUNTO DE DIFERENCIACIÓN

Es la existencia de categorías de comandos (niveles). Así tenemos:

Funciones Enunciados

Objetos

Métodos

Propiedades

Se agrupan todas las palabras clave u órdenes que reconoce el lenguaje.

Eudo González Página 51 19/04/2023

Page 52: Curso Excel Avanzado

MACROS EN EXCEL

EL SEGUNDO PUNTO

La sintaxis del Visual Basic exige respetar un cierto orden en la escritura de cada comando. Así por ejemplo, primero se debe mencionar el objeto, el método y luego la propiedad que queremos cambiar de él, separándolos con puntos.

Por ejemplo:

CeldaActiva.Seleccionar.AlineaciónHorizontal=xlCentrar

COMANDOS VISUAL BASIC MAS USADOS

Funciones: Abs, Ahora, Choole, Dir, Error, Esnulo, Espacio, Fecha, Val

Métodos: Abrir, Activar, Agregar, AjustarAutomáticamente, AnularSelección, Autoformato, Autorellenar, Bordes, Copiar, CuadrosEdición, CuadroDiálogo, CuadrosTexto, Desviar, Hojas, HojasSeleccionadas, Llenarhaciaabajo, Mostrar, Pegar, Rango, Ventanas

Objetos: Aplicación, Borde, Bordes, Botón, Botones, CuadroEdición, CuadrosEdición, CuadrosTexto, Diálogo, Diálogos, Fuente, HojaCálculo, Rango,

Ventana.

Propiedades: AlineaciónHorizontal, AnchoColumna, Selección, VentanaActiva

Enunciados: Con, Dim, Fin, Proced

BARRA DE HERRAMIENTOS DE VISUAL BASIC PARA EXCEL

La barra de herramientas Visual Basic para Excel contiene botones que le ayudan a trabajar con el código en los módulos.

Botón “Insertar Módulo”

Inserta un módulo de Visual Basic nuevo en el libro de trabajo activo.

Botón “Ejecutar Macro”

Presenta el cuadro de diálogo Macro para que pueda seleccionar y ejecutar una macro.

Ejecutar Sub/UserForm Ejecuta el procedimiento actual si el cursor está situado en un procedimiento o ejecuta el formulario si éste está activo actualmente. Este comando se convierte en el comando Continuar cuando está en modo de interrupción.

Eudo González Página 52 19/04/2023

Page 53: Curso Excel Avanzado

MACROS EN EXCEL

El modo de interrupción.- Suspensión temporal de la ejecución de un programa mientras está en la etapa de desarrollo. En el modo interrumpir, se puede examinar, depurar, volver a configurar, incrementar o continuar una ejecución. Se entra en modo interrumpir:

Al encontrar un punto de interrupción durante la ejecución del programa. Al presionar CTRL+ENTRAR durante la ejecución del programa.

Al encontrar una instrucción Stop o un error de ejecución no detectado durante la ejecución del programa.

Agregando una expresión Interrumpir cuando el valor sea Verdadero. La ejecución se detiene cuando el valor de la expresión bajo inspección cambia y se convierte en True.

Agregando una expresión Interrumpir cuando el valor cambie. La ejecución se detiene cuando el valor de la expresión bajo inspección cambie.

Botón “Reanudar Macro”

Reanuda la operación de una macro después que se haya hecho una pausa en la misma.

Botón “Finalizar grabación”

Detiene la ejecución de una macro. También interrumpe la grabación de una macro.

Botón “Modo de diseño”

Activa o desactiva el modo de diseño por proyecto. El modo de diseño es el tiempo durante el cual no se ejecuta el código del proyecto ni los eventos de la aplicación principal o proyecto. Puede abandonar el modo de diseño ejecutando una macro o utilizando la ventana Inmediato.

Botón “Explorador de proyectos”

Muestra una lista jerárquica de los proyectos y todos los elementos contenidos y referenciados por cada uno de los proyectos.

Botón “ventana de propiedades”

Enumera las propiedades de tiempo de diseño correspondientes a los objetos seleccionados y su configuración actual. Puede cambiar estas propiedades en tiempo de diseño.

Cuando seleccione múltiples controles, la ventana de Propiedades contiene una lista de las propiedades comunes a todos los controles seleccionados.

Botón “Examinador de objetos”

Eudo González Página 53 19/04/2023

Page 54: Curso Excel Avanzado

MACROS EN EXCEL

Permite examinar todos los objetos disponibles en el proyecto y ver sus propiedades, métodos y eventos. Además, puede ver los procedimientos y constantes que están disponibles en las bibliotecas de objetos en el proyecto. Puede mostrar fácilmente Ayuda en pantalla cuando examina. Puede utilizar el Examinador de objetos para encontrar y utilizar objetos que ha creado y también objetos de otras aplicaciones.

QUE SON MÓDULOS

Es un conjunto de declaraciones y procedimientos que realizan diferentes tareas independientemente una de otras, pero también pueden actuar en conjunto. Dentro de estos módulos es donde se digitan las macros que deseamos crear.

Cuando se crea un módulo dentro de un libro aparece de la siguiente manera:

Eudo González Página 54 19/04/2023

Page 55: Curso Excel Avanzado

MACROS EN EXCEL

Al grabar una macro cada acción se realiza en un módulo que es automáticamente creado, y éstos se encuentran después de la última hoja de cálculo.

SUB Y END SUB

Marcan el inicio y el fin de la rutina, respectivamente. De momento no nos romperemos mucho la cabeza con las rutinas. Simplemente tendremos una idea de cómo trata Excel las macros.

Eudo González Página 55 19/04/2023

Page 56: Curso Excel Avanzado

MACROS EN EXCEL

Para entrar o ingresar a un módulo, hacer los pasos siguientes:

1. Seleccionar la opción Macros del menú Herramientas

2. A continuación, Seleccionar la sub-opción Editor de Visual Basic

Eudo González Página 56 19/04/2023

Page 57: Curso Excel Avanzado

MACROS EN EXCEL

MODULO DE VISUAL BASIC

Un módulo de Visual Basic se usa para escribir, mostrar y editar código. Los módulos almacenan códigos a nivel de módulo y de procedimiento. Pueden haber varios procedimientos en un módulo y varios módulos en un libro de trabajo.

Un Modulo Incluye:

Barra de división

La barra de división divide un módulo en dos secciones. Es visible si selecciona la opción Dividir del menú Ventana.

Barra de desplazamiento

Barras de desplazamiento horizontales y verticales le permiten desplazarse dentro del código.

ESCRIBIENDO UNA MACRO MANUALMENTE

1. Para cambiar a un módulo de Visual Basic en el libro de trabajo activo, seleccionar la ficha correspondiente.

O bien:

Para crear un módulo ubicarse en el editor de Visual Basic, luego en el menú Insertar seleccionar la opción Módulo

2. En el módulo, escriba Proced, Función o Propiedadseguido por el nombre de la macro.3. Si hay argumentos, escríbalos entre paréntesis y separados por un punto y coma.

4. Presionar la tecla Enter.

5. Digitar el código.

Eudo González Página 57 19/04/2023

Page 58: Curso Excel Avanzado

MACROS EN EXCEL

6. Escriba Fin ProcedFin Proced, Fin Función o Fin Propiedad y después presionar Enter.

ACTIVAR Y DESACTIVAR LA VERIFICACIÓN DE SINTAXIS PARA LOS MÓDULOS

1. Del menú Herramientas, seleccionar la opción Opciones.2. Seleccionar la ficha General-Módulo.

3. Seleccionar el cuadro de verificación “Interrumpir en todos los errores”, o eliminar la selección.

4. Hacer un click en el botón Aceptar.

EJECUTAR UNA MACRO

Una vez grabada, una macro puede ejecutarse en Microsoft Excel o en el Editor de Visual Basic. Normalmente, se ejecutará la macro en Microsoft Excel; sin embargo, puede ejecutarse desde el Editor de Visual Basic, mientras se realiza la macro. Para interrumpir la macro antes de que finalice las acciones que se han grabado, presione ESC.

Ejecutar una macro desde un módulo de Visual Basic

1. Abra el libro que contiene la macro.2. Seleccionar la opción Macro en el menú Herramientas y, a continuación, hacer un click en la

sub opción Macros

Eudo González Página 58 19/04/2023

Page 59: Curso Excel Avanzado

MACROS EN EXCEL

3. En el cuadro Nombre de la macro, escriba el nombre de la macro que desea ejecutar.

4. Hacer un click en el botón Modificar.

5. Hacer un click en el botón Ejecutar

Sugerencia.- Si desea ejecutar otra macro diferente mientras está utilizando el Editor de Visual Basic, hacer un click en la opción Macros en el menú Herramientas. En el cuadro Nombre de la macro, escriba el nombre de la macro que desea ejecutar y, a continuación, hacer un click en Ejecutar.

GRABAR UNA MACRO

Para grabar una macro hacer los pasos siguientes:

1. Seleccionar la opción Macro del menú Herramientas y, a continuación, hacer un click en la opción Grabar nueva macro

2. En el cuadro Nombre de la macro, digitar un nombre para la macro. El primer carácter del nombre de la macro debe ser una letra. Los demás caracteres pueden ser letras, números o caracteres de subrayado. No se permiten espacios en un nombre de macro; puede utilizarse un carácter de subrayado como separador de palabras.

3. Para ejecutar la macro presionando un método abreviado, escriba una letra en el cuadro Tecla de método abreviado. Puede utilizarse CTRL+ l Letra(para letras minúsculas) o CTRL+ MAYUS + letra (para letras mayúsculas), donde letra es cualquier tecla del teclado. La tecla de método abreviado que se utilice no puede ser ni un número ni un carácter especial. La tecla de método abreviado suplantará a cualquier tecla de método abreviado predeterminada en Microsoft Excel mientras esté abierto el libro que contiene la macro.

4. En el cuadro Guardar macro en, hacer un click en la ubicación en que desea almacenar la macro.

Si desea que la macro esté disponible siempre que se utilice Microsoft Excel, almacene la macro en el libro de macros personales en la carpeta INICIAR. Para incluir una descripción de la macro, escriba la descripción en el cuadro Descripción.

5. Hacer un click en el botón Aceptar.

Si se seleccionan celdas mientras se está ejecutando una macro, ésta seleccionará las mismas celdas independientemente de la celda que se haya seleccionado en primer lugar, ya que graba referencias absolutas de celda. Si desea tener una macro para seleccionar celdas independientemente de la posición que tenga la celda activa cuando se ejecute la macro, configure el grabador de macros para que grabe referencias relativas de celda. En la barra de herramientas Detener grabación, hacer un click en Referencia. Microsoft Excel continuará grabando macros con referencias relativas hasta que termine la sesión con Microsoft Excel o hasta hacer un click otra vez en Referencias relativas.

6. Ejecute las acciones que desee grabar.

Eudo González Página 59 19/04/2023

Page 60: Curso Excel Avanzado

MACROS EN EXCEL

7. En la barra de herramientas Detener grabación, hacer un click en Detener grabación.

Sugerencia.- Si desea tener una macro para seleccionar una celda determinada, ejecute una acción y seleccionar otra celda relativa a la celda activa; cuando se grabe una macro, pueden mezclarse referencias relativas y absolutas. Para grabar una macro utilizando referencias, compruebe que está activada la opción Referencias relativas. Para grabar una macro utilizando referencias absolutas, compruebe que la opción Referencias relativas no está habilitada.

COPIAR UNA MACRO

Si hay una macro que contenga comandos que desea utilizar en otra macro, puede copiar toda la macro o parte de ella en otro módulo. También puede hacerse una copia del módulo de la macro para duplicar todas las macros que contenga.

Copiar parte de una macro para crear otra

1. Abra el libro que contenga la macro que desee copiar

2. Seleccionar la opción Macro del menú Herramientas y, a continuación, hacer un click en Macros

3. En el cuadro Nombre de la macro, escriba el nombre de la macro que desea copiar.

4. Hacer un click en la opción Modificar.

5. Seleccionar las líneas de la macro que desee copiar.

6. Para copiar toda la macro, asegúrese de que incluye las líneas Sub y End Sub en la selección.

7. Hacer un click en Copiar.

8. Cambie al módulo en el que desee situar el código.

9. Hacer un click en Pegar.

Sugerencia.- Para que una macro esté disponible siempre que se ejecute Microsoft Excel, almacene la macro en el libro de macros personales. Como el libro de macros personales es un libro oculto que siempre está abierto, si desea copiar una macro deberá mostrarlo.

Copiar un módulo de una macro a otro libro

1. Abra el libro que contiene el módulo y el libro en que desea copiar el módulo.

2. Seleccionar Macro del menú Herramientas y, a continuación, hacer un click en el Editor de Visual Basic

Eudo González Página 60 19/04/2023

Page 61: Curso Excel Avanzado

MACROS EN EXCEL

3. En el menú Ver, hacer un click en Explorador de proyectos. Arrastre el módulo que desee copiar al libro de destino.

CAJAS DE DIALOGO

Una caja de Diálogo se utiliza para ingresar o seleccionar datos u opciones y así poder facilitar el reconocimiento de éstos, como también el ingreso correcto de los mismos. Las cajas de Diálogo tendrán que ser diseñadas, por lo tanto se tendrá que indicar y asignar qué campos o datos desea utilizar.

Ejemplo:

CREACIÓN DE UNA CAJA DE DIALOGO

1. Hacer un click en el botón Modo Diseño, en la ventana de Excel. Si no tiene activo seleccionar Ver>Barra de herramientas> activar la subopción Visual Basic.

2. Hacer un click en el botón cuadro de controles, Al activar el cuadro de controles se activa una ventana que contiene botones para Diseño la caja de Diálogo usted creará la caja de diálogo deseada, que posteriormente cada objeto insertado tendrá un procedimiento la que llamará desde un módulo para poder ingresar o mostrar los datos deseados. El formato de la hoja de diálogo aparecerá de la siguiente forma:

UTILIZACIÓN DE BOTONES EN LA CREACIÓN DE LA CAJA DE DIÁLOGO

Ventana de Controles

La Ventana cuadro de controles contiene botones que se usan para crear formularios personalizados en hojas de cálculo, gráficos y hojas de diálogo.

Modo Diseño

Eudo González Página 61 19/04/2023

Page 62: Curso Excel Avanzado

MACROS EN EXCEL

Cambia al modo Diseño de formulario, en el que se puede modificar o crear un formulario utilizando las herramientas ActiveX del Cuadro de controles. Mientras se encuentra en el modo Diseño de formularios, este botón cambiará a Salir del modo Diseño.

Propiedades del control

Cambia en el archivo las propiedades de los controles ActiveX o las opciones del campo de formulario seleccionado.

Ver código

Abre el Editor de Visual Basic, donde pueden escribirse comandos de Visual Basic.

Casilla de verificación (Cuadro de controles)

Crea una casilla de verificación en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Cuadro de texto (Cuadro de controles)

Crea un cuadro de edición, en el que puede escribir texto, en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Botón de comando (Cuadro de controles)

Crea un botón, al que puede asignar un procedimiento de Visual Basic, en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Botón de opción (Cuadro de controles)

Crea un botón de opción en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Cuadro de lista (Cuadro de controles)

Crea un cuadro de lista en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Cuadro combinado (Cuadro de controles)

Crea una combinación de cuadro de lista desplegable y de cuadro de edición en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

Eudo González Página 62 19/04/2023

Page 63: Curso Excel Avanzado

MACROS EN EXCEL

Etiqueta (Cuadro de controles)

Crea una etiqueta de texto en una hoja de cálculo, en una hoja de diálogo, en un gráfico o en un documento o formulario.

EJECUTAR UNA MACRO DESDE UN MÉTODO ABREVIADO

1. Seleccionar Macro en el menú Herramientas y, a continuación, hacer un click en la opción Macros.

2. En el cuadro Nombre de la macro, escriba el nombre de la macro a la que desea asignar un método abreviado.

3. Hacer un click en Opciones.

4. Para ejecutar la macro presionando una tecla de método abreviado, escriba una letra en el cuadro Tecla de método abreviado. Puede utilizarse CONTROL+ letra o CONTROL+ MAYÚS + letra, donde letra es cualquier tecla del teclado. La tecla de método abreviado suplantará a cualquier tecla de método abreviado predeterminada en Microsoft Excel mientras esté abierto el libro que contiene la macro.

Para incluir una descripción de la macro, escriba la descripción en el cuadro Descripción.

5. Hacer un click en el botón Aceptar.

6. Hacer un click en el botón Cancelar.

EJECUTAR UNA MACRO DESDE UN BOTÓN O UN CONTROL GRÁFICO

Puede asignar una macro a un botón, a un objeto de dibujo o a un control gráfico en la hoja de cálculo. Si hace un click en el botón u objeto de dibujo o se cambia el control, por ejemplo, haciendo click en una casilla de verificación o un elemento de una lista, la macro se ejecutará de forma automática.

También puede ejecutar una macro de un control ActiveX.

Eudo González Página 63 19/04/2023

Page 64: Curso Excel Avanzado

MACROS EN EXCEL

1. Hacer un click en el botón o el control gráfico para que aparezcan los controladores de selección.

2. Hacer un click en el controlador de selección del botón o del control gráfico y, a continuación, hacer un clic en Asignar Macro en el menú contextual.

3. Para asignar una macro ya existente al botón o al control gráfico seleccionado escriba el nombre de la macro en el cuadro Nombre de la macro y luego hacer un click en el botón Aceptar.

4. Para grabar una nueva macro y asignarle el botón u objeto gráfico, hacer un click en Grabar.

EJECUTAR UNA MACRO DESDE UN BOTÓN DE LA BARRA DE HERRAMIENTAS

Puede ejecutarse una macro desde un botón, desde una barra de herramientas integrada o desde una barra de herramientas personalizada.

1. Del menú Herramientas, hacer un click en Personalizar.2. Si la barra de herramientas que contiene el botón no es visible, hacer un click en la ficha Barra

de herramientas y, a continuación, seleccione la casilla de verificación que aparece junto al nombre de la barra de herramientas.

3. Si el botón que desea utilizar para ejecutar la macro no pertenece a la barra de herramientas, hacer un click en la ficha Comandos y, a continuación, hacer un click en Macros en la lista Categorías. En la lista Comandos, arrastre el botón Personalizar a una barra de herramientas.

4. Hacer un click en el botón de la barra de herramientas y, a continuación, hacer un click en Asignar Macro en el menú contextual.

5. En el cuadro Nombre de la macro, escriba un nombre para la macro.

EJECUTAR UNA MACRO DESDE UN ÁREA, ZONA INTERACTIVA O UN OBJETO GRÁFICO

1. Crear un objeto gráfico.2. Dibujar otro objeto gráfico sobre el primero en el lugar en que desee crear una zona interactiva.

3. Con el segundo objeto gráfico todavía seleccionado, hacer un click con el botón secundario en el controlador de selección del botón o del objeto gráfico para ver el menú de método abreviado.

4. En el menú contextual, hacer un click en Asignar macro.

5. Para asignar una macro al botón o control gráfico, escriba el nombre de la macro en el cuadro Nombre de la macro y, a continuación, hacer un click en el botón Aceptar.

Para grabar una nueva macro y asignarla al objeto gráfico seleccionado, hacer un click en Grabar. Cuando finalice de grabar la macro, hacer un click en Detener grabación que se ubica en la barra de herramientas Grabar macro.

Eudo González Página 64 19/04/2023

Page 65: Curso Excel Avanzado

MACROS EN EXCEL

6. En el menú Formato, hacer un click en Autoforma y, a continuación, hacer un click en la ficha Colores y líneas.

7. Bajo Rellenar, hacer un click en Sin relleno en el cuadro Color. Bajo Línea, hacer un click Sin línea en el cuadro Color.

8. Repita los pasos del 2 al 7 para cada zona interactiva que desee crear.

ALGUNAS FUNCIONES DE VISUAL BASIC

En seguida se muestran algunas funciones Inter construidas de Visual Basic. Una función es un procedimiento que devuelve un valor.

ARCHIVO

FileAttr - Devuelve información del sistema operativo acerca de archivo que esta abierto. FileDateTime - Devuelve una cadena de caracteres que indican la fecha y la hora de la última

modificación del archivo.

FileLen - Devuelve un entero largo que indica la longitud en bytes de un archivo .

FreeFile - Devuelve el siguiente numero de archivo valido que no esta en uso.

GetAttr - Devuelve un entero que indica los atributos de un archivo, directorio, o etiqueta de volumen.

Loc - Devuelve la posición actual en un archivo abierto.

LOF - Devuelve el tamaño en bytes de un archivo abierto.

Seek - Devuelve la posición del archivo actual.

NÚMERO

Abs - Devuelve el valor absoluto de un número. Atn - Devuelve el arco tangente de un número.

Cos - Devuelve el coseno de un ángulo (ángulo en radianes).

Sin - Devuelve el seno de un ángulo (ángulo en radianes).

CADENA

InStr - Devuelve la posición de la primera ocurrencia de una cadena dentro de otra cadena de caracteres

LCase, LCase$ - Devuelve una cadena de caracteres en la cuál todas las letras han sido convertidas a minúsculas.

Eudo González Página 65 19/04/2023

Page 66: Curso Excel Avanzado

MACROS EN EXCEL

Left, Left$- Devuelve los caracteres a la izquierda de un cierto argumento. (cadena).

Len - Devuelve el número de caracteres en una expresión de cadena o el número de bytes necesarios para almacenar una variable.

LTrim, LTrim$ - Devuelve una copia de una cadena eliminando todos los espacios en blanco.

Mid, Mid$- Devuelve una cadena que es parte de una cadena.

Right, Right$- Devuelve los n caracteres más a la derecha de un argumento determinado.

RTrim, RTrim$- Devuelve una copia de la cadena de caracteres con los espacios de la derecha eliminados.

Space, Space$ - Devuelve una cadena que consiste de un número especifico de espacios.

Trim, Trim$ - Devuelve una copia de una cadena con los espacios de ambos lados eliminados.

UCase, UCase$ - Devuelve una cadena con todas las letras convertidas a mayúsculas.

HORA/FECHA

Date, Date$- Devuelve la fecha actual.. IsDate - Devuelve un valor que indica si una variable argumento se puede convertir a una

fecha.

Minute - Devuelve un entero entre 0 y 59, ambos inclusive, que representa el minuto de la hora correspondiente a la hora prevista como argumento.

Month - Devuelve un entero entre 1 y 12, ambos inclusive, que representa el mes del año para un argumento de fecha.

Now - Devuelve una fecha que representa la fecha actual y el tiempo de acuerdo con la configuración de fecha y la hora del equipo.

Time, Time$- Devuelve la hora actual del sistema.

Timer - Devuelve el número de segundos transcurridos desde las 12: 00 a.m. (medianoche).

Weekday - Devuelve un número entero entre 1 (domingo) y 7 (sábado) que representa el día de la semana para un argumento de fecha.

Year - Devuelve un entero entre 100 y 9999, ambos inclusive, que representa el año de un argumento de fecha.

VARIABLE CONVERSION

Eudo González Página 66 19/04/2023

Page 67: Curso Excel Avanzado

MACROS EN EXCEL

CCur - Convierte las expresiones explícitamente el tipo de datos de moneda. CDbl - Convierte las expresiones explícitamente el tipo de datos doble.

CInt - Convierte las expresiones explícitamente el tipo de datos entero.

CLng - Convierte las expresiones explícitamente el tipo de datos Long.

CSnd - Convierte las expresiones explícitamente el tipo de datos único.

CStr - Convierte las expresiones explícitamente el tipo de datos String.

CVar - Convierte las expresiones explícitamente el tipo de datos Variant.

CVDate - Convierte una expresión a una variante de VarType 7 (fecha).

CONCEPTOS DE PROGRAMACIÓN

REGLAS DE ASIGNACIÓN DE NOMBRES EN VISUAL BASIC

Para dar nombre a procedimientos, constantes, variables y argumentos en un módulo de Visual Basic han de seguirse las siguientes reglas:

El primer carácter debe ser una letra. En el nombre no se pueden utilizar espacios, puntos (.), signos de interjección (!), ni los

caracteres @, &, $, #.

El nombre no puede tener más de 255 caracteres de longitud.

Como regla general, no se deben usar nombres iguales a los de los procedimientos Function, instrucciones y métodos de Visual Basic. Al final puede terminar usando las mismas palabras clave que utiliza el lenguaje. Para utilizar una función intrínseca del lenguaje, o una instrucción o método, cuyo nombre coincide con uno de los nombres asignados, es preciso identificarlos explícitamente. Para ello se sitúa delante del nombre de la función intrínseca, instrucción o método, el nombre de la biblioteca de tipos asociada. Por ejemplo, si utiliza una variable llamada Left, la única forma de utilizar la función Left es escribiendo VBA.Left.

Los nombres no se pueden repetir dentro del mismo nivel de alcance. Por ejemplo, no se pueden declarar dos variables con el nombre edad dentro del mismo procedimiento. Sin embargo, se puede declarar una variable privada edad y una variable de nivel de procedimiento llamada edad dentro del mismo módulo.

Nota Visual Basic no diferencia entre mayúsculas y minúsculas, pero respeta la forma en que se escriben las instrucciones de declaración de nombres.

Eudo González Página 67 19/04/2023

Page 68: Curso Excel Avanzado

MACROS EN EXCEL

COMPRENDER LA SINTAXIS DE VISUAL BASIC

En la sección de Ayuda de Visual Basic correspondiente a un método, instrucción o procedimiento Function la sintaxis muestra todos los elementos necesarios para utilizar correctamente ese método, instrucción o función. Los ejemplos siguientes explican como deben interpretarse los elementos sintácticos más comunes.

Sintaxis del método Activate

objeto.Activate

En la sintaxis del método Activate, la palabra "objeto" en cursiva es la posición reservada para la información que introduce el usuario — en este caso, código que devuelve un objeto. Las palabras que se muestran en negrita deben escribirse exactamente tal y como se indica. Por ejemplo, el siguiente procedimiento activa la segunda ventana en el documento activo.

Sub Activar() Windows(2).ActivateEnd Sub

Sintaxis de la función MsgBox

MsgBox(texto[, botones] [, título] [, archivoayuda, contexto])

En la sintaxis de la función MsgBox, las palabras en cursiva y negrita son argumentos con nombre de la función. Los argumentos que aparecen entre corchetes son opcionales. (No escriba los corchetes en el código de Visual Basic). En el caso de la función MsgBox, el único argumento que se debe incluir es el texto de la pregunta.

Los argumentos para funciones y métodos se pueden especificar en el código mediante su posición o por su nombre. Para especificar argumentos mediante su posición, siga el orden que se indica en la sintaxis, separando los argumentos con una coma, por ejemplo:

MsgBox "¡Su respuesta es correcta!",0,"Cuadro de Respuesta"

Para especificar un argumento mediante su nombre basta con usar el nombre del argumento seguido de dos puntos y un signo igual (:=) y el valor del argumento. Los argumentos con nombre se pueden especificar en cualquier orden, por ejemplo:

MsgBox Title:="Cuadro de Respuesta", Prompt:="¡Su respuesta es correcta!"

La sintaxis de las funciones y algunos métodos muestran los argumentos entre paréntesis. Estas funciones y métodos devuelven valores, por eso deben encerrarse los argumentos entre paréntesis al asignar un valor a una variable. Si se ignora el valor de retorno o si no se pasan argumentos en forma alguna, no deben incluirse los paréntesis. Los métodos que no devuelven valores no necesitan que sus argumentos aparezcan encerrados entre paréntesis. Estas normas son aplicables tanto si se usan argumentos posicionales o nominativos.

Eudo González Página 68 19/04/2023

Page 69: Curso Excel Avanzado

MACROS EN EXCEL

En el siguiente ejemplo, el valor que devuelve la función MsgBox es un número que indica el botón seleccionado almacenado en la variable miVar. Dado que se utiliza el valor que devuelve la función, es preciso utilizar paréntesis. Otro cuadro de mensaje presenta entonces en pantalla el valor de la variable.

Sub Pregunta() miVar = MsgBox(Prompt:="Me gusta mi trabajo.", _ Title:="Cuadro de respuesta", Buttons:="4") MsgBox miVarEnd Sub

Sintaxis de la instrucción Option

Option Compare {Binary | Text | Database}

En la sintaxis de la instrucción Option Compare, las llaves y la línea vertical indican una elección obligatoria entre tres opciones. (No escriba las llaves en la instrucción de Visual Basic). Por ejemplo, la siguiente instrucción especifica que dentro del módulo, las cadenas se comparan en un criterio de ordenación que no depende del mayúsculas o minúsculas.

Option Compare Text

Sintaxis de la instrucción Dim

Dim nombrevariable[([subscriptos])] [As tipo] [, nombrevariable[([subscriptos])] [As tipo]] . . .

En la sintaxis de la instrucción Dim, la palabra Dim es una palabra clave exigida. El único elemento necesario es nombrevariable (el nombre de la variable). Por ejemplo, la siguiente instrucción crea tres variables: miVar, siguienteVar y terceraVar. Estas variables se declaran automáticamente como Variant.

Dim miVar, siguienteVar, terceraVar

El siguiente ejemplo declara una variable como String. Al incluir un tipo de datos se ahorra memoria y se pueden evitar errores en el código.

Dim miRespuesta As String

Para declarar varias variables en una instrucción, debe incluirse el tipo de datos para cada variable. Las variables declaradas sin un tipo de datos se declaran automáticamente como Variant.

Dim x As Integer, y As Integer, z As Integer

En la siguiente instrucción, a x e y se les asigna el tipo de datos Variant. Sólo a z se le asigna el tipo de datos Integer.

Dim x, y, z As Integer

Eudo González Página 69 19/04/2023

Page 70: Curso Excel Avanzado

MACROS EN EXCEL

Si se declara una variable matriz, deben incluirse los paréntesis. Los subscriptos son opcionales. La siguiente instrucción define las dimensiones de una matriz dinámica, miMatriz.

Dim miMatriz()

COMPRENDER OBJETOS, PROPIEDADES, MÉTODOS Y EVENTOS

Un objeto representa un elemento de una aplicación, como una hoja de cálculo, una celda, un diagrama, un formulario o un informe. En código de Visual Basic, un objeto debe identificarse antes de se pueda aplicar uno de los métodos del objeto o cambiar el valor de una de sus propiedades.

Una colección es un objeto que contiene varios objetos que normalmente, pero no siempre, son del mismo tipo. En Microsoft Excel, por ejemplo, el objeto Workbooks contiene todos los objetos Workbook abiertos. En Visual Basic, la colección Forms contiene todos los objetos Form existentes en una aplicación.

Los elementos de una colección se pueden identificar mediante su número o su nombre. Por ejemplo, en el siguiente procedimiento, Libro(1) identifica al primer objeto Workbook abierto.

Sub CierraPrimero() Libro(1).CloseEnd Sub

El siguiente procedimiento utiliza un nombre especificado como cadena para identificar un objeto Form.

Sub CierraForm() Forms("MiForm.frm").CloseEnd Sub

También es posible operar al mismo tiempo sobre toda una colección de objetos siempre que los objetos compartan métodos comunes. Por ejemplo, el siguiente procedimiento cierra todos los formularios abiertos.

Sub CierraTodos() Forms.CloseEnd Sub

Método es toda acción que puede realizar un objeto. Por ejemplo, Add es un método del objeto ComboBox ya que sirve para añadir un nuevo elemento a un cuadro combinado.

El siguiente procedimiento utiliza el método Add para añadir un nuevo elemento a un ComboBox.

Sub AñadeElemen(nuevoElemento as String) Combo1.Add nuevoElementoEnd Sub

Eudo González Página 70 19/04/2023

Page 71: Curso Excel Avanzado

MACROS EN EXCEL

Propiedad es un atributo de un objeto que define una de las características del objeto, tal como su tamaño, color o localización en la pantalla, o un aspecto de su comportamiento, por ejemplo si está visible o activado. Para cambiar las características de un objeto, se cambia el valor de sus propiedades

Para dar valor a una propiedad, hay que colocar un punto detrás de la referencia a un objeto, después el nombre de la propiedad y finalmente el signo igual (=) y el nuevo valor de la propiedad. Por ejemplo, el siguiente procedimiento cambia el título de un formulario de Visual Basic dando un valor a la propiedad Caption.

Sub CambiaNombre(nuevoTitulo) miForm.Caption = nuevoTituloEnd Sub

Hay propiedades a las que no se puede dar valor. El tema de ayuda de cada propiedad indica si es posible leer y dar valores a la propiedad (lectura/escritura), leer sólo el valor de la propiedad (sólo lectura) o sólo dar valor a la propiedad (sólo escritura).

Se puede obtener información sobre un objeto devolviendo el valor de una de sus propiedades. El siguiente procedimiento utiliza un cuadro de diálogo para presentar el título que aparece en la parte superior del formulario activo en ese momento.

Sub NombreFormEs() formNonmbre = Screen.ActiveForm.Caption MsgBox formNombreEnd Sub

Evento es toda acción que puede ser reconocida por un objeto, como puede ser el clic del mouse o la pulsación de una tecla y para la que es posible escribir código como respuesta. Los eventos pueden ocurrir como resultado de una acción del usuario o del código de l programa, también pueden ser originados por el sistema.

Devolver objetos

Cada aplicación tiene una forma de devolver los objetos que contiene. Sin embargo estos procedimientos no son siempre iguales, por ello debe consultar el tema de ayuda correspondiente al objeto o colección que está usando en la aplicación para determinar la forma de devolver el objeto.

TIPOS DE DATOS

La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamaño de almacenamiento y el intervalo.

Tipo de datos Tamaño de almacenamiento

Intervalo

Byte1 byte 0 a 255

Eudo González Página 71 19/04/2023

Page 72: Curso Excel Avanzado

MACROS EN EXCEL

Tipo de datos Tamaño de almacenamiento

Intervalo

Boolean2 bytes True o False

Integer2 bytes -32,768 a 32,767

Long (entero largo) 4 bytes -2,147,483,648 a 2,147,483,647Single (coma flotante/ precisión simple)

4 bytes -3,402823E38 a –1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos

Double(coma flotante/ precisión doble)

8 bytes -1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos

Currency(entero a escala)

8 bytes -922.337.203.685.477,5808 a 922.337.203.685.477,5807

Decimal14 bytes +/-79.228.162.514.264.337.593.543.950.335 sin

punto decimal; +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el número más pequeño distinto de cero es +/-0,0000000000000000000000000001

Date8 bytes 1 de enero de 100 a 31 de diciembre de 9999

Object4 bytes Cualquier referencia a tipo Object

String (longitud variable)

10 bytes + longitud de la cadena

Desde 0 a 2.000 millones

String(longitud fija)

Longitud de la cadena Desde 1 a 65.400 aproximadamente

Variant(con números)

16 bytes Cualquier valor numérico hasta el intervalo de un tipo Double

Variant(con caracteres)

22 bytes + longitud de la cadena

El mismo intervalo que para un tipo String de longitud variable

Definido por el usuario (utilizando Type)

Número requerido por los elementos

El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.

Nota Las matrices de cualquier tipo de datos requieren 20 bytes de memoria más cuatro bytes para cada dimensión de matriz, más el número de bytes que ocupan los propios datos. Puede calcular la memoria que ocupan los datos multiplicando el número de elementos de datos por el tamaño de cada elemento. Por ejemplo, los datos de una matriz unidimensional que consten de cuatro elementos de datos tipo Integer de dos bytes cada uno, ocupan ocho bytes. Los ocho bytes que requieren los datos más los 24 bytes necesarios para la matriz suman un requisito total de memoria de 32 bytes para dicha matriz.

Eudo González Página 72 19/04/2023

Page 73: Curso Excel Avanzado

MACROS EN EXCEL

Un tipo Variant que contiene una matiz requiere 12 bytes más que la matriz por sí sola.

DECLARAR VARIABLES

Para declarar variables se utiliza normalmente una instrucción Dim. La instrucción de declaración puede incluirse en un procedimiento para crear una variable de nivel de procedimiento. O puede colocarse al principio de un módulo, en la sección Declarations, para crear una variable de nivel de módulo.

El siguiente ejemplo crea la variable NombreTexto y específicamente le asigna el tipo de datos String.

Dim NombreTexto As String

Si esta instrucción aparece dentro de un procedimiento, la variable NombreTexto se puede usar sólo en ese procedimiento. Si la instrucción aparece en la sección Declarations del módulo, la variable NombreTexto estará disponible en todos los procedimientos dentro del módulo, pero para los restantes módulos del proyecto. Para hacer que esta variable esté disponible para todos los procedimientos de un proyecto, basta con comenzar la declaración con la instrucción Public, tal y como muestra el siguiente ejemplo:

Public NombreTexto As String

Las variables se pueden declarar como de uno de los siguientes tipos de datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (para cadenas de longitud variable), String * longitud (para cadenas de longitud fija), Object, o Variant. Si no se especifica el tipo de datos, el tipo de datos Variant es el predefinido. También es posible crear un tipo definido por el usuario empleando la instrucción Type.

Se pueden declarar varias variables en una instrucción. Para especificar el tipo de datos se debe incluir un tipo de datos para cada variable. En la siguiente instrucción se declaran las variables intX, intY, e intZ como del tipo Integer.

Dim intX As Integer, intY As Integer, intZ As Integer

En la siguiente instrucción, intX e intY se declaran como del tipo Variant; y sólo intZ se declara como del tipo Integer.

Dim intX, intY, intZ As Integer

No es necesario especificar el tipo de datos en la instrucción de declaración. Si se omite, la variable será del tipo Variant.

Utilizar la instrucción Public

La instrucción Public se puede utilizar para declarar variables públicas de nivel de módulo.

Public NombreTexto As String

Eudo González Página 73 19/04/2023

Page 74: Curso Excel Avanzado

MACROS EN EXCEL

Las variables públicas se pueden usar en cualquier procedimiento del proyecto. Si una variable pública se declara en un módulo estándar o en un módulo de clase, también se podrá usar en los proyectos referenciados por el proyecto en que se declara la variable pública.

Utilizar la instrucción Private

La instrucción Private se puede usar para declarar variables privadas de nivel de módulo.

Private MiNombre As String

Las variables Private pueden ser usadas únicamente por procedimientos pertenecientes al mismo módulo.

Nota Cuando se utiliza a nivel de módulo, la instrucción Dim es equivalente a la instrucción Private. Sería aconsejable usar la instrucción Private para facilitar la lectura y comprensión del código.

Utilizar la instrucción Static

Cuando se utiliza la instrucción Static en lugar de la instrucción Dim, la variable declarada mantendrá su valor entre llamadas sucesivas.

Utilizar la instrucción Option Explicit

En Visual Basic se puede declarar implícitamente una variable usándola en una instrucción de asignación. Todas las variables que se definen implícitamente son del tipo Variant. Las variables del tipo Variant consumen más recursos de memoria que la mayor parte de las otros tipos de variables. Su aplicación será más eficiente si se declaran explícitamente las variables y se les asigna un tipo de datos específico. Al declararse explícitamente las variables se reduce la posibilidad de errores de nombres y el uso de nombres erróneos.

Si no desea que Visual Basic realice declaraciones implícitas, puede incluir en un módulo la instrucción Option Explicit antes de todos los procedimientos. Esta instrucción exige que todas las variables del módulo se declaren explícitamente. Si un módulo incluye la instrucción Option Explicit, se producirá un error en tiempo de compilación cuando Visual Basic encuentre un nombre de variable que no ha sido previamente declarado, o cuyo nombre se ha escrito incorrectamente.

Se puede seleccionar una opción del entorno de programación de Visual Basic para incluir automáticamente la instrucción Option Explicit en todos los nuevos módulos. Consulte la documentación de su aplicación para encontrar la forma de modificar las opciones de entorno de Visual Basic. Tenga en cuenta que esta opción no tiene ningún efecto sobre el código que se haya escrito con anterioridad.

Nota Las matrices fijas y dinámicas siempre se tiene que declarar explícitamente.

Declarar una variable de objeto para automatización

Eudo González Página 74 19/04/2023

Page 75: Curso Excel Avanzado

MACROS EN EXCEL

Cuando se utiliza una aplicación para controlar los objetos de otra aplicación, debe establecerse una referencia a la biblioteca de tipos de la otra aplicación. Una vez que se ha establecido la referencia, se pueden declarar variables de objeto conforme a su tipo más específico. Por ejemplo, si desde Microsoft Word se establece una referencia a la biblioteca de tipos de Microsoft Excel, se puede declarar una variable del tipo Worksheet desde Microsoft Word para representar un objeto Worksheet de Microsoft Excel.

Si se utiliza otra aplicación para controlar objetos de Microsoft Access, es posible, en la mayor parte de los casos, declarar variables objetos del tipo más específico. Se puede usar también la palabra clave New para crear automáticamente una nueva definición de un objeto. Sin embargo, puede ser necesario indicar que se trata de un objeto Microsoft Access. Por ejemplo, cuando se declara una variable de objeto para representar un formulario de Microsoft Access desde Microsoft Visual Basic, debe distinguirse entre el objeto Form de Microsoft Access y un objeto Form de Visual Basic. Para ello se incluye el nombre de la biblioteca de tipos en la declaración de la variable, como muestra el siguiente ejemplo:

Dim frmPedidos As New Access.Form

Algunas aplicaciones no reconocen algunos de los tipos de objetos de Microsoft Access. En ese caso, incluso después de establecer una referencia a la biblioteca de tipos de Microsoft Access, será necesario declarar todas las variables objeto de Microsoft Access como del tipo Object. Tampoco puede usarse la palabra clave New para crear una nueva definición del objeto. El siguiente ejemplo muestra cómo declarar una variable que represente una nueva definición del objeto Application de Microsoft Access desde una aplicación que no reconoce los tipos de objeto de Microsoft Access. La aplicación crea entonces una nueva definición del objeto Application.

Dim appAccess As ObjectSet appAccess = CreateObject("Access.Application")

COMPRENDER LA VIDA DE LAS VARIABLES

El tiempo durante el que una variable conserva su valor se conoce como vida. El valor de la variable puede cambiar durante su vida, pero conserva algún valor. Cuando una variable pierde su alcance, ya no tiene ningún valor.

Cuando un procedimiento comienza a ejecutarse, se inicializan todas las variables. Las variables numéricas se inicializan a cero, las cadenas de longitud variable se inicializan a una cadena vacía de longitud cero ("") y una cadena de longitud fija se llena con los caracteres correspondientes al código ASCII 0, o Chr(0). Las variables Variant se inicializan a Empty. Cada uno de los elementos de una variable de tipo definido por el usuario se inicializa como si se tratase de una variable independiente.

Cuando se declara una variable de objeto, se reserva el espacio correspondiente en memoria, pero se le da el valor Nothing hasta que se le asigne una referencia a objeto mediante la instrucción Set.

Si el valor de una variable no cambia durante la ejecución del código, conserva su valor de inicialización hasta que pierda alcance.

Eudo González Página 75 19/04/2023

Page 76: Curso Excel Avanzado

MACROS EN EXCEL

Una variable de nivel de procedimiento declarada mediante la instrucción Dim conserva su valor hasta que el procedimiento termina de ejecutarse. Si el procedimiento llama a otros procedimientos, la variable conserva su valor también mientras se ejecutan esos procedimientos.

Si una variable de nivel de procedimiento de declara con la palabra clave Static, la variable conserva su valor mientras haya código en ejecución, sea cual sea el módulo. Cuando todo el código ha terminado de ejecutarse, la variable pierde su alcance y su valor. Su vida es la misma que la de una variable de nivel de módulo.

Una variable de nivel de módulo es distinta a una variable estática. En un módulo estándar o un módulo de clase, conserva su valor hasta que se termina de ejecutar el código. En un módulo de clase conserva su valor mientras exista una definición de la clase. Las variables de nivel de módulo consumen memoria hasta que sus valores se vuelven a inicializa, por eso sólo se deben utilizar cuando sea necesario.

Si se incluye la palabra clave Static antes de una instrucción Sub o Function, los valores de todas las variables de nivel de procedimiento del procedimiento se conservarán entre las sucesivas llamadas.

DECLARAR CONSTANTES

Al declarar una constante, se puede asignar a un valor un nombre que tenga algún significado apropiado. La instrucción Const se utiliza para declarar una constante y darle valor. Una constante no puede modificarse o cambiar de valor una vez que ha sido declarada.

Se puede declarar una constante dentro de un procedimiento o al principio de un módulo, en la sección de Declarations. Las constantes a nivel de módulo son privadas, a menos que se especifique lo contrario. Para declarar una constante pública a nivel de módulo, la instrucción Const debe ir precedida por la palabra clave Public. Se puede declarar explícitamente una constante como privada colocando la palabra clave Private antes de la instrucción Const para facilitar la lectura y comprensión del código. Si desea más información, consulte la sección "Comprender el alcance y la visibilidad" en la Ayuda de Visual Basic.

El siguiente ejemplo declara la constante Public EdadCon como un Integer y le asigna el valor 34.

Public Const EdadCon As Integer = 34

Las constantes se pueden declarar de uno de los siguientes tipos de datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String, o Variant. Dado que ya se conoce el valor de una constante, es muy fácil elegir el tipo de datos en la instrucción Const. Si desea más información sobre tipos de datos, consulte la sección "Tipo de datos Summary" en la Ayuda de Visual Basic.

En una sola instrucción se pueden declarar varias constantes. Para especificar un tipo de datos, debe incluirse el tipo de datos para cada constante. En la siguiente instrucción se declaran como Integer las constantes EdadCon y SalarioCon.

Const EdadCon As Integer = 34, SalarioCon As Currency = 35000

Eudo González Página 76 19/04/2023

Page 77: Curso Excel Avanzado

MACROS EN EXCEL

SUB (INSTRUCCIÓN)

Declara el nombre, los argumentos, y el código que componen el cuerpo de un procedimiento Sub.

Sintaxis

[Private | Public | Friend] [Static] Sub nombre [(lista_argumentos)] [instrucciones]

[Exit Sub][instrucciones]

End Sub

La sintaxis de la instrucción Sub consta de las siguientes partes:

Parte Descripción

Public Opcional. Indica que el procedimiento Sub es accesible para todos los demás procedimientos de todos los módulos. Si se usa en un módulo que contiene una instrucción Option Private, el procedimiento no está disponible fuera del proyecto.

Private Opcional. Indica que el procedimiento Sub es accesible sólo para otros procedimientos del módulo en el que se declara.

Friend Opcional. Se utiliza solamente en un módulo de clase. Indica que el procedimiento Sub es visible a través del proyecto, pero no por un controlador de una instancia de un objeto.

Static Opcional. Indica que las variables locales del procedimiento Sub se conservan entre distintas llamadas. El atributo Static no afecta a las variables que se declaran fuera de Sub, incluso aunque se usen en el procedimiento.

nombre Requerido. Nombre del procedimiento Sub; sigue las convenciones estándar de nombres de variable.

lista_argumentos Opcional. Lista de variables que representan los argumentos que se pasan al procedimiento Sub cuando se le llama. Las distintas variables se separan mediante comas.

instrucciones Opcional. Cualquier grupo de instrucciones que se ejecutan dentro del procedimiento Sub.

El argumento lista_argumentos consta de las siguientes partes y sintaxis:

[Optional] [ByVal | ByRef] [ParamArray] nombre_variable[( )] [As tipo] [= valor_predeterminado]

Eudo González Página 77 19/04/2023

Page 78: Curso Excel Avanzado

MACROS EN EXCEL

Parte Descripción

Optional Opcional. Palabra clave que indica que no se requiere ningún argumento. Si se usa, todos los argumentos subsiguientes de lista_argumentos también deben ser opcionales y declararse mediante la palabra clave Optional. Optional no se puede utilizar para ningún argumento si se usa ParamArray.

ByVal Opcional. Indica que el argumento se pasa por valor.

ByRef Opcional. Indica que el argumento se pasa por referencia. ByRef es el modo predeterminado en Visual Basic.

ParamArray Opcional. Sólo se utiliza como el último argumento de lista_argumentos para indicar que el argumento final es una matriz Optional de elementos tipo Variant. La palabra clave ParamArray le permite proporcionar un número arbitrario de argumentos. No se puede utilizar con ByVal, ByRef u Optional.

nombre_variable Requerido. Nombre de la variable que representa el argumento; sigue las convenciones estándar de nombres de variables.

tipo Opcional. El tipo de datos del argumento que se pasa al procedimiento; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitido actualmente), Date, String (solamente longitud variable), Object, Variant, o un tipo de objeto específico. Si el parámetro no es Optional, se puede especificar también un tipo definido por el usuario.

valor_predeterminado Opcional. Cualquier constante o expresión de constante. Sólo es válido para parámetros Optional. Si el tipo es Object, un valor predeterminado explícito sólo puede ser Nothing.

Comentarios

Si no se especifica explícitamente mediante Public, Private o Friend, los procedimientos Sub son públicos de manera predeterminada. Si no se usa Static, el valor de las variables locales no se mantiene entre distintas llamadas. La palabra clave Friend solamente se puede usar en módulos de clase. Sin embargo, los procedimientos en cualquier módulo de un proyecto pueden acceder a los procedimientos Friend. Un procedimiento Friend no aparece en la biblioteca de tipo de su clase primaria, ni se puede enlazar posteriormente.

Precaución Los procedimientos Sub pueden ser recursivos; es decir, se pueden llamar a sí mismos para realizar una tarea determinada. Sin embargo, esto puede llevar al desbordamiento de la pila. La palabra clave Static generalmente no se utiliza con procedimientos recursivos Sub.

Todo código ejecutable debe estar en procedimientos. No puede definir un procedimiento Sub dentro de otro procedimiento Sub, Function o Property.

Eudo González Página 78 19/04/2023

Page 79: Curso Excel Avanzado

MACROS EN EXCEL

Las palabras clave Exit Sub causan la inmediata salida de un procedimiento Sub. La ejecución del programa continúa con la instrucción que sigue a la instrucción que llamó el procedimiento Sub. Cualquier número de instrucciones Exit Sub puede aparecer en cualquier lugar de un procedimiento Sub.

Al igual que un procedimiento Function, un procedimiento Sub es un procedimiento distinto que toma argumentos, lleva a cabo una serie de instrucciones y cambia el valor de sus argumentos. Sin embargo, a diferencia de un procedimiento Function, el cual devuelve un valor, un procedimiento Sub no se puede utilizar en una expresión.

Para llamar a un procedimiento Sub, use el nombre del procedimiento seguido de la lista de argumentos. Consulte la instrucción Call para obtener información específica acerca de cómo llamar a los procedimientos Sub.

Las variables usadas en procedimientos Sub se dividen en dos categorías: las que están explícitamente declaradas dentro del procedimiento y las que no lo están. Las variables declaradas explícitamente en un procedimiento (mediante Dim o un equivalente) siempre son locales del procedimiento. Otras variables usadas pero no declaradas explícitamente en un procedimiento también son locales, a menos que se declaren explícitamente en algún nivel superior fuera del procedimiento.

Precaución Un procedimiento puede usar una variable que no esté declarada explícitamente en el procedimiento, pero puede ocurrir un conflicto de nombres si cualquier cosa que ha definido en el nivel de módulo tiene el mismo nombre. Si el procedimiento se refiere a una variable no declarada que tiene el mismo nombre que otro procedimiento, constante o variable, se supone que el procedimiento se está refiriendo al nombre de ese nivel de módulo. Para evitar este tipo de conflictos, declare las variables explícitamente. Puede usar una instrucción Option Explicit para forzar la declaración explícita de variables.

Nota No se puede usar GoSub, GoTo o Return para obtener acceso o salir de un procedimiento Sub.

Ejemplo de la instrucción Sub

En este ejemplo se utiliza la instrucción Sub para declarar el nombre, los argumentos y el código que forman el cuerpo del procedimiento Sub.

' Definición del procedimiento Sub.' Procedimiento Sub con dos argumentos.Sub SubAreaPC(Largo, Ancho) Dim Area As Double ' Declara la variable local. If Largo = 0 Or Ancho = 0 Then ' Si cualquier argumento = 0. Exit Sub ' Sale inmediatamente de Sub. End If Area = Largo * Ancho ' Calcula el área del rectángulo. Debug.Print Area ' Imprime el área en la ventana de depuración.End Sub

Escribir un procedimiento Sub

Eudo González Página 79 19/04/2023

Page 80: Curso Excel Avanzado

MACROS EN EXCEL

Un procedimiento Sub es una serie de instrucciones Visual Basic, encerradas entre un par de instrucciones Sub y End Sub, que realizan acciones específicas pero no devuelven ningún valor. Un procedimiento Sub puede aceptar argumentos, como constantes, variables o expresiones que le pasa el procedimiento que ha efectuado la llamada. Si un procedimiento Sub no tiene argumentos, la instrucción Sub debe incluir un par de paréntesis vacío.

El siguiente procedimiento Sub dispone de comentarios explicativos en cada línea.

' Declara un procedimiento llamado ObtenInformacion ' Este procedimiento Sub no acepta argumentosSub ObtenInformacion()' Declara una variable de cadena llamada respuestaDim respuesta As String' Asigna el valor que devuelve la funcion InputBox a la variable respuestarespuesta = InputBox(Prompt:="¿Cómo se llama?") ' Instrucción condicional If...Then...Else If respuesta = Empty Then ' Llama a la función MsgBox MsgBox Prompt:="No ha escrito su nombre." Else ' Función MsgBox concatenada con la variable respuesta MsgBox Prompt:="Su nombre es " & respuesta ' Fin de la instrucción If...Then...Else End If ' Fin del procedimiento SubEnd Sub

FUNCTION (INSTRUCCIÓN)

Declara el nombre, los argumentos y el código que componen el cuerpo de un procedimiento Function.

Sintaxis

[Public | Private | Friend] [Static] Function nombre [(lista_argumentos)] [As tipo][instrucciones][nombre = expresión][Exit Function] [instrucciones][nombre = expresión]

End Function

La sintaxis de la instrucción Function consta de las siguientes partes:

Parte Descripción

Public Opcional. Indica que el procedimiento Function es accesible para todos los demás procedimientos de todos los módulos. Si se utiliza en un módulo que contiene

Eudo González Página 80 19/04/2023

Page 81: Curso Excel Avanzado

MACROS EN EXCEL

Parte Descripción

Option Private, el procedimiento no estará disponible fuera del proyecto.

Private Opcional. Indica que el procedimiento Function sólo es accesible para otros procedimientos del módulo donde se declara.

Friend Opcional. Se utiliza solamente en un módulo de clase. Indica que el procedimiento Function es visible a través del proyecto, pero no es visible para un controlador de una instancia de un objeto.

Static Opcional. Indica que las variables locales del procedimiento Function se conservan entre las distintas llamadas. El atributo Static no afecta a las variables que se declaran fuera de Function, incluso aunque se utilicen en el procedimiento.

Nombre Requerido.

Nombre del procedimiento Function; sigue las convenciones estándar de nombres de variables.

lista_argumentos Opcional. Lista de variables que representan argumentos que se pasan al procedimiento Function cuando se llama. La variables múltiples se separan por comas.

tipo Opcional. Tipo de datos del valor devuelto por el procedimiento Function; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitido actualmente), Date, String, o (excepto longitud fija), Object, Variant, o cualquier tipo definido por el usuario.

instrucciones Opcional. Cualquier grupo de instrucciones que se van a ejecutar dentro del procedimiento Function.

expresión Opcional. Valor de retorno de Function.

El argumento lista_argumentos tiene la siguiente sintaxis y partes:

[Optional] [ByVal | ByRef] [ParamArray] nombre_variable[( )] [As tipo] [= valor_predeterminado]

Parte Descripción

Optional Opcional. Indica que un argumento no es necesario. Si se utiliza, todos los argumentos posteriores de lista_argumentos también deben ser opcionales y declararse mediante la palabra clave Optional. Optional no se puede utilizar para cualquier argumento si se emplea ParamArray.

ByVal Opcional. Indica que el argumento se pasa por valor.

Eudo González Página 81 19/04/2023

Page 82: Curso Excel Avanzado

MACROS EN EXCEL

ByRef Opcional. Indica que el argumento se pasa por referencia. ByRef es el valor predeterminado en Visual Basic.

ParamArray Opcional. Sólo se utiliza como último argumento de lista_argumentos para indicar que el último argumento es una matriz Optional de elementos Variant. La palabra clave ParamArray le permite proporcionar un número arbitrario de argumentos. No puede utilizarse con ByVal, ByRef u Optional.

nombre_variable Requerido. Nombre de la variable que representa el argumento; sigue las convenciones estándar de nombres de variables.

tipo Opcional. Tipo de datos del argumento pasado al procedimiento; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no compatible actualmente), Date, String (sólo longitud variable), Object, Variant, o un tipo de objeto específico. Si el parámetro no es Optional, se puede especificar también un tipo definido por el usuario.

valor_predeterminado Opcional. Cualquier constante o expresión constante. Sólo es válido para parámetros Optional. Si el tipo es Object, un valor predeterminado explícito sólo puede ser Nothing.

Comentarios

Si no se especifican de forma explícita mediante Public, Private o Friend, los procedimientos Function son públicos de manera predeterminada. Si no se emplea Static, el valor de las variables locales no se conserva entre distintas llamadas. La palabra clave Friend sólo puede usarse en módulos de clase. Sin embargo, puede accederse a los procedimientos Friend por procedimientos en cualquier módulo de un proyecto. Un procedimiento Friend no aparece en la biblioteca de tipos de su clase primaria.

Precaución Los procedimientos Function pueden ser recursivos; es decir, pueden llamarse a sí mismos para realizar una tarea determinada. Sin embargo, la recursión puede provocar el desbordamiento de pila. La palabra clave Static no se suele utilizar con procedimientos Function recursivos.

Todo el código ejecutable debe estar dentro de procedimientos. No puede definir un procedimiento Function dentro de otro procedimiento Function, Sub o Property.

La instrucción Exit Function produce una salida inmediata de un procedimiento Function. La ejecución del programa continúa con la instrucción que sigue a la instrucción que llamó al procedimiento Function. En cualquier lugar de un procedimiento Function puede aparecer cualquier número de instrucciones Exit Function.

Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento independiente que puede adoptar argumentos, realizar una serie de instrucciones y cambiar los valores de sus argumentos. Sin embargo, a diferencia de un procedimiento Sub, puede utilizar un procedimiento Function en el

Eudo González Página 82 19/04/2023

Page 83: Curso Excel Avanzado

MACROS EN EXCEL

lado derecho de una expresión de la misma forma en que utiliza cualquier función intrínseca, como Sqr, Cos o Chr, cuando desea emplear el valor devuelto por la función.

Para llamar a un procedimiento Function, utilice en una expresión el nombre de función seguido de la lista de argumentos entre paréntesis. Consulte la instrucción Call para obtener información específica acerca de cómo llamar a los procedimientos Function.

Para devolver un valor de una función, asigne el valor al nombre de la función. En cualquier lugar del procedimiento puede aparecer cualquier número de asignaciones de este tipo. Si no se asigna ningún valor a nombre, el procedimiento devolverá un valor predeterminado: una función numérica devuelve 0, una función de cadena devuelve una cadena de longitud cero ("") y una función Variant devuelve Empty. Una función que devuelve una referencia de objeto devuelve Nothing si no se asigna ninguna referencia de objeto a nombre (mediante Set) dentro del procedimiento Function.

El ejemplo siguiente muestra cómo asignar un valor de retorno a una función llamada BinarySearch. En este caso, False se asigna al nombre para indicar que no se encontró algún valor.

Function BinarySearch(. . .) As Boolean. . . ' Valor no encontrado. Devuelve un valor False. If lower > upper Then BinarySearch = False Exit Function End If. . .End Function

Las variables empleadas en procedimientos Function se dividen en dos categorías: las que se declaran explícitamente dentro del procedimiento y las que no. Las variables que se declaran explícitamente en un procedimiento (mediante Dim u otra instrucción equivalente) siempre son locales del procedimiento. Las variables que se utilizan pero no se declaran explícitamente en un procedimiento también son locales, a menos que se hayan declarado explícitamente en algún nivel superior fuera del procedimiento.

Precaución Un procedimiento puede utilizar una variable que no se ha declarado explícitamente en el procedimiento, pero puede ocurrir un conflicto de nombres si algo que definió en un nivel de módulo tiene el mismo nombre. Si su procedimiento hace referencia a una variable no declarada que tiene el mismo nombre que otro procedimiento, constante o variable, se supone que el procedimiento hace referencia a ese nombre a nivel de módulo. Declare explícitamente las variables para evitar este tipo de conflicto. Puede utilizar una instrucción Option Explicit para forzar la declaración explícita de variables.

Precaución Visual Basic puede reorganizar las expresiones aritméticas para mejorar su eficacia interna. Evite utilizar un procedimiento Function en una expresión aritmética cuando la función cambie el valor de las variables de la misma expresión.

Ejemplo de la instrucción Function

Eudo González Página 83 19/04/2023

Page 84: Curso Excel Avanzado

MACROS EN EXCEL

En este ejemplo se utiliza la instrucción Function para declarar el nombre, los argumentos y el código que forman el cuerpo de un procedimiento Function. El último ejemplo utiliza argumentos Optional inicializados.

' La siguiente función definida por el usuario devuelve ' la raíz cuadrada del argumento que se le pasa.Function CalculaRaizCuadrada(ArgNumerico As Double) As Double If ArgNumerico < 0 Then ' Se evalúa el argumento. Exit Function ' Salida hacia el procedimiento. Else CalculaRaizCuadrada = Sqr(ArgNumerico) ' Devuelve la raíz cuadrada End IfEnd Function

El uso de la palabra clave ParamArray permite que una función acepte un número variable de argumentos. En la siguiente definición, PrimerArg se transfiere por valor.

Function CalcSum(ByVal PrimerArg As Integer, ParamArray OtrosArgs())Dim ValorDevuelto ' Si se invoca la función como:ValorDevuelto = CalcSum(4, 3 ,2 ,1)' Las variables locales obtienen los valores siguientes: PrimerArg = 4,' OtrosArgs(1) = 3, OtrosArgs(2) = 2, y así sucesivamente, suponiendo que el límite inferior' predeterminado para matrices es igual a 1

Los argumentos Optional pueden tener valores predeterminados y tipos distintos de Variant.

' Si los argumentos de una función se definen como:Function MiFunc(MiCad As String, Optional MiArg1 As _ Integer = 5, Optional MiArg2 = "Pepa") Dim RetVal' La función se puede invocar de las formas siguientes:RetVal = MiFunc("Hola", 2, "Mundo") ' Se proporcionan los 3 argumentos.RetVal = MiFunc("Prueba", , 5) ' Se omite el segundo argumento.' Los argumentos uno y tres utilizan argumentos con nombre.RetVal = MiFunc(MiCad:="Hola ", MiArg1:=7)

Escribir un procedimiento Function

Un procedimiento Function es una serie de instrucciones de Visual Basic encerradas entre dos instrucciones Function y End Function. Un procedimiento Function es similar a un procedimiento Sub, aunque una función puede devolver además un valor. Un procedimiento Function acepta argumentos, como pueden ser constantes, variables o expresiones que le pasa el procedimiento que efectúa la llamada. Si un procedimiento Function no tiene argumentos, la instrucción Function debe incluir un par de paréntesis vacíos. Una función devuelve un valor asignándolo a su nombre en una o más instrucciones del procedimiento.

Eudo González Página 84 19/04/2023

Page 85: Curso Excel Avanzado

MACROS EN EXCEL

En el siguiente ejemplo, la función Celsius calcula grados centígrados a partir de grados Fahrenheit. Cuando se llama a la función desde el procedimiento Principal, se le pasa una variable que contiene el valor del argumento. El resultado de los cálculos se devuelve al procedimiento que efectúo la llamada y se presenta en un cuadro de mensaje.

Sub Principal() temp = Application.InputBox(Texto:= _ "Por favor, introduzca la temperatura en grados F.", Tipo:=1) MsgBox "La temperatura es " & Celsius(temp) & " grados C."End Sub

Function Celsius(GradosF) Celsius = (GradosF - 32) * 5 / 9End Function

LLAMAR A PROCEDIMIENTOS SUB Y FUNCTION

Para efectuar una llamada a un procedimiento Sub desde otro procedimiento, escriba el nombre del procedimiento e incluya valores para todos los argumentos requeridos. No es necesaria una instrucción Call, pero si la utiliza, los argumentos deben aparecer encerrados entre paréntesis.

Se puede utilizar un procedimiento Sub para organizar otros procedimientos de forma que sean más fáciles de entender y depurar. En el siguiente ejemplo, el procedimiento Sub Principal efectúa una llamada al procedimiento Sub MultiBeep, pasando como argumento el valor 56. Después de que MultiBeep acaba su ejecución, el control vuelve a Principal y Principal llama al procedimiento Sub Mensaje. Mensaje presenta en pantalla un cuadro de mensaje; cuando el usuario hace clic en Aceptar, el control vuelve a Principal y Principal termina.

Sub Principal() MultiBeep 56 MensajeEnd Sub

Sub MultiBeep(númbips) For contador = 1 To númbips Beep Next contadorEnd Sub

Sub Mensaje() MsgBox "¡Es hora de descansar!"End Sub

Llamar a procedimientos Sub con más de un argumento

Eudo González Página 85 19/04/2023

Page 86: Curso Excel Avanzado

MACROS EN EXCEL

El siguiente ejemplo muestra dos formas de llamar a un procedimiento Sub con más de un argumento. La segunda vez que se llama a CalcuCasa, es necesario utilizar paréntesis a ambos lados de los argumentos ya que se utiliza la instrucción Call.

Sub Principal()

CalcuCasa 99800, 43100

Call CalcuCasa(380950, 49500)

End Sub

Sub CalcuCasa(precio As Single, salario As Single) If 2.5 * salario <= 0.8 * precio Then MsgBox "No puede permitirse esta casa." Else MsgBox "Esta casa está a su alcance." End IfEnd Sub

Utilizar paréntesis al efectuar llamadas a procedimientos Function

Para utilizar el valor que devuelve una función debe asignar la función a una variable y encerrar los argumentos entre paréntesis, tal y como muestra el siguiente ejemplo.

Respuesta3 = MsgBox("¿Está contento con su salario?", 4, "Pregunta 3")

Si no está interesado en el valor que devuelve una función, puede efectuar la llamada a la función de la misma forma que si llamara a un procedimiento Sub. No utilice los paréntesis, incluya una lista de argumentos y no asigne la función a una variable, todo ello como muestra el siguiente ejemplo.

MsgBox "¡Tarea concluida!", 0, "Cuadro de tarea"

Precaución Si en el ejemplo anterior se incluyen paréntesis, la instrucción puede producir un error de sintaxis.

Transferir argumentos con nombre

Una instrucción de un procedimiento Sub o Function puede pasar valores a los procedimientos que llama mediante argumentos con nombre. Los argumentos con nombre pueden aparecer en cualquier orden. Un argumento con nombre se compone del nombre del argumento seguido por dos puntos y un signo igual (:=) y el valor asignado al argumento.

El siguiente ejemplo efectúa una llamada a la función MsgBox utilizando argumentos con nombre que no devuelven ningún valor.

Eudo González Página 86 19/04/2023

Page 87: Curso Excel Avanzado

MACROS EN EXCEL

MsgBox Titulo:="Cuadro de tarea", Mensaje:="¡Tarea concluida!"

El siguiente ejemplo llama a la función MsgBox empleando argumentos con nombre. El valor que devuelve la función se asigna a la variable respuesta3.

respuesta3 = MsgBox(Titulo:="Pregunta 3", _Mensaje:="¿Está satisfecho con su salario?", Botones:=4)

CÓMO HACER REFERENCIA A CELDAS Y RANGOS

Una tarea común cuando se utiliza Visual Basic es especificar una celda o rango y, a continuación, realizar alguna acción en ellas, como escribir una fórmula o cambiar el formato. Normalmente esto se realiza en una instrucción que identifica el rango y, además, cambia una propiedad o aplica un método.

Un objeto Range en Visual Basic puede ser una celda individual o un rango de celdas. Los siguientes temas muestran las maneras más usuales de identificar y trabajar con objetos Range.

1. Hacer referencia a celdas y rangos utilizando la notación A1

Puede hacer referencia a una celda o rango de celdas del estilo de referencia A1 utilizando el método Range. La siguiente subrutina cambia el formato de las celdas A1:D5 a negrita.

Sub FormatRange() Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _ .Font.Bold = TrueEnd Sub

La siguiente tabla muestra algunas referencias de estilo A1 utilizando el método Range.

Referencia Significado

Range("A1") Celda A1

Range("A1:B5") Celdas de la A1 a la B5

Range("C5:D9,G9:H16") Selección de varias áreas

Range("A:A") Columna A

Range("1:1") Fila 1

Range("A:C") Columnas de la A a la C

Range("1:5") Filas de la 1 a la 5

Range("1:1,3:3,8:8") Filas 1, 3 y 8

Eudo González Página 87 19/04/2023

Page 88: Curso Excel Avanzado

MACROS EN EXCEL

Range("A:A,C:C,F:F") Columnas A, C y F

2. Hacer referencia a celdas utilizando números de índice

Puede utilizar la propiedad Cells para hacer referencia a una sola celda utilizando los números de fila y de columna. Esta propiedad devuelve un objeto Range que representa una sola celda. En el siguiente ejemplo, Cells(6,1) devuelve la celda A6 de la hoja Sheet1. Entonces, la propiedad Value se establece en 10.

Sub EnterValue() Worksheets("Sheet1").Cells(6, 1).Value = 10End Sub

La propiedad Cells funciona bien para ejecutar bucles en un rango de celdas, ya que puede sustituir las variables por los números de índice, como se muestra en el siguiente ejemplo.

Sub CycleThrough() Dim Counter As Integer For Counter = 1 To 20 Worksheets("Sheet1").Cells(Counter, 3).Value = Counter Next CounterEnd Sub

3. Hacer referencia a filas y columnas

Utilice la propiedad Rows o Columns para trabajar con filas o columnas enteras. Estas propiedades devuelven un objeto Range que representa un rango de celdas. En el siguiente ejemplo, Rows(1) devuelve la fila uno de la hoja Sheet1. A continuación, la propiedad Bold del objeto Font del rango se establece en True.

Sub RowBold() Worksheets("Sheet1").Rows(1).Font.Bold = TrueEnd Sub

La siguiente tabla muestra algunas referencias de fila y columna, utilizando las propiedades Rows y Columns.

Referencia Significado

Rows(1) Fila uno

Rows Todas las filas de la hoja de cálculo

Columns(1) Columna uno

Eudo González Página 88 19/04/2023

Page 89: Curso Excel Avanzado

MACROS EN EXCEL

Columns("A") Columna uno

Columns Todas las columnas de la hoja de cálculo

Para trabajar con varias filas o columnas al mismo tiempo, cree una variable de objeto y utilice el método Union, combinando varias llamadas a la propiedad Rows o Columns. El siguiente ejemplo cambia a negrita el formato de las filas uno, tres y cinco de la hoja de cálculo uno del libro activo.

Sub SeveralRows() Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5)) myUnion.Font.Bold = TrueEnd Sub

4. Hacer referencia a celdas utilizando una notación abreviada

Puede utilizar el estilo de referencia A1 o un rango con nombre entre paréntesis como método abreviado para la propiedad Range. No es necesario escribir la palabra "Range" o utilizar comillas, como se muestra en los siguientes ejemplos.

Sub ClearRange() Worksheets("Sheet1").[A1:B5].ClearContentsEnd Sub

Sub SetValue() [MyRange].Value = 30End Sub

5. Hacer referencia a rangos con nombre

Es más sencillo identificar los rangos por nombre que por la notación A1. Para asignar un nombre a un rango seleccionado, haga clic en el cuadro de nombre situado a la izquierda de la barra de fórmulas, escriba un nombre y, a continuación, presione la tecla ENTRAR.

El siguiente ejemplo hace referencia al rango denominado "MyRange" en el libro "MyBook.xls".

Sub FormatRange() Range("MyBook.xls!MyRange").Font.Italic = TrueEnd Sub

El siguiente ejemplo hace referencia al rango de hojas de cálculo específico denominado "Sheet1!Sales" en el libro "MyBook.xls".

Sub FormatSales() Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthinEnd Sub

Eudo González Página 89 19/04/2023

Page 90: Curso Excel Avanzado

MACROS EN EXCEL

Para seleccionar un rango con nombre utilice el método GoTo, que activa el libro y la hoja de cálculo y, a continuación, selecciona el rango.

Sub ClearRange() Application.Goto Reference:="MyBook.xls!MyRange" Selection.ClearContentsEnd Sub

El siguiente ejemplo muestra cómo se escribiría el mismo procedimiento para el libro activo.

Sub ClearRange() Application.Goto Reference:="MyRange" Selection.ClearContentsEnd Sub

Ejecutar un bucle en las celdas de un rango con nombre

El siguiente ejemplo ejecuta un bucle en cada una de las celdas de un rango con nombre utilizando un bucle For Each...Next. Si el valor de cualquiera de las celdas del rango supera el valor de limit, el color de la celda cambia a amarillo.

Sub ApplyColor() Const Limit As Integer = 25 For Each c In Range("MyRange") If c.Value > Limit Then c.Interior.ColorIndex = 27 End If Next cEnd Sub

6. Hacer referencia a celdas en relación con otras celdas

Una manera de trabajar con una celda relacionada con otra es utilizar la propiedad Offset. El siguiente ejemplo asigna un formato de doble subrayado al contenido de la celda situada una fila más abajo y a tres columnas de la hoja de cálculo activa.

Sub Underline() ActiveCell.Offset(1, 3).Font.Underline = xlDoubleEnd Sub

Nota Puede grabar macros que utilicen la propiedad Offset en lugar en referencias absolutas. En el menú Herramientas elija Macro, haga clic en Grabar nueva macro, haga clic en Aceptar y, a continuación, en el botón Referencia relativa en la barra de herramientas de grabación de macros.

Para ejecutar un bucle en un rango de celdas, utilice en el rango una variable con la propiedad Cells. El siguiente ejemplo rellena las primeras 20 celdas de la tercera columna con valores entre 5 y 100, en incrementos de 5. La variable counter se utiliza como índice de fila para la propiedad Cells.

Eudo González Página 90 19/04/2023

Page 91: Curso Excel Avanzado

MACROS EN EXCEL

Sub CycleThrough() Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter * 5 Next counterEnd Sub

7. Hacer referencia a celdas usando un objeto Range

Si establece una variable de objeto para un objeto Range, puede manipular fácilmente el rango utilizando el nombre de la variable.

El siguiente procedimiento crea la variable de objeto myRange y, a continuación, asigna la variable al rango A1:D5 de la hoja Sheet1 del libro activo. Las instrucciones posteriores modifican las propiedades del rango, sustituyendo el nombre de la variable por el objeto del rango.

Sub Random() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = TrueEnd Sub

8. Hacer referencia a todas las celdas de la hoja de cálculo

Al aplicar la propiedad Cells a una hoja de cálculo sin especificar un número de índice, el método devuelve un objeto Range que representa todas las celdas de la hoja de cálculo. El siguiente procedimiento Sub borra el contenido de todas las celdas de la hoja Sheet1 del libro activo.

Sub ClearSheet() Worksheets("Sheet1").Cells.ClearContentsEnd Sub

9. Usar la propiedad Range

Puede hacer referencia a varios rangos con la propiedad Range, pero debe poner comas entre dos o más referencias. El siguiente ejemplo borra el contenido de los tres rangos de la hoja Sheet1.

Sub ClearRanges() Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _ ClearContentsEnd Sub

Los rangos con nombre permiten que la propiedad Range funcione más fácilmente con varios rangos. El siguiente ejemplo funciona cuando los tres rangos con nombre están en la misma hoja.

Sub ClearNamed() Range("MyRange, YourRange, HisRange").ClearContentsEnd Sub

Eudo González Página 91 19/04/2023

Page 92: Curso Excel Avanzado

MACROS EN EXCEL

Usar el método Union

Puede combinar varios rangos en un objeto Range utilizando el método Union. El siguiente ejemplo crea un objeto Range denominado myMultipleRange, los define como A1:B2 y C3:D4 y, a continuación, asigna el formato de negrita a los rangos combinados.

Sub MultipleRange() Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = TrueEnd Sub

Usar la propiedad Areas

Puede utilizar la propiedad Areas para hacer referencia al rango o conjunto de rangos seleccionados en una selección de varias áreas. El siguiente procedimiento cuenta las áreas de la selección. Si existe más de un área, se muestra un mensaje de advertencia.

Sub FindMultiple() If Selection.Areas.Count > 1 Then MsgBox "Cannot do this to a multiple selection." End IfEnd Sub

INSTRUCCIONES

DO...LOOP (INSTRUCCIÓN)

Repite un bloque de instrucciones cuando una condición es True o hasta que una condición se convierta en True.

Sintaxis

Do [{While | Until} condición][instrucciones][Exit Do][instrucciones]

Loop

O bien, puede utilizar esta sintaxis:

Do[instrucciones]

Eudo González Página 92 19/04/2023

Page 93: Curso Excel Avanzado

MACROS EN EXCEL

[Exit Do][instrucciones]

Loop [{While | Until} condición]

La sintaxis de la instrucción Do Loop consta de las siguientes partes:

Parte Descripción

condición Opcional. Expresión numérica o expresión de cadena que es True o False. Si la condición es Null, condición se considera False.

Instrucciones Una o más instrucciones que se repiten mientras o hasta que condición sea True.

Comentarios

Se puede utilizar cualquier número de instrucciones Exit Do ubicadas en cualquier lugar dentro de una estructura de control Do…Loop, para proporcionar una salida alternativa de un Do…Loop. La instrucción Exit Do se utiliza frecuentemente en la evaluación de alguna condición, por ejemplo, If…Then; en este caso, la instrucción Exit Do transfiere el control a la instrucción que sigue inmediatamente a la instrucción Loop.

Cuando se utiliza con instrucciones anidadas Do…Loop, la instrucción Exit Do transfiere control al bucle que está anidado un nivel por encima del bucle donde ocurre.

Utilizar instrucciones Do...Loop

Se pueden usar instrucciones Do...Loop para ejecutar un bloque de instrucciones un número indefinido de veces. Las instrucciones se repiten mientras una condición sea True o hasta que llegue a ser True.

Repetir instrucciones mientras una condición es True

Hay dos formas de utilizar la palabra clave While para comprobar el estado de una condición en una instrucción Do...Loop. Se puede comprobar la condición antes de entrar en el bucle, o después de que el bucle se haya ejecutado al menos una vez.

En el siguiente procedimiento ComPrimeroWhile, la condición se comprueba antes de entrar en el bucle. Si miNum vale 9 en vez de 20, las instrucciones contenidas en el bucle no se ejecutarán nunca. En el procedimiento ComFinalWhile, las instrucciones contenidas en el bucle sólo se ejecutarán una vez antes de que la condición llegue a ser False.

Sub ComPrimeroWhile() contador = 0 miNum = 20 Do While miNum > 10 miNum = miNum - 1 contador = contador + 1

Eudo González Página 93 19/04/2023

Page 94: Curso Excel Avanzado

MACROS EN EXCEL

Loop MsgBox "El bucle se ha repetido " & contador & " veces."End Sub

Sub ComFinalWhile() contador = 0 miNum = 9 Do miNum = miNum - 1 contador = contador + 1 Loop While miNum > 10 MsgBox "El bucle se ha repetido " & contador & " veces."End Sub

Repetir instrucciones hasta que una condición llegue a ser True

Hay dos formas de utilizar la palabra clave Until para comprobar el estado de una condición en una instrucción Do...Loop. Se puede comprobar la condición antes de entrar en el bucle (como muestra el procedimiento ComPrimeroUntil) o se pueden comprobar después de que el bucle se haya ejecutado al menos una vez (como muestra el procedimiento ComFinalUntil). El bucle sigue ejecutándose mientras la condición siga siendo False.

Sub ComPrimeroUntil() contador = 0 miNum = 20 Do Until miNum = 10 miNum = miNum - 1 contador = contador + 1 Loop MsgBox "El bucle se ha repetido " & contador & " veces."End Sub

Sub ComFinalUntil() contador = 0 miNum = 1 Do miNum = miNum + 1 contador = contador + 1 Loop Until miNum = 10 MsgBox "El bucle se ha repetido " & counter & " veces."End Sub

Instrucción de salida de Do...Loop desde dentro del bucle

Es posible salir de Do...Loop usando la instrucción Exit Do. Por ejemplo, para salir de un bucle sin fin, se puede usar la instrucción Exit Do en el bloque de instrucciones True de una instrucción If...Then...Else o Select Case. Si la condición es False, el bucle seguirá ejecutándose normalmente.

En el siguiente ejemplo, se asigna a miNum un valor que crea un bucle sin fin. La instrucción If...Then...Else comprueba esa condición y ejecuta entonces la salida, evitando así el bucle sin fin.

Eudo González Página 94 19/04/2023

Page 95: Curso Excel Avanzado

MACROS EN EXCEL

Sub EjemploSalida() contador = 0 miNum = 9 Do Until miNum = 10 miNum = miNum - 1 contador = contador + 1 If miNum < 10 Then Exit Do Loop MsgBox "El bucle se ha repetido " & contador & " veces."End Sub

Nota Para detener la ejecución de un bucle sin fin, presione la tecla ESC o CTRL+PAUSE.

FOR EACH...NEXT (INSTRUCCIÓN)

Repite un grupo de instrucciones para cada elemento de una matriz o colección.

Sintaxis

For Each elemento In grupo[instrucciones]

[Exit For][instrucciones]

Next [elemento]

La sintaxis de la instrucción For Each...Next consta de las siguientes partes:

Parte Descripción

elemento Requerido. Variable que se utiliza para iterar por los elementos del conjunto o matriz. Para conjuntos, elemento solamente puede ser una variable del tipo Variant, una variable de objeto genérica o cualquier variable de objeto específica. Para matrices, elemento solamente puede ser una variable tipo Variant.

grupo Requerido. Nombre de un conjunto de objetos o de una matriz (excepto una matriz de tipos definidos por el usuario).

instrucciones Opcional. Una o más instrucciones que se ejecutan para cada elemento de un grupo.

Comentarios

La entrada al bloque For Each se produce si hay al menos un elemento en grupo. Una vez que se ha entrado en el bucle, todas las instrucciones en el bucle se ejecutan para el primer elemento en grupo. Después, mientras haya más elementos en grupo, las instrucciones en el bucle continúan ejecutándose

Eudo González Página 95 19/04/2023

Page 96: Curso Excel Avanzado

MACROS EN EXCEL

para cada elemento. Cuando no hay más elementos en el grupo, se sale del bucle y la ejecución continúa con la instrucción que sigue a la instrucción Next.

Se pueden colocar en el bucle cualquier número de instrucciones Exit For. La instrucción Exit For se utiliza a menudo en la evaluación de alguna condición (por ejemplo, If...Then) y transfiere el control a la instrucción que sigue inmediatamente a la instrucción Next.

Puede anidar bucles For Each...Next, colocando un bucle For Each...Next dentro de otro. Sin embargo, cada elemento del bucle debe ser único.

Nota Si omite elemento en una instrucción Next, la ejecución continúa como si se hubiera incluido. Si se encuentra una instrucción Next antes de su instrucción For correspondiente, se producirá un error.

No se puede utilizar la instrucción For Each...Next con una matriz de tipos definidos por el usuario porque un tipo Variant no puede contener un tipo definido por el usuario.

Utilizar instrucciones For Each...Next

Las instrucciones For Each...Next repiten un bloque de instrucciones para cada uno de los objetos de una colección o para cada elemento de una matriz. Visual Basic asigna valor automáticamente a una variable cada vez que se ejecuta el bucle. Por ejemplo, el siguiente procedimiento cierra todos los formularios excepto el que contiene al procedimiento que se está ejecutando.

Sub CierraFormul() For Each frm In Application.Forms If frm.Caption <> Screen.ActiveForm.Caption Then frm.Close NextEnd Sub

El siguiente código recorre todos los elementos de una matriz e introduce en cada uno de ellos el valor de la variable índice I.

Dim PruebaMatriz(10) As Integer, I As VariantFor Each I In PruebaMatriz PruebaMatriz(I) = INext I

Recorrer un conjunto de celdas

Se puede usar el bucle For Each...Next para recorrer las celdas pertenecientes a un rango determinado. El siguiente procedimiento recorre las celdas del rango A1:D10 de la Página1 y convierte cualquier valor absoluto menor de 0,01 en 0 (cero).

Sub RedondeoACero() For Each miObjeto in miColeccion If Abs(miObjeto.Value) < 0.01 Then miObjeto.Value = 0 NextEnd Sub

Eudo González Página 96 19/04/2023

Page 97: Curso Excel Avanzado

MACROS EN EXCEL

Salir de un bucle For Each...Next antes de que finalice

Se puede salir de un bucle For Each...Next mediante la instrucción Exit For. Por ejemplo, cuando se produce un error se puede usar la instrucción Exit For en el bloque de instrucciones True de una instrucción If...Then...Else o Select Case que detecte específicamente el error. Si el error no se produce, la instrucción If…Then…Else es False y el bucle se seguirá ejecutando normalmente.

El siguiente ejemplo detecta la primera celda del rango A1:B5 que no contiene un número. Si se encuentra una celda en esas condiciones, se presenta un mensaje en pantalla y Exit For abandona el bucle.

Sub BuscaNumeros() For Each miObjeto In MiColeccion If IsNumeric(miObjeto.Value) = False Then MsgBox "El objeto contiene un valor no numérico." Exit For End If Next cEnd Sub

FOR...NEXT (INSTRUCCIÓN)

Repite un grupo de instrucciones un número especificado de veces.

Sintaxis

For contador = principio To fin [Step incremento][instrucciones]

[Exit For][instrucciones]

Next [contador]

La sintaxis de la instrucción For...Next consta de las siguientes partes:

Parte Descripción

contador Requerido. Variable numérica que se utiliza como contador de bucle. La variable no puede ser Booleana ni un elemento de matriz.

principio Requerido. Valor inicial del contador.

fin Requerido.

Valor final del contador.

Eudo González Página 97 19/04/2023

Page 98: Curso Excel Avanzado

MACROS EN EXCEL

incremento Opcional. Cantidad en la que cambia el contador cada vez que se ejecuta el bucle. Si no se especifica, el valor predeterminado de incremento es uno.

instrucciones Opcional. Una o más instrucciones entre For y Next que se ejecutan un número especificado de veces.

Comentarios

El argumento incremento puede ser positivo o negativo. El valor del argumento incremento determina la manera en que se procesa el bucle, como se muestra a continuación:

Valor El bucle se ejcuta si

Positivo o 0 contador <= fin

Negativo contador >= fin

Una vez que se inicia el bucle y se han ejecutado todas las instrucciones en el bucle, incremento se suma a contador. En este punto, las instrucciones del bucle se pueden ejecutar de nuevo (si se cumple la misma prueba que causó que el bucle se ejecutara inicialmente) o bien se sale del bucle y la ejecución continúa con la instrucción que sigue a la instrucción Next.

Sugerencia Cambiar el valor de contador mientras está dentro de un bucle hace difícil su lectura y depuración.

Se pueden colocar en el bucle cualquier número de instrucciones Exit For como una manera alternativa de salir del mismo. La instrucción Exit For, que se utiliza a menudo en la evaluación de alguna condición (por ejemplo, If...Then), transfiere el control a la instrucción que sigue inmediatamente a la instrucción Next.

Se pueden anidar bucles For...Next, colocando un bucle For...Next dentro de otro. Para ello, proporcione a cada bucle un nombre de variable único como su contador. La siguiente construcción es correcta:

For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ... Next K Next JNext I

Nota Si omite un contador en una instrucción Next, la ejecución continúa como si se hubiera incluido. Se produce un error si se encuentra una instrucción Next antes de su instrucción For correspondiente.

Eudo González Página 98 19/04/2023

Page 99: Curso Excel Avanzado

MACROS EN EXCEL

Utilizar instrucciones If...Then...Else

Se puede usar la instrucción If...Then...Else para ejecutar una instrucción o bloque de instrucciones determinadas, dependiendo del valor de una condición. Las instrucciones If...Then...Else se pueden anidar en tantos niveles como sea necesario. Sin embargo, para hacer más legible el código es aconsejable utilizar una instrucción Select Case en vez de recurrir a múltiples niveles de instrucciones If...Then...Else anidadas.

Ejecutar una sola instrucción cuando una condición es True

Para ejecutar una sola instrucción cuando una condición es True, se puede usar la sintaxis de línea única de la instrucción If...Then...Else. El siguiente ejemplo muestra la sintaxis de línea única, en la que se omite el uso de la palabra clave Else:

Sub FijarFecha() miFecha = #13/2/95# If miFecha < Now Then miFecha = NowEnd Sub

Para ejecutar más de una línea de código, es preciso utilizar la sintaxis de múltiples líneas. Esta sintaxis incluye la instrucción End If, tal y como muestra el siguiente ejemplo:

Sub AvisoUsuario(valor as Long) If valor = 0 Then Aviso.ForeColor = "Red" Aviso.Font.Bold = True Aviso.Font.Italic = True End IfEnd Sub

Ejecutar unas instrucciones determinadas si una condición es True y ejecutar otras si es False

Use una instrucción If...Then...Else para definir dos bloques de instrucciones ejecutables: un bloque que se ejecutará cuando la condición es True y el otro que se ejecutará si la condición es False.

Sub AvisoUsuario(valor as Long) If valor = 0 Then Aviso.ForeColor = vbRed Aviso.Font.Bold = True Aviso.Font.Italic = True Else Aviso.Forecolor = vbBlack Aviso.Font.Bold = False Aviso.Font.Italic = False End IfEnd Sub

Comprobar una segunda condición si la primera condición es False

Eudo González Página 99 19/04/2023

Page 100: Curso Excel Avanzado

MACROS EN EXCEL

Se pueden añadir instrucciones ElseIf a una instrucción If...Then...Else para comprobar una segunda condición si la primera es False. Por ejemplo, el siguiente procedimiento función calcula una bonificación salarial dependiendo de la clasificación del trabajador. La instrucción que sigue a la instrucción Else sólo se ejecuta cuando las condiciones de todas las restantes instrucciones If y ElseIf son False.

Function Bonificación(rendimiento, salario) If rendimiento = 1 Then Bonificación = salario * 0.1 ElseIf rendimiento = 2 Then Bonificación= salario * 0.09 ElseIf rendimiento = 3 Then Bonificación = salario * 0.07 Else Bonificación = 0 End IfEnd Function

UTILIZAR PARÉNTESIS EN EL CÓDIGO

Los procedimientos Sub, las instrucciones integradas y algunos métodos no devuelven valor alguno, por lo que los argumentos no aparecen entre paréntesis. Por ejemplo:

MiSub "stringArgumento", integerArgumento

Los procedimientos Function, las funciones integradas y algunos métodos devuelven algún valor, que puede ser ignorado. Si se va a ignorar el valor devuelto, no es necesario incluir paréntesis. La llamada a la función se hará igual que si se estuviera llamando a un procedimiento Sub. Omitiendo los paréntesis, incluyendo una lista de argumentos (si los hay) y no asignando la función a una variable. Por ejemplo:

MsgBox "¡Tarea concluida!", 0, "Cuadro de tarea"

Para utilizar el valor que devuelve una función, los argumentos deben encerrarse entre paréntesis tal y como muestra el siguiente ejemplo.

Respuesta3 = MsgBox("¿Está satisfecho con su salario?", 4, "Pregunta 3")

Una instrucción de un procedimiento Sub o Function puede pasar valores al procedimiento al que llama mediante argumentos con nombre. Las normas para el uso de paréntesis se aplican tanto si se usan argumentos con nombre como si no. Cuando se usan argumentos con nombre se pueden colocar en cualquier orden y se pueden omitir los argumentos opcionales. Los argumentos con nombre van siempre seguidos por dos puntos y un signo igual (:=) y finalmente el valor del argumento.

El siguiente ejemplo efectúa una llamada a la función MsgBox utilizando argumentos con nombre, al tiempo que ignora el valor que devuelve la función:

MsgBox Title:="Cuadro de tarea", Prompt:="¡Tarea concluida!"

Eudo González Página 100 19/04/2023

Page 101: Curso Excel Avanzado

MACROS EN EXCEL

El siguiente ejemplo efectúa una llamada a la función MsgBox utilizando argumentos con nombre y asigna el valor devuelto a la variable respuesta3:

respuesta3 = MsgBox(Title:="Pregunta 3", _ Prompt:="¿Está contento con su salario?", Buttons:=4)

SELECT CASE (INSTRUCCIÓN)

Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresión.

Sintaxis

Select Case expresión_prueba[Case lista_expresion-n[instrucciones-n]] ...[Case Else[instrucciones_else]]End Select

La sintaxis de la instrucción Select Case consta de las siguientes partes:

Parte Descripción

expresión_prueba Requerido. Cualquier expresión numérica o expresión de cadena.

lista_expresión-n Requerido si aparece la palabra clave Case. Lista delimitada por comas de una o más de las formas siguientes: expresión, expresión To expresión, Is expresión operador_de_comparación. La palabra clave especifica un intervalo de valores. Si se utiliza la palabra clave To, el valor menor debe aparecer antes de To. Utilice la palabra clave Is con operadores de comparación (excepto Is y Like) para especificar un intervalo de valores. Si no se escribe, la palabra clave Is se insertará automáticamente.

instrucciones-n Opcional. Una o más instrucciones ejecutadas si expresión_prueba coincide con cualquier parte de lista_expresión-n.

instrucciones_else Opcional. Una o más instrucciones que se ejecuten si expresión_prueba no coincide con nada de la cláusula Case.

Comentarios

Si expresión_prueba coincide con cualquier lista_expresión asociada con una cláusula Case, las instrucciones que siguen a esa cláusula Case se ejecutan hasta la siguiente cláusula Case o, para la última cláusula, hasta la instrucción End Select. El control pasa después a la instrucción que sigue a End Select. Si expresión_prueba coincide con una expresión de lista_expresión en más de una cláusula Case, sólo se ejecutan las instrucciones que siguen a la primera coincidencia.

Eudo González Página 101 19/04/2023

Page 102: Curso Excel Avanzado

MACROS EN EXCEL

La cláusula Case Else se utiliza para indicar las instrucciones que se van a ejecutar si no se encuentran coincidencias entre expresión_prueba y una lista_expresión en cualquiera de las otras selecciones de Case. Aunque no es necesario, es buena idea tener una instrucción Case Else en el bloque Select Case para controlar valores imprevistos de expresión_prueba. Cuando no hay una instrucción Case Else y ninguna expresión de la lista en las cláusulas Case coincide con la expresión de prueba, la ejecución continúa en la instrucción que sigue a End Select.

Se pueden utilizar expresiones múltiples o intervalos en cada cláusula Case. Por ejemplo, la línea siguiente es válida:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Nota El operador de comparación Is no es lo mismo que la palabra clave Is utilizada en la instrucción Select Case.

También puede especificar intervalos y expresiones múltiples para cadenas de caracteres. En el siguiente ejemplo, Case coincide con las cadenas que son exactamente iguales a todo, cadenas que están entre nueces y sopa en orden alfabético y el valor actual de ElemPrueba:

Case "iguales a todo", "nueces" To "sopa", ElemPrueba

Las instrucciones Select Case se pueden anidar. Cada instrucción Select Case debe tener su correspondiente instrucción End Select.

Utilizar instrucciones Select Case

La instrucción Select Case se utiliza como alternativa a las instrucciones ElseIf en instrucciones If...Then...Else cuando se compara una expresión con varios valores diferentes. Mientras que las instrucciones If...Then...Else pueden comparar una expresión distinta para cada instrucción ElseIf, la instrucción Select Case compara únicamente la expresión que evalúa al comienzo de la estructura de control.

En el siguiente ejemplo, la instrucción Select Case evalúa el argumento rendimiento que se pasa al procedimiento. Observe que cada instrucción Case puede contener más de un valor, una gama de valores, o una combinación de valores y operadores de comparación. La instrucción opcional Case Else se ejecuta si la instrucción Select Case no encuentra ninguna igualdad con los valores de la instrucciones Case.

Function Bonificación(rendimiento, salario) Select Case rendimiento Case 1 Bonificación = salario * 0.1 Case 2, 3 Bonificación = salario * 0.09 Case 4 To 6 Bonificación = salario * 0.07 Case Is > 8 Bonificación = 100

Eudo González Página 102 19/04/2023

Page 103: Curso Excel Avanzado

MACROS EN EXCEL

Case Else Bonificación = 0 End SelectEnd Function

UTILIZAR INSTRUCCIONES WITH

La instrucción With permite especificar una vez un objeto o tipo definido por el usuario en una serie entera de instrucciones. Las instrucciones With aceleran la ejecución de los procedimientos y ayudan a evitar el tener que escribir repetidas veces las mismas palabras.

El siguiente ejemplo introduce en un rango de celdas el número 30, aplica a esas celdas un formato en negrita y hace que su color de fondo sea el amarillo.

Sub RangoFormato() With Worksheets("Hoja1").Range("A1:C10") .Value = 30 .Font.Bold = True .Interior.Color = RGB(255, 255, 0) End WithEnd Sub

Las instrucciones With se pueden anidar para aumentar su eficiencia. El siguiente ejemplo inserta una formula en la celda A1 y selecciona a continuación el tipo de letra.

Sub MiEntrada() With Workbooks("Libro1").Worksheets("Hoja1").Cells(1, 1) .Formula = "=SQRT(50)" With .Font .Name = "Arial" .Bold = True .Size = 8 End With End WithEnd Sub

CALL (INSTRUCCIÓN)

Transfiere el control a un procedimiento Sub, a un procedimiento Function o a un procedimiento biblioteca de vínculos dinámicos(DLL).

Sintaxis

[Call] nombre [listaargumentos]

La sintaxis de la instrucción Call consta de las siguientes partes:

Parte Descripción

Eudo González Página 103 19/04/2023

Page 104: Curso Excel Avanzado

MACROS EN EXCEL

Call Opcional; palabra clave. Si se especifica, listaargumentos se debe colocar entre paréntesis. Por ejemplo: Call MiProced(0)

nombre Requerido. Nombre del procedimiento al que se transfiere el control.

listaargumentos Opcional. Lista de variables, matrices o expresiones delimitadas por comas, que se van a transferir al procedimiento. Los componentes de listaargumentos pueden incluir las palabras clave ByVal o ByRef para describir la forma en la que el procedimiento llamado trata los argumentos. Sin embargo, ByVal y ByRef se pueden utilizar con la instrucción Call solamente cuando se llama a un procedimiento de DLL. En Macintosh, ByVal y ByRef pueden utilizarse con Call cuando se realiza una llamada a un recurso del código de Macintosh.

Comentarios

No es necesario que utilice la palabra clave Call cuando llama a un procedimiento. Sin embargo, si utiliza la palabra clave Call para llamar a un procedimiento que requiere los argumentos, listaargumentos debe estar entre paréntesis. Si omite la palabra clave Call, debe omitir también los paréntesis de listaargumentos. Si utiliza cualquiera de las formas de la sintaxis Call para llamar a cualquier función intrínseca o a una función definida por el usuario, se descartará el valor devuelto por la función.

Para transferir una matriz completa a un procedimiento, utilice el nombre de la matriz seguida de paréntesis vacíos.

EXIT (INSTRUCCIÓN)

Sale de un bloque de código de Do…Loop, For...Next, Function, Sub o Property.

Sintaxis

Exit DoExit ForExit FunctionExit PropertyExit Sub

La sintaxis de la instrucción Exit puede ser la siguiente:

Instrucción Descripción

Exit Do Proporciona una manera de salir de una instrucción Do...Loop. Solamente se puede utilizar dentro de una instrucción Do...Loop. La instrucción Exit Do transfiere el control a la instrucción que sigue a la instrucción Loop. Cuando se utiliza con instrucciones

Eudo González Página 104 19/04/2023

Page 105: Curso Excel Avanzado

MACROS EN EXCEL

anidadas Do...Loop, la instrucción Exit Do transfiere el control al bucle que está anidado un nivel por encima del bucle donde ocurre.

Exit For Proporciona una manera de salir de un bucle For. Sólo se puede utilizar en un bucle For...Next o For Each...Next. La instrucción Exit For transfiere el control a la instrucción que sigue a la instrucción Next. Cuando se utiliza con bucles anidados For, la instrucción Exit For transfiere el control al bucle que está anidado un nivel por encima del bucle donde ocurre.

Exit Function

Sale inmediatamente del procedimiento Function en el que aparece. La ejecución continúa con la instrucción que sigue a la instrucción que llamó al procedimiento Function.

Exit Property

Sale inmediatamente del procedimiento Property en el que aparece. La ejecución continúa con la instrucción que sigue a la instrucción que llamó al procedimiento Property.

Exit Sub Sale inmediatamente del procedimiento Sub en el que aparece. La ejecución continúa con la instrucción que sigue a la instrucción que llamó al procedimiento Sub.

Comentarios

No confunda las instrucciones Exit con las instrucciones End. La instrucción Exit no define dónde termina una estructura.

GOSUB...RETURN (INSTRUCCIÓN)

Salta a una subrutina desde un procedimiento para posteriormente volver a él.

Sintaxis

GoSub línea... línea...

Return

El argumento línea puede ser cualquier etiqueta de línea o número de línea.

Comentarios

Puede utilizar GoSub y Return en cualquier lugar de un procedimiento, pero GoSub y su correspondiente Return deben estar en el mismo procedimiento. Una subrutina puede contener más de una instrucción Return, pero la primera instrucción Return que se encuentra hace que el flujo de la

Eudo González Página 105 19/04/2023

Page 106: Curso Excel Avanzado

MACROS EN EXCEL

ejecución regrese a la instrucción que sigue inmediatamente a la instrucción GoSub ejecutada más recientemente.

Nota No se puede entrar o salir de procedimientos Sub utilizando una instrucción GoSub...Return.

Sugerencia La creación de procedimientos separados a los que puede llamar proporciona una alternativa más estructurada que el uso de GoSub...Return.

Ejemplo de la instrucción GoSub...Return

En este ejemplo se utiliza GoSub para llamar a una subrutina ubicada dentro de un procedimiento Sub. La instrucción Return hace que se reanude la ejecución en la instrucción que está inmediatamente después de la instrucción GoSub. La instrucción Exit Sub se utiliza para evitar que el control de la ejecución continúe accidentalmente en la subrutina.

Sub GosubDemo()Dim Número' Pide un número al usuario. Número = InputBox("Escriba un número positivo para dividir entre 2.")' Sólo se utiliza la subrutina si el usuario escribe un ' número positivo. If Número > 0 Then GoSub MiRutina Debug.Print Número Exit Sub ' Utiliza Exit para evitar un error.MiRutina: Número = Número/2 ' Realiza la división. Return ' Devuelve control a la instrucción,End Sub ' que sigue a la instrucción GoSub.

GOTO (INSTRUCCIÓN)

Salta incondicionalmente a una línea especificada en un procedimiento.

Sintaxis

GoTo línea

El argumento línea puede ser cualquier etiqueta de línea o número de línea.

Comentarios

GoTo solamente puede saltar a líneas del procedimiento en el que aparece.

Nota Demasiadas instrucciones GoTo pueden ser difíciles de leer y de depurar. Siempre que sea posible, utilice instrucciones de control estructuradas (Do...Loop, For...Next, If...Then...Else, Select Case).

Ejemplo de la instrucción GoTo

Eudo González Página 106 19/04/2023

Page 107: Curso Excel Avanzado

MACROS EN EXCEL

En este ejemplo se utiliza la instrucción GoTo para saltar a etiquetas de línea ubicadas dentro de un procedimiento.

Sub GotoStatementDemo()Dim Número, MiCadena Número = 1 ' Inicializa la variable. ' Evalúa Número y salta al rótulo apropiado. If Número = 1 Then GoTo Line1 Else GoTo Line2 Line1: MiCadena = "Número es igual a 1" GoTo LastLine ' Va a la última linea.Line2: ' La siguiente instrucción nunca se ejecuta. MiCadena = "Número igual a 2"LastLine: Debug.Print MiCadena ' Imprime "Número es igual a 1" en la ' ventana InmediatoEnd Sub

ON ERROR (INSTRUCCIÓN)

Activa una rutina de control de errores y especifica la ubicación de la misma en un procedimiento; también puede utilizarse para desactivar una rutina de control de errores.

Sintaxis

On Error GoTo línea

Eudo González Página 107 19/04/2023

Page 108: Curso Excel Avanzado

MACROS EN EXCEL

On Error Resume NextOn Error GoTo 0

La sintaxis de la instrucción On Error puede tener cualquiera de los formatos siguientes:

Instrucción Descripción

On Error GoTo línea

Activa la rutina de control de errores que comienza en la línea especificada en el argumento necesario línea. El argumento línea es cualquier etiqueta de línea o número de línea. Si se produce un error en tiempo de ejecución, el control pasa a línea, activando el controlador de errores. La línea especificada en el argumento línea debe encontrarse en el mismo procedimiento que la instrucción On Error; o de lo contrario, se producirá un error en tiempo de compilación.

On Error Resume Next

Especifica que, en caso de que se produzca un error en tiempo de ejecución, el control pase a la instrucción que sigue inmediatamente a aquélla en la que se ha producido el error, donde continúa la ejecución. Se recomienda utilizar este formato en lugar de On Error GoTo cuando acceda a objetos.

On Error GoTo 0

Desactiva cualquier controlador de errores del procedimiento actual.

Comentarios

Si no utiliza una instrucción On Error, cualquier error en tiempo de ejecución que se produzca será fatal; es decir, aparecerá un mensaje de error y la ejecución se detendrá.

Un controlador de errores "activado" es aquél que se ha habilitado mediante una instrucción On Error y un controlador de errores “activo" es un controlador activado que se encuentra en el proceso de tratar un error. Si se produce un error mientras un controlador está activo (entre la aparición del error y una instrucción Resume, Exit Sub, Exit Function o Exit Property), el controlador de errores del procedimiento actual no puede tratarlo. El control vuelve al procedimiento que hace la llamada, y si éste cuenta con un controlador de errores activado, se utiliza ese controlador para tratar el error. Si también está activo el controlador de error del procedimiento que hace la llamada, el control vuelve hacia los procedimientos llamadores anteriores hasta llegar a un controlador de error activado, pero no activo. Si no se encuentra un controlador de errores activado e inactivo, el error es fatal en el punto en el que se produjo. Cada vez que el controlador de errores devuelve el control al procedimiento que hace la llamada, éste se convierte en el procedimiento actual. Una vez tratado un error con un controlador en cualquier procedimiento, la ejecución continúa en el procedimiento actual en el punto designado por la instrucción Resume.

Nota Una rutina de control de errores no es un procedimiento Sub ni Function. Es una sección de código marcada con una etiqueta o un número de línea.

Eudo González Página 108 19/04/2023

Page 109: Curso Excel Avanzado

MACROS EN EXCEL

Las rutinas de control de errores se basan en el valor de la propiedad Number del objeto Err para determinar la causa del error. Una rutina de control de errores debe comprobar y guardar los valores de las propiedades del objeto Err antes de que pueda producirse otro error o antes de que se llame a un procedimiento que pueda causarlo. Los valores de las propiedades del objeto Err reflejan solamente el error más reciente. El mensaje de error asociado a Err.Number se encuentra en Err.Description.

On Error Resume Next hace que la ejecución continúe en la instrucción que sigue inmediatamente a la que causó el error en tiempo de ejecución, o en la que sigue inmediatamente a la última llamada desde el procedimiento que contiene la instrucción On Error Resume Next. Esta instrucción permite continuar la ejecución a pesar de que se haya producido un error en tiempo de ejecución.. Puede colocar la rutina de control de errores donde se produciría el error, en vez de transferir el control a otra posición dentro del procedimiento. La instrucción On Error Resume Next pasa a estar inactiva cuando se llama a otro procedimiento, por tanto usted debe ejecutar una instrucción On Error Resume Next en cada rutina que llamada si desea un control de errores integrado dentro de la propia rutina.

Nota La construcción On Error Resume Next puede ser preferible a On Error GoTo cuando se traten errores generados durante el acceso a otros objetos. Comprobar Err después de cada interacción con un objeto elimina la ambigüedad en cuanto a qué objeto estaba accediendo el código cuando se produjo el error. De este modo puede saber qué objeto ha colocado el código de error en Err.Number, así como qué objeto generó originalmente el error (el objeto especificado en Err.Source).

On Error GoTo 0 desactiva el control de errores en el procedimiento actual. No especifica la línea 0 como el inicio del código de control de errores, ni siquiera cuando el procedimiento contiene una línea con el número 0. Sin una instrucción On Error GoTo 0, el control de errores se desactiva automáticamente al salir del procedimiento.

Para evitar que el código de control de errores se ejecute cuando no se ha producido ningún error, coloque una instrucción Exit Sub, Exit Function o Exit Property inmediatamente antes de la rutina de control de errores, como en el ejemplo siguiente:

Sub InicializarMatriz(Var1, Var2, Var3, Var4) On Error GoTo ControlErrores . . . Exit SubControlErrores: . . . Resume NextEnd Sub

Aquí, el código de control de errores viene a continuación de la instrucción Exit Sub y precede a End Sub para separarlo del flujo normal del procedimiento. El código de control de errores puede situarse en cualquier lugar del procedimiento.

Los errores no interceptados en los objetos se devuelven a la aplicación que los controla cuando el objeto está trabajando como un archivo ejecutable. En el entorno de desarrollo, estos errores sólo se devuelven a la aplicación si se establecen las opciones adecuadas. Consulte la documentación de su

Eudo González Página 109 19/04/2023

Page 110: Curso Excel Avanzado

MACROS EN EXCEL

aplicación host para una descripción de las opciones que deben establecerse durante la depuración, cómo establecerlas y si el host puede crear clases.

Si crea un objeto que accede a otros objetos, deberá intentar tratar los errores que tales objetos devuelvan sin procesar. Si no puede tratarlos, copie el código de error en Err.Number en uno de sus propios errores y luego páselos al elemento que llamó a su objeto. Debe especificar el error agregando su propio código de error a la constante vbObjectError. Por ejemplo, si su código de error es 1052, asígnelo de esta forma:

Err.Number = vbObjectError + 1052

Nota Los errores del sistema al realizar llamadas a bibliotecas de vínculos dinámicos (DLL) o recursos de código de Macintosh no generan excepciones y no se pueden tratar con el control de errores de Visual Basic. Al llamar a funciones DLL, debe comprobar en los valores devueltos si la función ha tenido éxito o ha fracasado (según las especificaciones de la API) y, en el caso de un fallo, comprobar el valor de la propiedad LastDLLError del objeto Err. LastDLLError siempre devuelve cero en Macintosh.

OPTION EXPLICIT (INSTRUCCIÓN)

Se usa en el nivel de módulo para forzar declaraciones explícitas de todas las variables en dicho módulo.

Sintaxis

Option Explicit

Comentarios

Si se usa, la instrucción Option Explicit debe aparecer en un módulo antes de cualquier procedimiento.

Cuando Option Explicit aparece en un módulo, debe declarar explícitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrirá un error en tiempo de compilación.

Si no usa la instrucción Option Explicit todas las variables no declaradas son Variant, a menos que el tipo predeterminado esté especificado de otra manera con una instrucción Deftipo.

Nota Utilice Option Explicit para evitar escribir incorrectamente el nombre de una variable existente o para evitar confusiones en el código, donde el alcance de la variable no está claro.

PUBLIC (INSTRUCCIÓN)

Se usa en el nivel de módulo para declarar variables públicas y asignarles espacio para almacenamiento.

Eudo González Página 110 19/04/2023

Page 111: Curso Excel Avanzado

MACROS EN EXCEL

Sintaxis

Public [WithEvents] nombre_variable[([subíndices])] [As [New] tipo] [,[WithEvents] nombre_variable[([subíndices])] [As [New] tipo]] . . .

La sintaxis de la instrucción Public consta de las siguientes partes:

Parte Descripción

WithEvents Opcional. La palabra clave especifica que varname es una variable de objeto utilizada para responder a los eventos desencadenados por un objeto ActiveX. WithEvents es válido solamente en módulos de clase. Puede declarar tantas variables individuales como desee mediante WithEvents, pero no puede crear matrices con WithEvents. No puede utilizar New con WithEvents.

nombre_variable Requerido. Nombre de la variable; sigue las convenciones estándar de nombres de variable.

Subíndices Opcional. Dimensiones de una variable de matriz; se pueden declarar hasta 60 dimensiones múltiples. El argumento subíndices usa la sintaxis siguiente:

[inferior To] superior [,[inferior To] superior] . . .

Cuando no se declara explícitamente en inferior, el límite inferior de una matriz se controla mediante la instrucción Option Base. El límite inferior es cero si no hay ninguna instrucción Option Base.

New Opcional. Palabra clave que permite la creación implícita de un objeto. Si utiliza New cuando declara la variable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instrucción Set para asignar la referencia de objeto. La palabra clave New no se puede utilizar para declarar variables de cualquier tipo de datos intrínseco, no se puede utilizar para declarar instancias de objetos dependientes y no se puede utilizar con WithEvents.

tipo Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitida actualmente), Date, String, (para cadenas de longitud variable), String * length (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Use una cláusula As tipo distinta para cada variable que se defina.

Comentarios

Las variables declaradas mediante la instrucción Public están disponibles para todos los procedimientos en todos los módulos de todas las aplicaciones, a menos que Option Private Module esté en efecto; en este caso, las variables sólo son públicas dentro del proyecto en el que residen.

Eudo González Página 111 19/04/2023

Page 112: Curso Excel Avanzado

MACROS EN EXCEL

Precaución La instrucción Public no se puede usar en un módulo de clase para declarar una variable de cadena de longitud fija.

Use la instrucción Public para declarar el tipo de datos de una variable. Por ejemplo, la instrucción siguiente declara una variable como de tipo Integer:

Public NúmeroDeEmpleados As Integer

Utilice también la instrucción Public para declarar el tipo de objeto de una variable. La instrucción siguiente declara una variable para una nueva instancia de una hoja de cálculo.

Public X As New Worksheet

Si no utiliza la palabra clave New al declarar una variable de objeto, la variable que se refiere a un objeto debe asignarse a un objeto existente mediante la instrucción Set antes de que se pueda usar. Hasta que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, el cual indica que no se refiere a ninguna instancia en particular de un objeto.

También puede utilizar una instrucción Public con paréntesis vacíos para declarar matrices dinámicas. Después de declarar una matriz dinámica, use la instrucción ReDim dentro de un procedimiento para definir el número de dimensiones y elementos de la matriz. Si intenta volver a declarar un dimensión para una matriz cuyo tamaño se ha especificado explícitamente en una instrucción Private, Public o Dim, ocurrirá un error.

Si no especifica un tipo de datos o un tipo de objeto y no existe una instrucción Deftipo en el módulo, la variable es Variant de manera predeterminada.

Cuando se inicializan las variables, una variable numérica se inicializa a 0, una cadena de longitud variable se inicializa a una cadena de longitud cero ("") y una cadena de longitud fija se rellena con ceros. Las variables Variant se inicializan a Empty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta.

Eudo González Página 112 19/04/2023

Page 113: Curso Excel Avanzado

MACROS EN EXCEL

MSGBOX (FUNCIÓN)

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario.

Sintaxis

MsgBox(prompt[, buttons][, title][, helpfile, context])

La sintaxis de la función MsgBox consta de estos argumentos con nombre:

Parte Descripción

prompt Requerido. Expresión de cadena que representa el prompt en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. Si prompt consta de más de una línea, puede separarlos utilizando un carácter de retorno de carro (Chr(13)) o un carácter de avance de línea (Chr(10)), o una combinación de caracteres de retorno de carro – avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.

buttons Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.

title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación.

helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se especifica helpfile, también se debe especificar context.

context Opcional. Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también se debe especificar helpfile.

Valores

El argumento buttons tiene estos valores:

Constante Valor Descripción

VbOKOnly 0 Muestra solamente el botón Aceptar.

Eudo González Página 113 19/04/2023

Page 114: Curso Excel Avanzado

MACROS EN EXCEL

VbOKCancel 1 Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar.

VbYesNo 4 Muestra los botones Sí y No.

VbRetryCancel 5 Muestra los botones Reintentar y Cancelar.

VbCritical 16 Muestra el icono de mensaje crítico.

VbQuestion 32 Muestra el icono de pregunta de advertencia.

VbExclamation 48 Muestra el icono de mensaje de advertencia.

VbInformation 64 Muestra el icono de mensaje de información.

VbDefaultButton1 0 El primer botón es el predeterminado.

VbDefaultButton2 256 El segundo botón es el predeterminado.

VbDefaultButton3 512 El tercer botón es el predeterminado.

VbDefaultButton4 768 El cuarto botón es el predeterminado.

VbApplicationModal 0 Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.

VbSystemModal 4096 Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

VbMsgBoxHelpButton 16384 Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground 65536 Especifica la ventana del cuadro de mensaje como la ventana de primer plano.

VbMsgBoxRight 524288 El texto se alínea a la derecha.

VbMsgBoxRtlReading 1048576 Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.

El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512)

Eudo González Página 114 19/04/2023

Page 115: Curso Excel Avanzado

MACROS EN EXCEL

determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo.

Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales.

Valores devueltos

Constante Valor Descripción

vbOK 1 Aceptar

vbCancel 2 Cancelar

vbAbort 3 Anular

vbRetry 4 Reintentar

vbIgnore 5 Ignorar

vbYes 6 Sí

vbNo 7 No

Comentarios

Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente al context. Algunas aplicaciones host, por ejemplo Microsoft Excel, también agregan automáticamente un botón Ayuda al cuadro de diálogo.

Si el cuadro de diálogo cuenta con un botón Cancelar, presionar la tecla ESC tendrá el mismo efecto que hacer clic en este botón. Si el cuadro de diálogo contiene un botón Ayuda, se suministra ayuda interactiva para ese cuadro de diálogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.

Nota Si desea especificar más que el primer argumento con nombre, debe utilizar MsgBox en una expresión. Si desea omitir algún argumento de posición, debe incluir el delimitador de coma correspondiente.

Eudo González Página 115 19/04/2023

Page 116: Curso Excel Avanzado

MACROS EN EXCEL

USER FORM

USERFORM (OBJETO), USERFORMS (COLECCIÓN)

Un objeto UserForm es una ventana o cuadro de diálogo que conforma una parte del interfaz de usuario de una aplicación.

La colección UserForms es una colección cuyos elementos representan cada UserForm cargado en una aplicación. La colección UserForms tiene una propiedad Count, una propiedad Item y un método Add. Count especifica el número de elementos en la colección; Item (el miembro predeterminado) especifica un miembro de la colección específico y Add coloca un nuevo elemento UserForm en la colección.

Sintaxis

UserForm

UserForms[.Item](índice)

El marcador de posición índice representa un entero entre 0 y UserForms.Count – 1. Item es el miembro predeterminado de la colección UserForms y no se necesita especificar.

Comentarios

Puede utilizar la colección UserForms para pasar a través de todos los formularios de usuario cargados en una aplicación. Se identifica con una variable intrínseca global llamada UserForms. Puede transferir UserForms(índice) a una función cuyo argumento está especificado como una clase UserForm.

Los formularios de usuario tienen propiedades que determinan la apariencia, como posición, tamaño y color; y aspectos de su comportamiento.

Los formularios de usuario también pueden responder a eventos iniciados por un usuario o activados por el sistema. Por ejemplo, puede escribir código en el procedimiento de evento Initialize del UserForm para inicializar variables a nivel de módulo antes de mostrar el UserForm.

Además de propiedades y eventos, puede utilizar métodos para manipular formularios de usuario utilizando código. Por ejemplo, puede utilizar el método Move para cambiar la ubicación y tamaño de un UserForm.

Cuando diseña formularios de usuario, establezca la propiedad BorderStyle para definir bordes, y establezca la propiedad Caption para colocar texto e la barra de título. En código, puede utilizar los métodos Hide y Show para hacer invisible o visible un UserForm en tiempo de ejecución.

UserForm es un tipo de datos Object. Puede declarar variables como de tipo UserForm antes de colocarlas en una instancia de un tipo de UserForm declarado en tiempo de diseño. De modo parecido, puede transferir un argumento a un procedimiento como de tipo UserForm. Puede crear instancias

Eudo González Página 116 19/04/2023

Page 117: Curso Excel Avanzado

MACROS EN EXCEL

múltiples de formularios de usuario en código utilizando la palabra clave New en instrucciones Dim, Set y Static.

Puede tener acceso a la colección de controles en un UserForm utilizando la colección Controls. Por ejemplo, para ocultar todos los controles en un UserForm, utilice un código parecido al siguiente:

For Each Control in UserForm1.Controls Control.Visible = FalseNext Control

UserForm (Ventana)

Permite crear ventanas o cuadros de diálogo en el proyecto. Puede dibujar y ver los controles en un formulario.

Mientras esté diseñando un formulario:

Cada ventana de formulario tiene un botón Maximizar, Minimizar y Cerrar.

Puede ver la cuadrícula del formulario y determinar el tamaño de las líneas de cuadrícula en la ficha General del cuadro de diálogo Opciones.

Puede utilizar los botones del cuadro de herramientas para dibujar controles en el formulario. Puede establecer controles para alinearlos con la cuadrícula del formulario en la ficha General del cuadro de diálogo Opciones.

CONTROL LABEL

Muestra un texto descriptivo.

Comentarios

Un control Label en un formulario muestra un texto descriptivo como títulos, leyendas, imágenes o breves instrucciones. Por ejemplo, las etiquetas para una libreta de direcciones podrían incluir un control Label para el nombre, la calle o la ciudad. Un control Label no muestra valores de orígenes de datos ni expresiones; es siempre independiente y no cambia cuando se mueve de un registro a otro.

La propiedad predeterminada de un control Label es Caption.

El evento predeterminado de un control Label es Click.

Eudo González Página 117 19/04/2023

Page 118: Curso Excel Avanzado

MACROS EN EXCEL

CONTROL TEXTBOX

Muestra información de un usuario o de un conjunto de datos organizados.

Comentarios

Un control TextBox es el control utilizado más habitualmente para mostrar información escrita por un usuario. También puede mostrar un conjunto de datos como una tabla, una consulta, una hoja de cálculo o el resultado de un cálculo. Si un control TextBox es dependiente de un origen de datos, al cambiar el contenido del control TextBox también cambia el valor del origen de datos dependiente.

El formato aplicado a cualquier fragmento de texto en un control TextBox afectará a todo el texto del control. Por ejemplo, si cambia la fuente o el tamaño del punto de cualquier carácter del control, el cambio afectará a todos los caracteres del control.

La propiedad predeterminada de un control TextBox es Value.

El evento predeterminado de un control TextBox es Change.

CONTROL COMBOBOX

Combina las características de un control ListBox y un control TextBox. El usuario puede escribir un valor nuevo, como en un control TextBox o bien puede seleccionar un valor existente como en un control ListBox.

Comentarios

Si un control ComboBox es dependiente de un origen de datos, inserta el valor que el usuario escribe o selecciona en el origen de datos. Si un cuadro combinado de múltiples columnas es dependiente, entonces la propiedad BoundColumn determina qué valor se almacena en el origen de datos dependiente.

La lista en un control ComboBox está formada por filas de datos. Cada fila puede tener una o más columnas, las cuales pueden mostrarse con o sin títulos. Algunas aplicaciones no son compatibles con títulos de columnas, mientras que otras proporcionan solamente una compatibilidad limitada.

La propiedad predeterminada de un control ComboBox es Value.

Eudo González Página 118 19/04/2023

Page 119: Curso Excel Avanzado

MACROS EN EXCEL

El evento predeterminado de un control ComboBox es Change.

Nota Si desea que se muestre siempre más de una línea de la lista, puede utilizar un control ListBox en vez de un control ComboBox. Si desea utilizar un control ComboBox y limitar los valores a los que están incluidos en la lista, puede establecer la propiedad Style del control ComboBox de manera que el control se asemeje a un cuadro de lista desplegable.

CONTROL LISTBOX

Muestra una lista de valores y le permite seleccionar uno o varios.

Comentarios

Si el control ListBox es dependiente de un origen de datos, almacena el valor seleccionado en el origen de datos.

El control ListBox puede aparecer como una lista o como un grupo de controles OptionButton o CheckBox.

La propiedad predeterminada de un control ListBox es Value.

El evento predeterminado de un control ListBox es Click.

Nota No podrá dejar texto dentro de un control ListBox.

EJEMPLOS DE MACROS

AÑADIR BORDES GRUESOS

Por ejemplo si se desea colocar el borde grueso de las celdas A8 a B14, entonces:

Option Explicit

Sub Bordes()'' Bordes' Coloca bordes gruesos al' rango de celdas A8 y B14

' Range("A8:B14").Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop)

Eudo González Página 119 19/04/2023

Page 120: Curso Excel Avanzado

MACROS EN EXCEL

.LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End WithEnd Sub

CENTRAR

Para centrar el contenido, hacer lo siguiente:

Sub Centrar()'' Centrar Macro' Centrar el contenido de las celdas B1 a D1'

' Range("B1:D1").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End WithEnd Sub

Eudo González Página 120 19/04/2023

Page 121: Curso Excel Avanzado

MACROS EN EXCEL

CAMBIAR A NEGRILLAS

Para Poner en negritas el contenido del rango de celdas B1:D1, hacer lo siguiente:

Sub Negrillas()'' Negrillas Macro' Poner en negrilla el rango B1:D1'

' Range("B1:D1").Select Selection.Font.Bold = TrueEnd Sub

ESCRIBIR DIAS DE LA SEMANA

Para escribir dias de la semana en el rango A8:A19, hacer lo siguiente:

Sub DiaSemana()'' DiaSemana Macro' Coloca en el rango A8:A19 los dias de la semana'

' Range("A8").Select ActiveCell.FormulaR1C1 = "Lunes" Selection.AutoFill Destination:=Range("A8:A19"), Type:=xlFillDefault Range("A8:A19").SelectEnd Sub

EJEMPLO DE APLICACIÓN 1

Diseñar el formulario con las siguientes características :

1. Ingresar el nombre del usuario2. Digitar la contraseña

3. Hacer un click en el botón Aceptar para Ingresar al sistema, si es correcta debe salir un aviso “Bienvenido al sistema”. si no digita la clave correcta debe salir un aviso “No tiene autorización”

4. Hacer un click en el botón Salir si no tiene autorización.

Pasos

1. Insertams el userform, Userform1.

Eudo González Página 121 19/04/2023

Page 122: Curso Excel Avanzado

MACROS EN EXCEL

2. En el userform1 insertamos dos etiquetas label1 y label2, dos cajas de texto textbox1 y textbox2 y finalmente dos botones de comandos commandbutton1 y commandbutton2.

3. Seleccionamos el userform1 y presionamos la tecla F7 para ver el codigo

4. Al visualizar el codigo vamos a ver algo asi:

Option Explicit

Private Sub UserForm_Click()End Sub

5. Vamos a cambiar el userform_click() por userform_initialize(). Con esto logramos que cuando corramos el codigo se ejecuten primero las instrucciones que coloquemos en esta rutina.

6. Vamos a definir aca los textos que colocaremos en los controles, para ello agregaremos las siguientes instrucciones empleando el comando with.

Private Sub UserForm_initialize() UserForm1.Caption = "Bienvenido al Sistema" Label1.Caption = "Usuario" Label2.Caption = "Clave" TextBox2.PasswordChar = "*" With CommandButton1 .Caption = "Aceptar" .Accelerator = "A" End With With CommandButton2 .Caption = "Salir" .Accelerator = "S" End WithEnd Sub

7. Presinomos el boton SHIT-F7 para ver la presentacion de nuestro cuadro de control, y le damos doble click al commanbutton1.

8. Se nos mostrara el procedimiento cuando aplicamos el boton de “Aceptar”, en el vamos a recuperar la información del usuario y la variable. Si el usuario es correcto y el password tambien se emitira el mensaje de bienvenida en caso contrario lo indicaremos tambien.

Private Sub CommandButton1_Click() Usuario = TextBox1.Value Contraseña = TextBox2.Value If Usuario = "Pedro" And Contraseña = "1234" Then MsgBox "Bienvenido Pedro", vbInformation, "Atencion" Unload Me 'Ir al programa Else MsgBox "Usuario o Password errado", vbCritical, "Atencion" Unload Me End If

Eudo González Página 122 19/04/2023

Page 123: Curso Excel Avanzado

MACROS EN EXCEL

End Sub

9. Presinomos el boton SHIT-F7 para ver la presentacion de nuestro cuadro de control, y le damos doble click al commanbutton2. Alli escribiremos la secuencia para salir del menu de entrada

Private Sub CommandButton2_Click() Unload MeEnd Sub

10. Para llamar a nuestro formulario desde el modulo escribiremos la siguiente rutina:

Option Explicit

Sub FormularioBienvenida() Load UserForm1 UserForm1.ShowEnd Sub

11. Si deseamos que el formulario se ejecute cuando se abra la hoja de calculo cambiamos la instrucción Sub FormularioBienvenida() por Sub Auto_open(). Asi cuando abrimos el archivo de Excel nos iniciara con nuestro formulario de control.

EJEMPLO DE APLICACIÓN 2

Diseñe una funcion para calcular el area de un circulo teniendo como dato el diametro del mismo.

Pasos:

1. Abrimos el editor de Visual Basic

2. Escribimos la funcion:

Option Explicit

Function AreaCirculo(Diametro As Double) As Double End Function

Eudo González Página 123 19/04/2023

Page 124: Curso Excel Avanzado

MACROS EN EXCEL

3. Escribimos la formula del calculo del area4. El procedimiento nos quedara asi:

Option Explicit

Function AreaCirculo(Diametro As Double) As Double AreaCirculo = 3.141516 / 4 * (Diametro) ^ 2End Function

Para probar nuestra funcion seguiremos el siguiente procedimiento:

1. Cerramos el editor de visual basic y en la hoja de calculo colocamos en una celda el numero 2 que va a corresponder a 2” de diametro

2. Colocamos el cursos en la celda contigua, y alli aplicamos Insertar>funcion y seleccionamos definidas por el usuario.

Eudo González Página 124 19/04/2023

Page 125: Curso Excel Avanzado

MACROS EN EXCEL

3. Seleccionamos la funcion AreaCirculo y presionamos el boton Aceptar.

4. Nos va a aparecer el menu siguiente en el cual vamos a indicar donde se encuentra la variable Diametro

1. Presionamos Aceptar obteniendo el area del circulo.

Eudo González Página 125 19/04/2023