Vous êtes sur la page 1sur 28

POLITÉCNICO COLOMBIANO

Jaime Isaza Cadavid

Programación en VBA

Fundamentos de Programación con VBA


Parte 1: Algoritmos y el Entorno de Programación VBA
Objetivo General
Dar a conocer al estudiante los conceptos básicos para realizar algoritmos, así
como la implementación de estos en una herramienta de programación básica
como Visual Basic for Applications.

Introducción

El dominio de una herramienta informática de programación


supone un importante avance para cualquier ingeniero que
desea utilizar la computadora como herramienta de apoyo en el
análisis de problemas ingenieriles de distinta envergadura. Esta
habilidad no es posible adquirirla, sin el dominio de las técnicas
para elaborar algoritmos.

Este documento pretende que el estudiante se involucre en primer lugar, en la tarea de plantear
soluciones a problemas de información mediante la elaboración de algoritmos para dicho fin (En
seudocódigo). Seguido, dado que los algoritmos en sí son sólo soluciones para la interpretación humana,
se debe realizar su respectiva implementación para que los ejecute la computadora, que es realmente el
objetivo final.

CONTENIDO

TEMA 1 Concepto de Algoritmo y Programa


Un algoritmo se define como el conjunto finito de pasos e instrucciones que especifican de forma clara y
concisa (sin ambigüedades) la secuencia de operaciones a realizar para poder procesar adecuadamente
un conjunto de datos con un determinado objetivo.

La codificación de un algoritmo para una computadora se denomina programa. El programa también se


puede considerar un algoritmo, pero en este caso las operaciones son instrucciones de un lenguaje de
programación que la computadora puede entender directamente (lenguaje de máquina) o indirectamente
(Lenguaje de alto nivel, compilado o interpretado).

Análisis y diseño de algoritmos


La pregunta de todo novato de la programación de computadoras es ¿Cómo hacer ante un problema
determinado, para obtener el programa que lo solucione?

Para realizar esto se debe seguir un proceso fijo que consta de los siguientes pasos:

1
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Análisis del problema


 Acotar y especificar el problema con total precisión (obtener el máximo de información acerca
de lo que se debe resolver y las soluciones a determinar) ya que el problema debe ser
comprendido perfectamente antes de realizar el algoritmo.
 Definir los datos iniciales o de partida (que datos del problema se necesitan proporcionar
para resolverlo?)
 Definir qué datos o resultados debe proporcionar el algoritmo

Ejemplo:
Problema Cuánto vale la cuota para pagar un préstamo?
Definición clara Hallar el valor de una cuota fija para pagar un préstamo dado el monto, los
del problema periodos y el interés por período utilizando la respectiva formula de interés
compuesto.

Cuota  Monto
1  Interes Periodos
Interes
1  InteresPeriodos  1
Datos de Monto del préstamo, numero de periodos y tasa de interés
entrada
Datos de Salida Valor de la cuota fija

1. Diseño del algoritmo


Hallar el algoritmo para un problema es una cuestión de experiencia e ingenio. Pese a esto, si
existen algunas técnicas sobre cómo proceder para realizar el algoritmo. El más comúnmente
utilizado es el diseño descendente (Top-Down) que consiste en descomponer un problema en
pequeños problemas más sencillos pudiéndose aplicar recursivamente.

Otro aspecto a tener en cuenta, son las características que debe cumplir un algoritmo para poder
ser implementado en la computadora:
 Tiene un único punto de entrada y un único punto de salida.
 Deben existir caminos desde la entrada hasta la salida que pasan por todas las partes del
algoritmo.
 Todas las instrucciones son ejecutables y no existen ciclos infinitos.

Para poder diseñar un algoritmo es preciso tener en cuenta que éste se compondrá de
instrucciones las cuales, como se dijo anteriormente, deben ser precisas. Para ello, inicialmente
se definirán los siguientes tipos de instrucciones básicas:

 Lectura de datos (instrucción Lea) la cual define que un dato será ingresado de algún
modo al algoritmo (Digitado por teclado, seleccionado en una lista, leído desde un
archivo, etc.)
 Salida de datos (instrucción Imprima) la cual define que el valor de un dato será
mostrado mediante algún dispositivo (Pantalla, impresora, hacia un archivo, etc.)
 Asignación de datos (), la cual permite que el valor de un dato o el resultado de una
fórmula o expresión le sea transferido a otro dato.

El término “dato” utilizado aquí generalmente se asocia a los conceptos de variable (Dato que
puede variar) y de constante (Dato que no varía). Las variables tienen un uso parecido al de una

2
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

variable algebraica pero su uso se amplía cuando se les utiliza para almacenar otros tipos de
datos distintos a los numéricos (textos o valores lógicos).

Ejemplo:
Teniendo en cuenta esto último, se tendría el siguiente seudocódigo para representar el algoritmo
del problema antes enunciado:

Inicio
Lea Monto
Lea Interes
Lea Plazo
Cuota  Monto * (1 + Interes ) ^ Plazo * Interes / ( ( 1 + Interés) ^ Plazo - 1)
Imprima Cuota
Fin

