MACROS

Instituto de Educación Superior Tecnológica Publico CHOCOPE MACROS: APLICACIONES VBA CON EXCEL 1. Introducción al VBA E

Views 192 Downloads 5 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Instituto de Educación Superior Tecnológica Publico CHOCOPE

MACROS: APLICACIONES VBA CON EXCEL 1. Introducción al VBA Excel es una aplicación desarrollada y bajo ese sentido todas las fórmulas, funciones y demás acciones que realice bajo Excel en realidad son ejecutadas mediante un código que no es visible por el usuario, este se realiza en un entorno de programación VBA. 2. Definición del VBA Las iniciales VBA provienen del inglés Visual Basic for Applications, el cual podemos traducirlo como Aplicaciones para Visual Basic, este es un entorno de desarrollo que se encuentra de cualquier aplicación de Office. Finalmente, podríamos decir que “VBA permite automatizar las tareas que usted realiza en excel”, convirtiendo así una tarea simple en una tarea dinámica e interactiva 3. ¿Qué es una macro? Una macro son un conjunto de instrucciones que sirven para automatizar procesos. Refiriéndonos a Excel, supongamos que realizamos frecuentemente la acción de seleccionar un rango para aplicarle negrita, cambio de fuente y centrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para que ejecute los tres procesos automáticamente. 4 Macros y su relación con VBA Una macro en Excel permite automatizar tareas repetitivas de modo que el usuario grabe sus tareas cotidianas y las ejecute cuando crea conveniente; es así que dichas tareas serán registradas debidamente mediante códigos en VBA y podrán ser usadas en cualquier momento a través de una invocación. Veamos un ejemplo Sub rango() Range("B4:J4").Select With Range .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False. End With Range.Merge Range.Font.Size = 20 With Range.Font .Name = "Tahoma" .Size = 20 .Underline = xlUnderlineStyleNone .ThemeColor = xlthemeColorLigth1 .TintAndShade = 0 1

Instituto de Educación Superior Tecnológica Publico CHOCOPE

.ThemeFont = xlThemeFontNone End With With Range.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Range.Font .Color = xlThemeColorAccent6 .TintAndShade = 0 End With End Sub Objetos, propiedades y métodos. A la hora de trabajar con macros en Excel, deben tenerse claros ciertos conceptos de lo que se llama programación orientada a objetos (OOP). No nos extenderemos demasiado sobre la OOP, pero si definiremos a continuación los conceptos de Objeto, Propiedades y Métodos. OBJETO. Cuando en el mundo real nos referimos a objeto significa que hablamos de algo más o menos abstracto que puede ser cualquier cosa. Si decidimos concretar un poco más podemos referirnos a objetos coche, objetos silla, objetos casa, etc. En OOP, la generalización (o definición) de un objeto se llama Clase, así la clase coche seria como la representante de todos los coches del mundo, mientras que un objeto coche sería un coche en concreto. De momento, no definiremos ni estudiaremos las clases, sino que nos concentraremos en los objetos, tenga en cuenta pero que cualquier objeto está definido por una clase. Cuando decimos que la clase coche representa a todos los coches del mundo significa que define como es un coche, cualquier coche. Dicho de otra forma y para aproximarnos a la definición informática, la clase coche define algo que tiene cuatro ruedas, un motor, un chasis, entonces, cualquier objeto real de cuatro ruedas, un motor, un chasis, es un objeto de la clase coche. PROPIEDADES. Cualquier objeto tiene características o propiedades como por ejemplo el color, la forma, peso, medidas, etc. Estas propiedades se definen en la clase y luego se particularizan en cada objeto. Así, en la clase coche se podrían definir las propiedades Color, Ancho y Largo, luego al definir un objeto concreto como coche ya se particularizarían estas propiedades a, por ejemplo, Color = Rojo, Ancho = 2 metros y Largo = 3,5 metros. MÉTODOS. La mayoría de objetos tienen comportamientos o realizan acciones, por ejemplo, una acción evidente de un objeto coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final.