2. Implementación del algoritmo


Consiste en la codificación del algoritmo en un programa. Para ello se deberá conocer el lenguaje
de programación a utilizar. Por ejemplo, en nuestro caso se utilizará VBA (El cual será descrito en
la sección 3).

Ejemplo:
El siguiente es el código correspondiente al anterior algoritmo en VBA:
Sub CalcularCuota()
Dim monto As Double
Dim interes As Double
Dim plazo As Integer
Dim cuota As Double

monto = Val(InputBox("Monto del préstamo?"))


interes = Val(InputBox("Tasa interés por periodo (%)?")) / 100
plazo = Val(InputBox("Periodos?"))

factor = (1 + interes) ^ plazo


cuota = monto * factor * interes / (factor - 1)

MsgBox "El valor de la cuota es " & cuota

End Sub

3
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Y así luciría la edición en el respectivo Ambiente de Desarrollo Integrado:

3. Prueba y depuración
Una vez editado el programa de computadora, este se podrá ejecutar para comprobar que
realmente hace lo que se pretendía, es decir, que no existan errores de codificación ni errores en
el algoritmo.

Ejemplo:
La ejecución del anterior código en VBA luciría así:

4
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Como se pudo observar en esta breve descripción, el proceso de la programación de computadoras


involucra el dominio de varias destrezas que incluyen tanto la comprensión e ingenio del programador
como el uso de herramientas informáticas especializadas para dicho fin.

TEMA 2 Operadores, conectivos y expresiones


La instrucciones de computadora involucran la manipulación de una serie de símbolos que combinados
dan lugar a unas expresiones que permiten indicar cálculos o condiciones que podrán procesarse.

Operadores
Un Operador es un símbolo o nomenclatura al cual se le da un significado predeterminado. En la
programación son tres los tipos de operadores que se utilizan:

Símbolo
Tipo Operador Operación Ejemplo
Matemático
Aritméticos + + Suma 72 + 6
Símbolos que denotan un cálculo - - Resta 72 – 6
matemático. *  Multiplicación 72 * 6

Los datos que involucran este tipo


/  División 72 / 6
de operadores tienen que ser ^ xy Potenciación 72 ^ 6
valores numéricos. Módulo (residuo
mod 72 mod 6
de la división)
Los operadores aritméticos
presentan una jerarquía en el
orden de ejecución por el
computador. Veamos :
1. En primer lugar se ejecutan los
cálculos que vayan entre ab Separador de
paréntesis. () (a + b) / (c + d)
2. Seguido se ejecutan las cd expresiones

potenciaciones.
3. A continuación divisiones,
módulos y multiplicaciones.
4. Por último, las restas y sumas.
Operadores Relacionales > > Mayor que a>b

Son operadores que indican Mayor o igual a >= b
>=
operaciones comparativas o que
lógicas. < < Menor que a<b
>=  Menor o igual
que
a <= b

= = Igual que a=b


<>  Diferente a <> b
Operadores de texto a = “Muñoz”
Son operadores que permiten b = “Juan”
+ No aplica Concatenación
realizar operaciones sobre b + “ “ + a = “Juan
cadenas de texto Muñoz”

El siguiente ejemplo ilustra el orden de ejecución del cálculo de una expresión según la jerarquía de los
operadores:
((9 ^ 5 - 6) * 8) / (13 + 2) Se calcularía así:

5
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

((50049 - 6) * 8) / (13 + 2)
(50043 * 8) / 15
472344 / 15
31489.6

6
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Conectivos lógicos
Los Conectivos lógicos expresan las relaciones lógicas existentes entre dos proposiciones (expresiones
lógicas). Son conocidos también como Juntores.

Los juntores utilizados en programación son:


Operación Descripción Significado Operador
Es el producto lógico de
Conjunción
dos proposiciones
“y” 
Es la suma lógica de dos
Disyunción
proposiciones
“o” 
Negación Es un juntor singular “No” 
Los valores de verdad resultantes de la relación establecida por los conectivos ofrecen la siguiente tabla:

p Q pq pq p q
V V V V F F
V F F V F V
F V F V V F
F F F F V V

Que se lee:
 La conjunción de dos proposiciones (expresiones lógicas) es verdadera cuando ambas los son y falsa
en los demás casos.
 La disyunción es falsa cuando ambas proposiciones (expresiones lógicas) lo son y verdadera en los
demás casos.
 La negación invierte el valor de una proposición (expresión lógica).

Expresiones
Una expresión es una secuencia de operandos (una variable o una constante) y operadores con el
objetivo de producir un valor. Las expresiones de acuerdo a los operadores involucrados pueden ser
aritméticas o lógicas. Las primeras arrojan valores numéricos y las últimas, valores de verdad (Falso o
Verdadero). Estas últimas son las que se utilizarán para definir las condiciones en las instrucciones de
control.

Ejemplo:
 3 + 7 * 4 entrega el valor numérico 31
 Si x=8, y=13, z=21 , la expresión ( x <= z )  ( y >= 10) arrojaría el valor Verdadero (basado en los
conectivos lógicos y la tabla de verdad)