2

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Cualquier proceso que implica una acción o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda manifestarse en cualquiera de sus objetos. Así, en la clase coche se definirían en el método mover todos los procesos necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto de la clase coche simplemente tendría que invocar este método para trasladarse de un punto inicial a un punto final, cualesquiera que fueran esos puntos. Repasemos a continuación todos estos conceptos, pero ahora desde el punto de vista de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto hoja de cálculo) o Range (Objeto casilla o rango de casillas). Un objeto Range está definido por una clase donde se definen sus propiedades, recordemos que una propiedad es una característica, modificable o no, de un objeto. Entre las propiedades de un objeto Range están Value , que contiene el valor de la casilla , Column y Row que contienen respectivamente la fila y la columna de la casilla, Font que contiene la fuente de los caracteres que muestra la casilla. Range, como objeto, también tiene métodos, recordemos que los métodos sirven llevar a cabo una acción sobre un objeto. Por ejemplo, el método Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles. Conjuntos. Un conjunto es una colección de objetos del mismo tipo, para los que conozcan algún lenguaje de programación es un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir más de una hoja (WorkSheet), todas las hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto se referencia por un índice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarán por WorkSheets(1), WorkSheets(2) y WorkSheets(3). Objetos de Objetos. Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, número de válvulas, etc. y métodos, como aumentar revoluciones, coger combustible, mover pistones, etc. En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es también un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente Propiedades de un objeto que serán también Objetos. Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range. PROGRAMACIÓN ORIENTADA A OBJETOS O PROGRAMACIÓN BASADA EN OBJETOS. Hay una sutil diferencia entre las definiciones del título. Programación orientada a Objetos, significa que el programador trabaja con objetos fabricados por él mismo, es decir, el programador es quien implementa las clases para luego crear objetos a partir de ellas. Lo que 3

Instituto de Educación Superior Tecnológica Publico CHOCOPE

haremos nosotros, por el momento, será utilizar objetos ya definidos por la aplicación Excel (WorkSheets, Range,...) sin implementar ninguno de nuevo, por lo que en nuestro caso es más correcto hablar de programación basada en objetos. Observe que esta es una de las grandes ventajas de la OOP, utilizar objetos definidos por alguien sin tener que conocer nada sobre su implementación, sólo debemos conocer sus propiedades y métodos y utilizarlos de forma correcta. Bueno, después de esta extensa pero necesaria introducción pasemos ya a hacer alguna cosa en Excel. No es necesario que se aprenda lo anterior al pié de la letra y tampoco es necesario que lo comprenda al cien por cien, sólo téngalo presente para las definiciones que vienen a continuación y verá cómo va asimilando los conceptos de Objeto, propiedades, métodos, etc.

ACTIVAR LA FICHA DESARROLLAR EN EL ENTORNO DE EXCEL Inicialmente Excel presenta las siguientes fichas Para iniciar el trabajo de VBA necesitamos activar la ficha Desarrollador, para lo cual debemos realizar los siguientes pasos: 1. Haga clic en el botón ARCHIVO de la cinta de opciones de Excel 2. De la lista de opciones mostrada en el lado izquierdo de la ventana, seleccione Opciones 3. Le aparecerá la ventana de opciones de Excel, aquí deberá seleccionar Personalizar cinta de opciones y activar el check

PRINCIPALES BOTONES DE LA FICHA DESARROLLADOR Descripción de los principales botones de la ficha Desarrollador BOTON DESCRIPCION O FUNCIONALIDAD Abre la ventana editora de VBA, desde aquí podemos iniciar las aplicaciones VBA tanto en código como de modo visual Abre la ventana de diálogo de selección de macros, desde aquí podemos seleccionar una macro para ejecutarlo, inspeccionarlo paso a paso, modificarlo, eliminarlo y/o crear uno nuevo. Permite iniciar la grabación de una macro a partir de un documento de Excel. Aquí debemos tener especial cuidado, pues al iniciar la grabación todo lo que realice en la hoja quedará registrado en la macro Permite personalizar la configuración de la seguridad en la macro. Más adelante explicaremos este punto, por ahora solo podemos mencionar que al iniciar una aplicación VBA debe configurar la seguridad de las macros.

TECLA DE ACCESO RÁPIDO



-

4

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Muestra los controles para el diseño de formularios en la hoja de Excel. En nuestro caso usaremos el control Botón para crear un puente entre la hoja de Excel y el código VBA