Comprendido el proceso de la programación y la manipulación de las expresiones, a continuación se


introducirá un paradigma bajo el cual el programador podrá aprender a realizar los primeros programas.

TEMA 3 La programación estructurada


Bajo el paradigma de programación estructurada, el programador en todo momento debe tener el dominio
del programa que está elaborando. Para ello es necesario:

 Que el diseño del programa sea descendente (Subdividir un problema en pequeños problemas).
 Las instrucciones a utilizar sean limitadas

7
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

 Igualmente sea limitado el ámbito de las estructuras de datos.

Lo anterior permite que la escritura del programa sea más fácil así como su depuración (Corrección de
errores)

Para realizar un programa estructurado existen tres modos básicos de control de ejecución de las
instrucciones:

Modo (Descripción) Sintaxis Diagrama


Las instrucciones se escriben de a una por
línea.

Secuencial
Se ejecuta una
instrucción seguida de
otra.

Existes dos tipos de instrucciones


condicionales:
 Condicional Simple:
Si [Condicion] Entonces
[Instrucciones]
Sino
Condicional [Instrucciones]
Se evalúa una FinSi
expresión y,  Multicondicional:
dependiendo del Casos de [Variable]
resultado, se decide la Caso [Valor1]:
siguiente instrucción a [Instrucciones]
ejecutar Caso [Valor2]:
[Instrucciones]

Sino
[Instrucciones]
FinCasos

Existes dos tipos de instrucciones iterativas:


 Ciclo Para:
Para [VariableEntero]  [ValorInicial]
Iterativa
Hasta [ValorFinal] Incremento
Se repite un bloque de
[ValorEntero]
instrucciones hasta
[Instrucciones]
que sea verdadera
FinPara
una determinada
 Ciclo Mientras:
condición
Mientras [Condicion]
[Instrucciones]
FinMientras

8
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

La mejor manera de comprender lo anterior es observando su uso en la solución de problemas que lo


requieran. Para ello, a continuación se realizarán algoritmos que solucionen problemas de información,
en los cuales se seguirán las siguientes pautas:
 Los datos de entrada deberán ser adquiridos mediante la instrucción de lectura.
 Los datos de salida deberán ser mostrados mediante la instrucción de salida.
 Los procesos involucrarán desde asignaciones hasta el uso de las instrucciones de control
anteriormente relacionadas

1. Uso de Condicional Simple. Esta instrucción evalúa una condición y en caso de ser verdadera
ejecuta una secuencia de instrucciones y opcionalmente en caso de ser falsa, ejecuta otra
secuencia de instrucciones.

Análisis del Problema


Problema Cuánto pagar a un trabajador si ha laborado horas extras?
Definición clara Calcular el valor definitivo a pagar a un trabajador por concepto de las
del problema horas semanales trabajadas en una empresa, sabiendo que cuando las
horas trabajadas exceden de 48, el resto se consideran horas extras y se
pagan al doble de una hora normal.
Datos de  Horas laboradas
entrada  Valor hora
Datos de Salida  Valor a pagar

Algoritmo:
El proceso involucrado en este algoritmo es condicionar el cálculo del valor a pagar de acuerdo al
número de horas laboradas.
Inicio
Lea HorasLaboradas
Lea ValorHora
Si HorasLaboradas <= 48 Entonces
ValorPagar  HorasLaboradas * ValorHora
Sino
ValorPagar  ValorHora * 48 + 2 * ValorHora * (HorasLaboradas - 48)
FinSi
Imprima ValorPagar
Fin

2. Uso de Multicondicional.

Análisis del Problema


Problema Cuánto pagar por administración en una propiedad horizontal?
Definición clara La propiedad horizontal corresponde a una urbanización que se compone
del problema de 3 torres de apartamentos, cada uno de ellos con 20 pisos. El valor base
de la administración es de $100.000, el cual tiene un recargo adicional
dependiendo del edificio y del piso en el que está ubicado el apartamento
de acuerdo a la siguientes tablas:
Torre Recargo Piso Recargo
1 $ 10.000 Entre 1 y 7 $ 5.000

9
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

2 $ 15.000 Entre 8 y 14 $ 10.000


3 $ 20.000 Entre 15 y 20 $ 15.000
Datos de  Número de Torre (T)
entrada  Número Piso (P)
Datos de Salida  Valor Administración(VA)

Algoritmo:
El proceso involucrado en este algoritmo es incrementar el valor a pagar por administración de
acuerdo las siguientes condiciones:

Si T=1  VA=110.000
Si T=2  VA=115.000
Si T=3  VA=120.000

Si 1<= P <=7  VA se incrementa en $ 5.000


Si 8<= P <=14  VA se incrementa en $ 10.000
Si 15<= P <=20  VA se incrementa en $ 15.000

Inicio
Lea T
Lea P

Casos de T
Caso 1:
VA  110000
Caso 2:
VA  115000
Caso 3:
VA  120000
FinCasos