ACCESO AL ENTORNO VBA Primera forma : Ficha Desarrollar > Visual Basic Segunda Forma : ALT + F11 Tercera Forma : Ficha Desarrollador > Ver Código

HABILITAR LA SEGURIDAD DE LAS MACROS Es necesario habilitar el acceso al trabajo con macros, ya que cuando se desarrolle una aplicación VBA Excel solicitará la habilitación del contenido tal como se muestra en la siguiente imagen

5

Instituto de Educación Superior Tecnológica Publico CHOCOPE

PRACTICA DE MACRO EN EXCEL 1. CASO DESARROLLADO 1: CONVERSION DE MEDIDAS Implemente un procedimiento que permita convertir una cantidad dada en metros a sus equivalentes en centímetros, pulgadas, pies y yardas. Considere la siguiente información. 01 metro = 100 centímetro 01 pie = 12 pulgadas 01 yarda = 03 pies 01 pulgada = 2.54 centímetros PASOS. a. En un documento nuevo en Excel elabore el siguiente cuadro

b. Acceda al entorno VBA presionando c. Agregar un módulo la proyecto Desde el entorno VBA, seleccionar el menú Insertar > Módulo d. Digite el siguiente código dentro del módulo

Explicación del código Capturamos el valor de la celda con la sentencia metros = Range (“C4”).value, luego calculamos los valores de la conversión según los datos del problema. Finalmente, enviamos la información resultante a las celdas correspondientes por medio de la sentencia Range(“C6”). Value e. Agregamos un botón en la hoja de Excel. Desde la ficha Desarrollador seleccione Botón desde Controles de formularios del . Forme un cuadro en la hoja de Excel y le aparecerá la siguiente ventana:

6

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Seleccione el procedimiento muestraConversion1 desde la ventana y haga clic en el botón Aceptar f. Cambie el nombre del botón por Conversión 01 g. Pruebe la aplicación, ingresando un valor en la celda C4 y presionando en el botón Conversión 01 h. Finalmente, la hoja de Excel quedará de la sgte. manera

2. CASO DESARROLLADO 2: REPARTICIÓN DE CAPITAL Implemente un procedimiento que permita determinar el monto capital y el porcentaje que le corresponde a cada uno de los socios de una determinada empresa a partir de los montos que aportan cada uno. Pasos: a. En un documento nuevo de Excel elabore el siguiente cuadro:

b. Acceda al entorno VBA presionando c. Agregue un módulo al proyecto Desde el entorno VBA, seleccionar el menú Insertar > Módulo d. Digite el sgte. código dentro del módulo

Explicación del código Iniciamos capturando cada monto registrado por los socios con la sentencia mSocio1 = Range(“C4”).Value de la misma forma se realizará para los demás socios, luego se calcula el monto capital sumando todos los montos, seguidamente calculamos el porcentaje que le corresponde a cada socio usando regla básica de tres simples.

7

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Finalmente, se envía toda la información resultante a las celdas correspondientes en la hoja de Excel. e. Agregamos un botón en la hoja de Excel. Desde la ficha desarrollador seleccione Botón desde Controles de formulario, del botón INSERTAR. Forme un cuadro en la hoja de Excel y le aparecerá la siguiente ventana

Seleccione el procedimiento muestraReparticion01 desde la ventana y haga clic en botón Aceptar. f. Cambie el nombre del botón por g. Pruebe la aplicación, ingresando montos en las celdas C4, C5, C6 y haciendo clic en el botón Mostrar Repartición.

CASO DESARROLLADO 3: COMPRA DE PRODUCTOS Implemente un procedimiento que permita determinar el importe de compra, descuento y neto por la compra de un producto en una tienda comercial, sabiendo que se le aplica el 11% de descuento. Pasos: a. En un documento nuevo de Excel elabore el siguiente cuadro:

b. Acceda al entorno VBA presionando c. Agrega un módulo al proyecto Desde el entorno VBA, seleccionar el menú Insertar > Módulo d. Digite el siguiente código dentro del módulo