Si P>=1  P<=7 Entonces


VA  VA + 5000
Sino
Si P>=8  P<=14 Entonces
VA  VA + 10000
Sino
VA  VA + 15000
FinSi
FinSi
Imprima VA
Fin

Como se pudo observar en este algoritmo, una parte se solucionó utilizando la instrucción
Multicondicional y la otra con Condicionales anidadas, es decir, una instrucción Condicional
incluida dentro de otra. En este caso, es muy útil para evaluar rangos.

La anidación de instrucciones es una costumbre muy útil en los algoritmos.

10
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

3. Uso de Ciclo Para. Esta instrucción permite repetir una secuencia de instrucciones un número
definido de veces con base en tres parámetros:
 Un valor inicial
 Un valor final
 Un incremento

Análisis del Problema:


Problema Cuánto vale la función seno calculada mediante series de Taylor?
Definición clara El valor de la función Seno para un número real cualquiera x se puede
del problema calcular mediante una serie de Taylor utilizando la fórmula:

senx   
n
 1 i
x 2i 1

i  0 2i  1!
Que plantea una sumatoria de n términos (número de elementos de la
serie). La precisión del resultado se obtiene haciendo más grande el valor
de n.
Datos de  Número real (X)
entrada  Número de términos de la serie (N)
Datos de Salida  Valor Calculado de la función Seno (S)

Algoritmo:
 El proceso para este algoritmo requiere calcular cada término de la serie según el número
de términos especificado (N) y acumularlo en otra variable (S).
 En cada término se debe calcular el factorial de una expresión (p=2*i+1) en la variable f.
Se debe tener presente que el factorial de un número entero positivo es el producto de
todos los enteros positivos desde 1 hasta el mismo número. Por ejemplo:
3! = 1 * 2 * 3 = 6
7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040
1! = 1
0! = 1 (caso especial)
 Al final se muestra el valor acumulado (S) como el valor del seno calculado.
Inicio
Lea X
Lea N
S0
Para i  0, N,1
p  2*i+1
f1
Para j  1 hasta p
ff*j
FinPara
S  S + (-1)^i * X ^ p /f
FinPara
Imprima S
Fin

11
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

En este algoritmo se observa de nuevo el uso del anidamiento de instrucciones. En este caso se
debe a que el cálculo del factorial es iterativo (requiere un ciclo de multiplicaciones) y se debe
hacer por cada termino de la sumatoria (que requiere un ciclo de sumas).

Es también preciso observar como se inician las variables en las que se acumula la suma o la
productoria. Para la sumatoria, el inicio debe ser cero (0) - el módulo de la suma-, mientras que la
productoria se inicia en uno (1) – el módulo de la multiplicación-.

4. Uso de Ciclo Mientras. Esta instrucción permite repetir una secuencia de instrucciones un
número indefinido de veces basado en el cumplimiento de una condición.

Análisis del Problema:


Problema Verificar si un número es primo
Definición clara Un número entero positivo es primo sólo sí es divisible por sí mismo o por
del problema la unidad. La solución podría hallarse recorriendo todos los números
menores a él y verificando que para todos se cumple que el residuo de la
división es distinto de cero. Esta solución es bastante ineficiente ya que
muchas de las verificaciones pueden obviarse:
 Si el número es menor que 4, es primo.
 Sólo deben verificarse los números hasta la mitad.
 Sólo deben verificarse los impares.
Datos de  Número entero (N)
entrada
Datos de Salida Mensaje de si N es primo o no.

Algoritmo:
El proceso involucrado en este algoritmo indaga primero si N < 4, en cuyo caso es primo.
En otro caso, se debe verificar la no divisibilidad de N por 2 (que no sea par), en cuyo caso se
procede a verificar de nuevo la divisibilidad de N por todos los valores enteros impares entre 3 y
N/2 (La mitad de N). Ante la primera divisibilidad, N ya no es primo. Si nunca se verifica
divisibilidad, N es primo.
Inicio
Lea N
p  Falso
Si N < 4 Entonces
p  Verdadero
Sino
Si N mod 2 <> 0 Entonces
limite  (n - 1) / 2
i 3
p  Verdadero
Mientras i <= limite  p = Verdadero
Si n mod i = 0 Entonces
p  Falso
Sino
ii+2
FinSi
FinMientras
FinSi

12
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

FinSi
Si p=Verdadero Entonces
Imprima "El número es primo"
Sino
Imprima "El número NO es primo"
FinSi
Fin

En este algoritmo, el ciclo Mientras reemplazaría un posible ciclo Para al recorrer todos los
impares entre 3 y N/2. El asunto es que si alguno de estos impares divide a N, se debe
interrumpir el ciclo. Esta situación no es posible saberla cuando va a ocurrir con anticipación y por
esto requiere un ciclo Mientras que incluya la debida condición (p = Verdadero). Cuando el valor
de la variable p cambie (p toma el valor de Falso porque se halló que un número impar divide a
N), se interrumpe el ciclo Mientras. La variable p en este caso se considera una variable
interruptor porque cambia de estado como el interruptor de energía de una bombilla.