8

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Explicación del código Iniciamos capturando el precio del producto y la cantidad comprada, no será necesario capturar el nombre del producto. Luego realizamos los cálculos de los importes solicitados por el problema Finalmente, se envía toda la información resultante a las celdas correspondientes en la hoja de Excel. e. Agregamos un botón en la hoja de Excel. Desde la ficha Desarrollador seleccione botón desde el Controles de formulario del botón Insertar. Forme un cuadro en la hoja de Excel y le aparecerá la sgte ventana.

Seleccione el procedimiento calculaPago desde la ventana y haga clic en el botón Aceptar f. Cambie el nombre del botón por Muestra cálculos g. Pruebe la aplicación, ingresando el nombre del producto en la celda C5, precio en la celda C6, la cantidad en la celda C7 y haciendo clic en el botón Muestra cálculos h. Finalmente, la hoja de cálculo de Excel quedará de la sgte manera.

9

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Fundamentos de programación 1. FASES PARA LA SOLUCIÓN DE UN PROGRAMA La idea de programar en VBA es tener en claro el objetivo de la aplicación, solo así podremos determinar las variables o sentencias que se necesita para su aplicación. Por tal motivo, primero debe realizar las siguientes fases ACTIVIDADES Determinar cuál es el objetivo del problema Plantear una solución adecuada Implementar las funciones o procedimientos que den solución al problema Ejecutar la aplicación VBA Comprobar que el resultado sea adecuado

FASES Análisis de Problema Diseño del algoritmo Codificación del problema Ejecución del programa Verificación y depuración

1.1 FASE 1: ANALISIS DEL PROBLEMA En esta fase podremos determinar las variables que se necesitan para la solución del problema, así como las funciones que se debe emplear. Responda las siguientes preguntas PREGUNTAS ¿Qué datos necesito para la solución del problema? ¿Cómo proceso la solución del problema? ¿Cuál es el resultado?

VALORES DE SOLUCION Valores de entrada de la aplicación Formulas o funciones que se emplean para la solución del problema Representa la salida de la aplicación, es decir, el resultado esperado

CASOS DE ESTUDIO 1. Una empresa inmobiliaria necesita tener el control del tiempo que se demoran en realizar una obra. Si doce obreros, trabajando 8 diarias, terminan un proyecto en 25 días. ¿Cuánto tardaran en hacer ese mismo proyecto obreros trabajando horas diarias? Solución. Analizando el problema, encontramos los siguientes datos Cantidad de obreros Horas de trabajo Días Trabajadas 12 N 25 5 T X Ahora organizaremos los valores encontrados de tal forma que satisfaga el patrón de valores de Entrada – Proceso – Salida. Entrada Proceso Salida

Cantidad de obreros, Horas de trabajo Días = 25 * 12/N * 8/T Días trabajados

CODIGOS: 10

Instituto de Educación Superior Tecnológica Publico CHOCOPE

2.

Una casa de cambio en el centro de la ciudad necesita conocer el monto total en euros a partir de tres cantidades de dinero: soles, dólares, marcos, euros. La casa considera los siguientes tipos de cambio: 1 dólar = 3.51 soles 1 dólar = 1.09 euros 1 dólar = 2.12 marcos Solución. Analizando el problema, encontramos los siguientes datos VARIABLES Posibles valores Soles 10000.00 Dólares 7500.00 Marcos 1500.00 Euros X Ahora organizaremos los valores encontrados de tal forma que satisfaga el patrón de valores Entradas – Proceso –Salida. Entrada Soles, Dólares, Marcos Proceso Euros = (soles/3.51 + dólares + marcos/2.12)*1.09 salida Euros

11

Instituto de Educación Superior Tecnológica Publico CHOCOPE

CODIGOS

3. Implemente una aplicación que permita leer una temperatura en grados centígrados (°C) y la convierta a sus equivalentes en grados Fahrenheit (°F), grados Kelvin (°K) y grados Rankine (°R). use las siguientes formulas. °F = 9*°C/5 + 32 °K = °R -187 °R = °C + 460 Analizando el problema, encontramos los siguientes datos: VARIABLES POSIBLES VALORES Grados centígrados 90 Fahrenheit X Kelvin X Rankine X Ahora organizaremos los valores encontrados de tal forma que se satisfaga el patrón de valores de Entrada – Proceso – Salida. Entrada Centígrados Proceso Fahrenheit = (9* centígrado) /5 +32 Rankine = centígrados + 460 Kelvin = Rankine - 187 Salida Fahrenheit, Kelvin, Rankine CODIGO 12

Instituto de Educación Superior Tecnológica Publico CHOCOPE

ELEMENTOS DE UN PROGRAMA VBA Una aplicación VBA cuenta con muchos elementos los cuales veremos a continuación ELEMENTOS DESCRIPCION Identificador Es el nombre que se le da a todos los elementos que componen el modelo de objetos de VBA, por ejemplo Validos:  Nota1  aPaterno  a_paterno  fechanac No valido  nota 1  apellido paterno  a@paterno  fecha nacimiento Comentario Un comentario permite definir un mensaje simple dentro del código de programación, los símbolos a usar son: ‘ comilla simple o también REM comentario de una línea TIPOS DE DATOS

13

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Un tipo de datos define el tipo de valor que se almacenará en una determinada variable. Los tipos de datos se agrupan en enteros, reales, caracteres, cadenas y lógicos. ENTEROS TIPO DE DATOS CAPACIDAD SIMBOLOS Byte 0 -255 Integer -32768 a +32767 % Long -2.147.483.648 a +2.147.483.647 ¡ REALES TIPO DE DATOS Single Double Decimal

CAPACIDAD +1.401298E-45 a +3.402823E+38 +4.94065645841247E-324 a +1.79769313486232E+308 7.9228162514264337593543950335 a 7.9228162514264337593543950335

SIMBOLOS & #

Adicionalmente, veremos el siguiente tipo Currency -922.337.000.000.000 a @ +922.337.000.000.000 CARACTERES Y CADENAS TIPO DE DATOS CAPACIDAD String Tiene un máximo de 2 millones de caracteres LOGICOS TIPO DE DATOS Boolean FECHAS TIPO DE DATOS Date

VARIANTE TIPO DE DATOS Variant

SIMBOLOS $

CAPACIDAD

SIMBOLOS No cuenta

CAPACIDAD 01 de enero de 100 a 31 de diciembre de 9999

SIMBOLOS No cuenta

CAPACIDAD -

SIMBOLOS No cuenta

True /False

VARIABLES Una variable representa un espacio de la memoria que puede ser ocupado por cualquier valor. Su formato de declaración en VBA es Sintaxis Dim nombre_variable as tipodatos Donde:  Dim: Es la palabra reservada que indica el inicio de la declaración de una o más variables por línea de declaración solo puede haber un DIM  Variable: Es el nombre que el programador asignará a la variable 14

Instituto de Educación Superior Tecnológica Publico CHOCOPE

 As tipo dato: Es el tipo de datos asignado a la variable los cuales pueden ser Integer, Double, Currency, etc. OPERADORES Los operadores son elementos que pueden ser usados en una expresión que especifica un cálculo, así como una expresión matemática, financiera, etc. a. Asignación. un operador de asignación permita asignar un valor a una variable. Su formato es: variable = valor ejemplos  Asignar la condición “desaprobado” a un alumno. Dim condición as String Condición = “Desaprobado”  Determinar el 7.52% de descuento a pago de un empleado y asignarlo a una variable. Dim pago as Currency Pago = 2500 Dim descuento as Currency Descuento = pago * 7.52/100 b. Aritméticos Son operadores usados en expresiones aritméticas: Operadore Descripción Ejemplo s + Suma o adición A+B Resta o sustracción A–B * Multiplicación o producto A * B / Division real A/B \ Division entera A\B ^ Exponenciacion o potencia A ^ B Mod Resto de la división A mod B c. Relacionales Son operadores que permiten comparar dos valores, es a partir de aquí que podemos obtener un resultado verdadero o falso según la condición. Operadore Descripción Ejemplo s = Igualdad A=B > Mayor que A>B < Menor que A= Mayor o igual que A >=B C OR O lógica A > B OR B > C NOT Negación NOT A > B AND B > C 15

Instituto de Educación Superior Tecnológica Publico CHOCOPE

e. Orden de prioridad La prioridad es determinar qué expresión se operará primero en una sentencia VBA. Categoría Operadores Descripciones () Paréntesis ^ Exponenciación Identidad, negación de un numero Operadores * / Multiplicación, división aritméticos \ División entera MOD Resto de la división +Suma, resta & concatenación Operadores = Igualdad de