Como se menciono antes, estos algoritmos en seudocódigo son para interpretación humana, es preciso
traducirlos a un lenguaje de programación y realizar la respectiva implementación en una herramienta
informática conocida como Ambiente de Desarrollo Integrado (IDE). Para ello, el siguiente apartado
introduce el lenguaje VBA y su respectivo ambiente.

TEMA 4 El lenguaje Microsoft Visual Basic for Applications (VBA)


VBA es un lenguaje de programación desarrollado por Microsoft, el cual viene integrado en las
aplicaciones de su software ofimático (Microsoft Office) para permitir al usuario avanzado ampliar la
funcionalidad de este tipo de software.

Aplicaciones como MS Word, MS Excel y MS Access, MS PowerPoint y MS Visio permiten que se pueda
programar casi cualquier cosa en un documento MS Office utilizando el lenguaje Visual Basic, con la
única diferencia de que no se puede compilar el programa separadamente del documento, hoja o base de
datos en que fue creado; es decir, se convierte en una Macro. En consecuencia, la macro se distribuye
con sólo copiar el documento, presentación o base de datos.

Realmente la utilidad del lenguaje está en la automatización de tareas cotidianas que se realizan con las
herramientas ofimáticas, así como en la creación de aplicaciones y servicios de bases de datos para el
escritorio de la computadora.

Uso de VBA en MS Excel


Para poder programar con VBA, MS Excel provee la ficha Programador la cual incluye herramientas de
creación de macros y formularios. De forma predeterminada esta ficha no se muestra. Por lo que debe
activarse.

Para ello se debe activar el menú contextual de la barra de tareas del MS Excel (haciendo clic derecho) y
seleccionar la opción Personalizar barra de herramientas de acceso rápido…

13
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Seguido se debe seleccionar la ficha Más frecuentes y activar la caja de chequeo Mostrar ficha
Programador en la cinta de opciones.

La ficha Programador tiene el siguiente aspecto:

El botón Visual Basic de la ficha Programador permite cargar la ventana de edición de código de macros
(Subprogramas) y de formularios (Ventanas). Esta ventana se le conoce como el Ambiente de
Desarrollo Integrado (IDE por su sigla en inglés), la cual tiene el siguiente aspecto:

14
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

En la anterior imagen se puede observar como la programación en VBA requiere de la manipulación de


Controles los cuales son objetos que pueden ser agregados a las interfaces de usuario (formularios y
hojas de cálculo), que son aquellas áreas con las cuales puede interactuar el usuario de un programa de
computadora.

Los controles más utilizados en VBA son:


Ícono Control Descripción
Etiqueta Presenta texto con el que el
(Label) usuario no puede interactuar ni
modificar.
Caja de Texto Proporciona un área para
(TextBox) escribir o presentar texto.
Cuadro de lista Presenta una lista de datos entre
(ListBox) los que el usuario puede elegir
una.
Cuadro de lista desplegable Combina un cuadro de texto y
(ComboBox) un cuadro de lista. Permite que

15
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

el usuario escriba una selección


o seleccione un elemento de una
lista desplegable.
Botón de Comando Ejecuta un comando o una
(Command Button) acción cuando un usuario hace
clic en él.
Cuadro Contenedor Proporciona un contenedor
(Frame) visual y funcional para otros
controles.

Elementos del lenguaje de programación VBA


VBA es realmente un lenguaje de programación que permite la escritura de programas de computadora.
En este sentido, el programador debe conocer como se escriben las instrucciones de los programas en
dicho lenguaje. En primer lugar, VBA permite la manipulación de información mediante variables las
cuales deben pertenecer a un tipo de datos. Un tipo de datos define que se puede almacenar en una
variable. La siguiente tabla incluye los tipos de datos que ofrece el VBA:

Tamaño de
Tipo de datos Intervalo
almacenamiento
Byte 1 byte 0 a 255
Boolean (Booleano) 2 bytes (Word) True o False
Integer (Entero) 2 bytes -32,768 a 32,767
Long 4 bytes (Doble -2,147,483,648 a
(entero largo) Word) 2,147,483,647
Double 8 bytes -1,79769313486232E308 a
(coma flotante/ -4,94065645841247E-324
precisión doble) para valores negativos
4,94065645841247E-324 a
1,79769313486232E308
para valores positivos
Date 8 bytes 1 de enero de 100 a 31 de
diciembre de 9999
String Longitud de la Desde 1 a 65.400
(Texto) cadena aproximadamente

Los siguientes son los operadores que permiten manipular variables y expresiones:
Tipo Operador Uso
^ Elevar un número a la potencia del exponente
/ Dividir dos números
Aritmético: Operadores * Multiplicar dos números
utilizados para ejecutar Divide dos números y devuelve sólo el resto.
cálculos matemáticos.
Mod
+ Sumar dos números.
Hallar la diferencia entre dos números o para
- indicar el valor negativo de una
< Menor que
Comparación: Operadores <= Menor o igual que
utilizados para efectuar
> Mayor que
comparaciones
>= Mayor o igual que