Diferente comparació >=, < = Mayor o igual, menor igual n >, < Mayor, menor Operadores NOT Negación. lógicos AND Y lógica OR O lógica f.

Conversiones de tipo Las conversiones en VBA permiten enviar un valor adecuado a una variable declarada. Veamos las principales funciones de conversión para el lenguaje VBA. Función Tipo Descripción CBool Boolean Convierte cualquier tipo de datos al tipo Boolean CByte Byte Convierte cualquier tipo de datos al tipo Byte CCur Currency Convierte cualquier tipo de datos al tipo Currency CDate Date Convierte cualquier tipo de datos al tipo Date CDbl Double Convierte cualquier tipo de datos al tipo Double CDec Decimal Convierte cualquier tipo de dato al tipo decimal CInt Integer Convierte cualquier tipo de datos al tipo Integer CLng Long Convierte cualquier tipo de datos al tipo Long CSng Single Convierte cualquier tipo de datos al tipo Single CStr String Convierte cualquier tipo de datos al tipo String

g. Mensajes en VBA Es una ventana informática al usuario, desde la cual podemos determinar una u otra opción dependiendo del botón seleccionado.

Formato 16

Instituto de Educación Superior Tecnológica Publico CHOCOPE

MsgBox “Mensaje”, botones, “Titulo” Variable =MsgBox ( “Mensaje”, Botones + Icono, “Título”) Listado de botones que se pueden implementar en un mensaje Constante Valor Descripción vbOkOnly 0 Muestra el botón Aceptar, considere también que es tomado como un valor por defecto cuando no se especifican los botones en un mensaje. vbOkCancel 1 Muestra los botones Aceptar y Cancelar vbAbortRetryIgnor 2 Muestra los botones Anular, Reintentar y Omitir e vbYesNoCancel 3 Muestra los botones Si, No y Cancelar vbYesNo 4 Muestra los botones Si y No vbRetryCancel 5 Muestra los botones Reintentar y Cancelar vbCritical 16 Muestra el icono Critico vbQuestion 32 Muestra el icono de consulta de Advertencia vbExclamation 48 Muestra el icono de mensaje de Advertencia vbinformation 64 Muestra el icono de mensaje de información Los valores devueltos por los botones son: Constante Valor Descripción obtenid o vbOk 1 Ocurre al hacer clic en el botón Aceptar vbCancel 2 Ocurre al hacer clic en el botón Cancelar vbAbort 3 Ocurre al hacer clic en el botón Anular vbRetry 4 Ocurre al hacer clic en el botón Reintentar vbIgnore 5 Ocurre al hacer clic en el botón Omitir vbYes 6 Ocurre al hacer clic en el botón Si vbNo 7 Ocurre al hacer clic en el botón No Ingreso de valor de una función InputBox es también conocido como cuadro de entrada, tiene la misión de solicitar al usuario un determinado valor, inicialmente el valor será capturado como cadena de texto. Su formato es: VARIABLE = InputBox (“Mensaje”, “Titulo”, Defecto, PosicionX, PosicionY) Por ejemplo, podemos ingresar un año de nacimiento de una persona de la siguiente manera: Dim año as Integer Año = InputBox (“Ingrese Año:”) Funciones definidas por el usuario Una función se define como una porción de código que permite agrupar un conjunto de sentencias y que a su vez tenga un objetivo específico. Podemos distinguir dos tipos de funciones: FUNCIONES SIN PARÁMETROS 17

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Este tipo función no cuenta con parámetros de entrada, podría ser usado para capturar algún valor o para devolver un valor fijo . su formato es: Function nombre () as tipo Sentencias Nombre = valor de salida End function Ejemplo  Función que permite devolver la fecha actual Function devuelveFecha() as date devuelveFecha =Now End Function 

Función que permite devolver el valor de PI Function devuelve PI() as Double devuelvePI = 3.1416 End Function.