16
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

= Igual a
<> Diferente de
Texto: Operadores Realizar la concatenación (unión) de dos cadenas
utilizados para manipular de caracteres.
variables de tipo texto &
(String)
Efectuar una conjunción lógica de dos
And expresiones.
Lógico: Operadores
usados para realizar Not Ejecutar una negación lógica sobre una expresión
operaciones lógicas. Ejecutar una disyunción lógica sobre dos
Or expresiones.

Instrucciones básicas
Todas las instrucciones tratadas en los apartados anteriores para la escritura de algoritmos (en
seudocódigo) tienen su respectiva versión en VBA. Veamos:

 Se utiliza la instrucción de Asignación para realizar cálculos y asignar el resultado a una


variable. Ejemplo:
Edad = 23
Observe que el signo igual del ejemplo es un operador de asignación, no un operador de
igualdad; el valor 23 se asigna a la variable Edad.

El uso de variables en los lenguajes de programación requiere de que se defina su tipo (Aunque
VBA no lo exija, es muy recomendable hacerlo. De eso trata la siguiente instrucción que no se
utiliza en el seudocódigo).

 Declarar una variable es decirle al programa que tipo de dato se va a almacenar. Se realiza
mediante la instrucción Dim, proporcionando un nombre a la variable seguido de la palabra As y
el tipo de dato. Ejemplo:
Dim Edad As Integer

 La instrucción Condicional ejecuta un grupo de instrucciones, dependiendo del valor de verdad


de una expresión.
La sintaxis de esta instrucción (el modo como debe ser escrito, de igual manera como se hace en
un lenguaje humano) es la siguiente:
If condición Then
instrucciones
[Else
Instrucciones]
End If]
En esta sintaxis, lo que se escribe entre corchetes es opcional.

Ejemplo:
If Edad>=18 Then
Msgbox “Es mayor de edad”
Else
Msgbox “Es menor de edad”
End If

17
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Este ejemplo muestra un mensaje sobre la mayoría de edad dependiendo del valor de la edad. La
instrucción de mensajes MsgBox puede corresponder a la instrucción de salida del seudocódigo.
Aunque se verán otras formas de hacerlo.

 La instrucción Multicondicional ejecuta uno de varios grupos de instrucciones, dependiendo del


valor de una expresión.

Sintaxis:
Select Case expresión
Case valor1
Instrucciones

[Case Else
Instrucciones]
End Select

Ejemplo:
Function Descuento(Valor, Horario) As Double
Select Case Horario
Case “Madrugada”
Descuento = Valor * .1
Case “Nocturna”
Descuento = Valor * .05
Case “Mañana”
Descuento = Valor * .025
Case Else
Descuento = 0
End Select
End Sub
Este ejemplo corresponde una función (Subprograma) que devuelve un valor de descuento
dependiendo de un horario.

 La instrucción Mientras ejecuta una serie de instrucciones mientras una condición dada sea
verdadera

Sintaxis:
While condición
[instrucciones]
Wend

Ejemplo:
Sub MCD(N1, N2)
a = N1
b = N2
While a mod b>0
r = a mod b
a=b
b=r
Wend
Msgbox “M.C.D. de ” & n1 & “ y ”n2 & “ es ” & b

18
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

End Sub

Este subprograma muestra el máximo común divisor de 2 números.

 La instrucción Para repite un grupo de instrucciones un número específico de veces.

Sintaxis:
For contador = inicio To fin [Step incremento]
[instrucciones]
Next [contador]

Ejemplo:
Suma =0
For Fila = 1 to 100
Suma = Suma + Sheets(“Hoja1”).Cells(Fila,2)
Next Fila
Msgbox Suma
Este ejemplo calcula la suma de las celdas entre la fila 1 y 100 de la columna B de la hoja de
cálculo “Hoja1”

Objetos de las hojas de cálculo de MS Excel en VBA


Para poder programar VBA en MS Excel, en algunos casos es necesario trabajar con datos provenientes
de las hojas de cálculo.

La siguiente imagen ilustra los objetos más comunes que hacen referencia a información almacenada en
las hojas de cálculo:

La siguiente tabla relaciona estos objetos y una breve descripción:

Objeto Descripción
Hoja Representa una hoja de cálculo.
(Sheets) Instrucciones:
 Add: Agrega una nueva hoja
 Range: Selecciona un rango de celdas
 Activate: Activa una hoja
Celda (Cells) Representa una celda.
Selección Corresponde a un rango seleccionado
(Selection) Instrucciones:
 ClearContents: Borra los contenidos

19
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

 Copy: Copia al portapapeles u otro rango


 Delete: Elimina las celdas
 InsertCells: Insertar nuevas celdas

TEMA 5 Ejemplo de Uso de VBA


A continuación se describirá el desarrollo de un ejercicio completo de programación con VBA en MS
Excel.

El problema en cuestión es el anteriormente analizado que trata de calcular el valor de una cuota fija para
un plan de pagos periódico de un préstamo. Se le adicionará la funcionalidad de listar los valores que
componen el plan de pagos, es decir, por cada cuota indicar cuanto se abona a intereses, cuanto se
abona al capital y el saldo restante.

Inicialmente son tres los pasos en la creación de una aplicación con VBA: Crear la interface, escribir el
código (algoritmo) y guardar el documento.

1. Crear la interface de Usuario.


Para crear una aplicación VBA es necesario tener un documento de MS Excel abierto, preferiblemente
vacío así como también la barra de Programador activa.

Para activar la ficha de programador se hace clic derecho en alguna de las fichas activas para cargar
el menú de contexto en el cual se debe seleccionar la opción “Personalizar barra de herramientas de
acceso rápido…”. Esto permite cargar la ventana de Opciones de Excel.

En la ventana Opciones de Excel se elija la opción “Más Frecuentes” y activar la caja de chequeo
“Mostrar ficha Programador en la cinta de opciones”.

La siguiente gráfica ilustra el proceso:

20
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Seguido, se debe proceder al diseño de la interface de usuario para el programa. En este caso se
usará la misma hoja de cálculo “Hoja1”. Para ello, se debe incluir:
 Espacios para que el usuario digite los datos de entrada. Basta con escribir en algunas
celdas de la hoja de cálculo los textos que indiquen el valor a digitar (lo cual se haría en la celda
contigua). Incluso se puede resaltar (cambiando el color de fondo) las celdas donde el usuario
digitará los valores.

 Espacios para que el usuario observe los resultados. Se podrá resaltar una celda donde
aparecerá el valor de la cuota y los respectivos encabezados para la lista de valores que
componen el plan de pagos:

21
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

 Elementos para activar la ejecución de los cálculos. Se debe incluir en la interface un


elemento gráfico que indique al usuario cuando proceder con el cálculo. Generalmente el más
utilizado es el botón de comando. Este elemento será el que asociará la interface de usuario con
el algoritmo.

Para ello se debe hacer clic en el botón Insertar de la barra Programador y seleccionar el control
Botón. Esto permitirá que se pueda dibujar en la interface de usuario un rectángulo que
corresponderá al botón, el cual en este caso se pondrá antes de la celda donde aparecerá el
resultado del valor de la cuota.

Una vez dibujado el botón, MS Excel activa la ventana Asignar Macro mediante la cual se
especifica el código VBA que estará asociado al botón. Será donde se escribirá el algoritmo para
realizar el cálculo. En esta ventana basta con digitar el nombre del programa asociado (Esto sólo
se hará una vez).

22
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Una vez especificado el nombre, se debe hacer clic en el botón Nuevo de la ventana Asignar
Macro lo cual carga inmediatamente el Ambiente de Desarrollo Integrado de VBA con una
ventana que permite editar el programa:

Antes de proceder con la edición del código, es importante un detalle estético de gran importancia,
cambiar el texto del botón. Esto le permitirá al usuario saber para qué sirve el botón.

La primera vez basta con hacer clic en el botón y digitar el texto.

23
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

Para hacer una modificación posterior del texto del botón se debe hacer clic derecho sobre él y en el
menú contextual respectivo, escoger la opción Modificar Texto:

2. Escribir el código.
Ahora se necesita escribir el código para hacer que la aplicación responda a las acciones del
usuario, en este caso al clic del botón.

La edición del código se hace mediante el Ambiente de Desarrollo Integrado el cual fue cargado
cuando se creó la macro.

Si por alguna circunstancia no está abierta, basta con hacer clic en el botón Visual Basic de la barra
Programador.

Si por alguna circunstancia no se ha asignado el programa el botón este se puede realizar haciendo
clic derecho sobre el botón y seleccionando en el menú contextual respectivo la opción Asignar
Macro…

24
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

El siguiente sería el código del programa que corresponde al algoritmo antes formulado:
Sub CalcularCuota()
'Declaracion de variables
Dim p As Double 'Variable que almacena el MONTO
Dim i As Double 'Variable que almacena el INTERES
Dim n As Integer 'Variable que almacena el PLAZO
Dim a As Double 'Variable que almacena la CUOTA

Dim f As Double 'Variable temporal


Dim saldo As Double 'Variable temporal
Dim intereses As Double 'Variable temporal
Dim capital As Double 'Variable temporal

'Leer los datos desde la hoja de calculo


p = Sheets("Hoja1").Cells(2, 2)
i = Sheets("Hoja1").Cells(3, 2) / 100
n = Sheets("Hoja1").Cells(4, 2)

'Realizar el proceso
f = (1 + i) ^ n
'Verificar que el factor no produzca división por cero
If f > 1 Then
'Calcular la cuota
a = p * f * i / (f - 1)
'Mostrar el resultado
Sheets("Hoja1").Cells(6, 2) = a
'Limpiar las celdas para el plan de pagos
Sheets("Hoja1").Range("D3", "G1000").Select
Selection.Delete

'Mostrar el plan de pagos


saldo = p
For j = 1 To n

25
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

'Mostrar el NUMERO DE LA CUOTA