FUNCIONES CON PARÁMETROS Este tipo de función cuenta con parámetros de entrada, que pueden ser considerados como valores de entrada de la función. Su formato es: Function nombre (parámetros) as tipo Sentencias Nombre = valor de salida End Function Ejemplos  Función que permita calcular el descuento de 10% sobre un monto Function calculaDescuento (ByVal monto as currency) as Currency Dim descuento as double Descuento = 0.1 * monto calculaDescuento = descuento End Function  Función que permita devolver el promedio de dos números enteros Function CalculaPromedio (ByVal n1 as Integer, ByVal n2 as Integer) as Double Dim promedio as double Promedio = (n1 + n2)/2 calculaPromedio = promedio End Function PROCEDIMIENTOS Los procedimientos son bloques de código que pueden recibir datos por medio de parámetros o a través de variables pero que no devuelven ningún resultado a quien los invoque. Su formato es:

18

Instituto de Educación Superior Tecnológica Publico CHOCOPE

 Sin parámetros Sub nombre() Sentencias End Sub

Ejemplos



Con parámetros (parámetros) Sub nombres (Parametros) Sentencias End sub



Procedimiento que permita mostrar el valor IGV de un determinado monto Sub calculaIGV (ByVal monto as Currency) Dim IGV as double IGV = 0.19 * monto msgBox “El valor del IGV es: “ & IGV End sub



procedimiento que permita mostrar el valor exponencial de dos números enteros Sub calculaExponencial (ByVal base as Integer, ByVal exponente as Integer) Dim potencia as Integer Potencia = base^exponente MsgBox “El valor de la potencia es : “ & potencia End Sub

CASO DESARROLLADO: COMPRA DE PRODUCTOS Una tienda comercial vende un producto cuyo costo unitario es $ 20.00. Como oferta la tienda ofrece un descuento fijo del 10% del importe de compra. Adicionalmente la tienda obsequia una agenda por cada docena de productos adquiridos. Implemente una aplicación en VBA usando las funciones correctas para determinar el importe de la compra, el importe del descuento y el importe a pagar por la compra de cierta cantidad de unidad del producto. Debe considerar los siguientes aspectos.  Implemente funciones necesarias para la aplicación  Declare todas las variables usadas en la aplicación  Declare el constante precio del producto con el valor

'Funcion que captura el costo desde la hoja de excel Function capturaCosto() As Currency 19

Instituto de Educación Superior Tecnológica Publico CHOCOPE

capturaCosto = CCur(Range("F6").Value) End Function 'Funcion que captura la cantidad ingresada desde la hoja de excel Function capturaCantidad() As Integer capturaCantidad = CInt(Range("D8").Value) End Function 'funcion que calcula el importe de compra Function calculaImporteCompra(ByVal costo As Currency, ByVal cantidad As Integer) As Currency Dim icompra As Currency icompra = costo * cantidad calculaImportaCompra = icompra End Function 'funcion que calcula el importe de descuento Function calculaImporteDescuento(ByVal icompra As Currency) As Currency Dim idescuento As Currency idescuento = icompra * 0.1 calculaImporteDescuento = idescuento End Function 'funcion que calcula el importe neto a pagar Function calculaimportePagar(ByVal icompra As Currency, ByVal idescuento As Currency) As Currency calculaimportePagar = icompra - idescuento End Function 'funcion que determina la cantidad de agendas Function determinaRegalo(ByVal cantidad As Integer) As String determinaRegalo = cantidad \ 12 End Function 'Procedimiento que invoca a todas las funciones para la solucion al problema Sub calculaimporte() Dim costo As Currency, cantidad As Integer costo = capturaCosto cantidad = capturaCantidad Dim icompra As Currency, idescuento As Currency Dim ineto As Currency icompra = calculaImporteCompra(costo, cantidad) idescuento = calculaImporteDescuento(icompra) ineto = calculaimportePagar(icompra, idescuento) Dim agendas As Integer agendas = determinaRegalo(cantidad) Range("D10").Value = icompra Range("D11").Value = idescuento Range("D12").Value = ineto Range("D13").Value = agendas Range("D8").Select End Sub Sub limpiarceldas() Range("D8").ClearContents Range("D10").ClearContents 20

Instituto de Educación Superior Tecnológica Publico CHOCOPE

Range("D11").ClearContents Range("D12").ClearContents Range("D13").ClearContents Range("D8").Select End Sub

21