Sheets("Hoja1").Cells(2 + j, 4) = j
'Calcular y mostrar INTERESES
intereses = saldo * i
Sheets("Hoja1").Cells(2 + j, 5) = intereses
'Calcular y mostrar CAPITAL
capital = a - intereses
Sheets("Hoja1").Cells(2 + j, 6) = capital
'Calcular y mostrar SALDO
saldo = saldo - capital
Sheets("Hoja1").Cells(2 + j, 7) = saldo
Next j
Else
MsgBox "No es posible calcular la cuota"
'Mostrar valor de cuota vacia
Sheets("Hoja1").Cells(6, 2) = ""
End If
End Sub

Observando el algoritmo de este código, es preciso tener en cuenta lo siguiente:


 La lectura de datos se hace desde objetos de la hoja de cálculo (Celdas que se identifican
mediante la instrucción Sheets(NombreHoja).Cells(Fila,columna) ). La salida de datos, también
se hace en el mismo tipo de objetos
 Las variables a utilizar, incluso las temporales, son declaradas inicialmente.
 Para hacer el cálculo de la cuota, se verifica mediante una instrucción condicional que se pueda
realizar el cálculo (Matemáticamente es imposible si f = (1 + i) ^ n es igual a 1, porque daría una
división por cero). En caso de que no se pueda realizar, se muestra el respectivo mensaje.
 Para mostrar el plan de pagos, inicialmente se selecciona la región donde estarán ubicados los
datos y se limpia la región. Luego, se realiza un ciclo Para que recorre cada cuota y en cada una
se calcula y muestra los abonos a intereses y a capital y el saldo que queda.
 En este código se puede observar también la inserción de comentarios (el texto que va después
de los símbolos de comilla simple ‘). Esto sirve para dar claridad al algoritmo del programa.

3. Guardar el proyecto
Cuando se termine de editar la aplicación, se deseará guardar el proyecto. Al elegir Guardar Como en
el menú Archivo se deberá escoger la opción Libro Excel habilitado para macros a lo cual se cargará
el cuadro de diálogo Guardar como donde se podrá especificar el nombre del documento así como
poder cambiar la carpeta donde se desea guardar.

26
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

4. Ejecutar el proyecto
Se puede verificar el funcionamiento de la aplicación digitando en la hoja de cálculo y en las debidas
celdas, los valores con los cuales se desea realizar el cálculo. Seguido, basta con hacer clic sobre el
botón y observar los resultados.

TEMA 5 Ejercicios de aplicación


Edite los documentos en MS Excel y las respectivas macros para solucionar los siguientes problemas:

1. Calcular el área de un triángulo.


2. Hallar el máximo común divisor de 2 números
3. Leer la edad de una persona y decir si es mayor o menor de edad
4. Implementar una calculadora con las siguientes operaciones: suma, resta, multiplicación, división
y potenciación.
5. Calcular el valor de una llamada telefónica con base en la duración y el valor del minuto, teniendo
en cuenta que si se hizo en la noche tiene un descuento del 10%.
6. Calcular el valor en pesos de una cantidad en dólares o el valor en dólares de una cantidad en
pesos.

27
POLITÉCNICO COLOMBIANO
Jaime Isaza Cadavid

Programación en VBA

7. Realizar un algoritmo que calcule el área de una circunferencia con base en el radio.
5. Realizar un algoritmo que calcule el 25 % de cualquier valor.
6. Realizar un algoritmo lea la edad de una persona en años y diga cuantos días ha vivido.
7. Realizar un algoritmo que lea un número y diga si es negativo o positivo.
8. Realizar un algoritmo que lea la edad de una persona y diga si es bebe, niño, adolescente, joven
o adulto con base en la siguiente tabla :
Clasificación Edad
Bebe hasta los 3 años
Niño hasta los 12 años
Adolescente hasta los 18 años
Joven hasta los 25 años
Adulto de los 25 años en adelante.
9. Realizar un algoritmo que lea el salario básico de un empleado y el salario mínimo vigente y diga
si el empleado tiene derecho a subsidio de transporte si gana menos de dos salarios mínimos.
10. Realizar un algoritmo que con base en el saldo de una cuenta de ahorros al final de un trimestre
calcule los intereses ganados dada una tasa anual del 28 %. Si los intereses son superiores a $
250.000.oo se debe restar la retención en la fuente equivalente al 5 % de los intereses. Se debe
mostrar el saldo final de la cuenta después de intereses y la retención.
11. Realizar un algoritmo que lea la capacidad de un carrotanque de gasolina (en litros) y las
dimensiones (en metros) de un tanque en forma de cilindro de una estación de servicio (largo y
radio), y diga si el contenido del carrotanque cabe en el de la estación. Recuerde:
 Un litro = 10 centímetros cúbicos
 Volumen del cilindro = largo * Pi * radioˆ2
12. Realizar un algoritmo que lea un número X y otro entero positivo N y calcule la N-ésima potencia
de X en base a multiplicaciones sucesivas.

28

Vous aimerez peut-être aussi