Sunteți pe pagina 1din 55

NOTAS DEL CURSO

M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Todos los derechos reservados. Ninguna parte de esta publicacin debe ser
reproducida, almacenada en sistema alguno o transmitido por otro medio electrnico,
mecnico, fotocopiador, registrador, etc.- sin permiso previo por escrito del autor.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
2
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

CONTENIDO
Qu podemos realizar con una macro?..............................................................................................................4
Estructuracin del lenguaje de programacin......................................................................................................5
Cmo empezar a realizar una macro....................................................................................................................7
Simplificacin de tareas frecuentes: grabar una macro simple..........................................................................11
Utilizar la macro que ha creado..........................................................................................................................13
Ejecutar la macro desde el men Herramientas.................................................................................................13
Crear un botn en la barra de herramientas que ejecute la macro......................................................................13
Asignar una combinacin de teclas para ejecutar la macro................................................................................14
Ejecutar una macro.............................................................................................................................................14
Ejecutar una macro.............................................................................................................................................15
Ejecutar una macro presionando una combinacin de teclas de mtodo abreviado con CTRL.........................16
Ejecutar una macro haciendo clic en un botn de la barra de herramientas de acceso rpido...........................17
Ejecutar una macro haciendo clic en un rea de un objeto grfico....................................................................18
Ejecutar automticamente una macro al abrir un libro.......................................................................................19
Crear una macro Auto_abrir...............................................................................................................................20
Crear un procedimiento de VBA para el evento Open de un libro.....................................................................22
Entendiendo el cdigo........................................................................................................................................24
Modificando cdigos: Un ejemplo sencillo.......................................................................................................26
Ejemplo prctico No. 1: Impresin de recibos foliados.....................................................................................29
El ciclo Do While...............................................................................................................................................34
Caso prctico No. 1. Clculo de horas trabajadas a la semana...........................................................................35
Caso Prctico No. 2. Clculo de la utilidad promedio de una empresa..............................................................36
Caso prctico No. 3. Combinaciones.................................................................................................................36

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
3
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Caso prctico No. 4. Permutaciones...................................................................................................................38


Caso prctico No.5. Clculo de la TIR...............................................................................................................39
Caso prctico No. 6. Clculo de la mensualidad en un prstamo.......................................................................40
Caso prctico No. 7 Simulacin Compra-Venta en Bolsa de Valores................................................................41
Caso prctico No. 8. Registros en una base de datos.........................................................................................52

Qu podemos realizar con una macro?

Una macro la podemos definir como un programa dentro de la propia hoja de clculo que
nos automatiza una serie de trabajos: una macro nos podr, por ejemplo, hacer una
impresin de forma automtica, sin tener que definir cada vez una base de datos, si sta la
modificamos peridicamente. No deberemos definir cada vez ms rangos, ni grficos
cuando varen. La macro lo har por nosotros, y as otros trabajos o proyectos que se
abordarn a lo largo de este curso.

Como quiera que la teora de ir viendo una a una la gran cantidad de instrucciones de Visual
Basic adaptadas a la hoja de Excel puede ser pesada, la mejor forma de entenderlas es con
ejemplos prcticos como se ir desarrollando a lo largo del curso con ejemplos ilustrativos
para ver cmo funciona una determinada instruccin y cmo se debe construir para que
funcione correctamente. De esta forma, el usuario aplica los conocimientos de forma
prctica y gradual.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
4
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Estructuracin del lenguaje de programacin

Todas las palabras que se van a utilizar en la programacin las podemos agrupar en los
siguientes grupos:

FUNCIONES: Al igual que las utilizadas en la hoja de clculo, nos devolvern una
serie de caractersticas de variables, datos, hora, texto, etc.

MTODOS: Palabras que utilizaremos para indicar a la hoja cmo debe realizar
determinados trabajos, como abrir hojas, clculos, etc.

OBJETOS: Sern las que utilizaremos para estructurar objetos de la hoja, como
grficos, tablas dinmicas, barras de mens, etc.
PROPIEDADES: Utilizadas para definir las de un determinado objeto, hoja, botn,
color, etc.

ENUNCIADOS: Instrucciones de programacin propiamente dichas.

Englobadas todas las instrucciones disponibles dentro de estos grandes enunciados, se


pueden dividir en una serie de grupos en funcin del trabajo a realizar:
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
5
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Control de flujo: Control de flujo de procedimientos y realizacin de bucles.

Conversin: Convertir nmeros y tipos de datos.


Directorios y archivos: Controlar el sistema de archivos y procesar archivos.

Entradas y salidas: Recibir entradas y mostrar o imprimir salidas.

Errores: Detectar y devolver valores de error.

Fechas y horas: Convertir y utilizar expresiones de fecha y de hora.

Manipulacin de cadenas: Manipular cadenas y datos de tipo cadena.

Matemticas: Efectuar tanto clculos trigonomtricos como matemticos.

Matrices: Crear, definir y utilizar matrices.

Varios: Iniciar otras aplicaciones y proceso de eventos.

Operadores: Comparar expresiones y otras operaciones.

Tipos de datos: Tipos de datos y subtipos de variantes.

Variables y constantes: Declarar y definir variables y constantes.

Una macro es un supercomando: un comando que, en un nico paso, realiza lo que


normalmente requerira de muchas operaciones. Permite agilizar y automatizar an ms el
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
6
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

trabajo con Excel. Las macros son un grupo de instrucciones programadas bajo en torno
VBA (Visual Basic para Aplicaciones), cuya tarea principal es la automatizacin de tareas
repetitivas y la resolucin de clculos complejos.

El lenguaje VBA, es un lenguaje de programacin basado en el visual Basic, enfocado a la


realizacin de programas sobre las herramientas Excel, Access, Word, etc. Mediante macros
en VBA podemos crear nuevas funciones para nuestras hojas Excel, personalizar estilos y
formatos, crear programas para la resolucin de clculos complejos, automatizar tareas, etc.

Ejemplo de cdigo VBA aplicado en Excel.

Una vez realizado el cdigo VBA, podemos ejecutar el programa mediante la creacin de
botones, nuevos mens, herramientas, etc.- de tal forma que la aplicacin creada resulte
intuitiva y de fcil manejo. Las Macros en Excel se escriben siempre en Visual Basic y las
instrucciones son en ingls, no hace falta ser un experto en esta lengua, slo se requieren
algunos conocimientos bsicos.

Cmo empezar a realizar una macro

Antes de inicializar el trabajo de construccin de una macro y grabar los pasos que se
realizan para llevar a cabo una determinada tarea, debemos primeramente instalar la Ficha
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
7
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

programador a travs de las Opciones de Excel, haciendo clic en el botn de Microsoft


Office, Opciones de Excel, Personalizar, Comandos disponibles y la Ficha programador la
podemos ubicar tal como se ver en las figuras siguientes:

Se abrir el siguiente men donde debemos elegir la opcin de Personalizar y posteriormente


insertar la ficha de programador:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
8
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Una vez instalada la ficha programador en la cinta de opciones lo podemos comprobar donde est
ubicada esta pestaa:

Con todos estos pasos realizados, ya dispondr el lector de la pestaa que le permitir grabar
macros y tambin el resto de las opciones para modificarlas.

Existe en la parte inferior de la hoja un botn que permite, sin tener activada la pestaa
Programador, grabar macros. En el grfico siguiente se puede ver. Bastar con hacer clic sobre l
para que se abra tambin la ventana de grabacin de la macro donde podemos asignarle un nombre.

Para poder editar cualquier macro o simplemente ver cmo est construida o construir una
nueva directamente, se deber ir a la ventana de Visual Basic, esta se llama con el botn
que se halla en la pestaa del Programador.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
9
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

La ventana de Visual Basic es la siguiente, la cual es igual en las versiones desde la97 hasta
la 2007:

Simplificacin de tareas frecuentes: grabar una macro simple

Supongamos que trabaja en un grupo que utiliza Excel para realizar un seguimiento de las
cuentas por cobrar. Todas las semanas sus compaeros de trabajo y usted envan un informe
en el que el administrador espera ver las cantidades atrasadas con formatos para facilitar su
visualizacin: los nmeros estn en rojo y en negrita, y las celdas tienen bordes rojos. A
continuacin se describe cmo grabar una macro para aplicar estos formatos:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
10
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

1. En el libro en el que realiza un seguimiento de las cuentas por cobrar, haga clic en una de
las celdas a la que vaya a dar formato.
2. Elija Macro en el men Herramientas y, a continuacin, haga clic en Grabar nueva
macro.
3. En el cuadro de dilogo Grabar macro, escriba un nombre para la macro en el cuadro
Nombre de la macro. Los nombres de las macros comienzan por una letra y pueden incluir
letras, nmeros y caracteres subrayados, pero no pueden incluir espacios. No necesita
cambiar el resto de los cuadros:

Cuando haga clic en Aceptar, aparecer la barra de herramientas Detener grabacin y ya


podr grabar. Hasta que detenga la grabacin, todos los comandos de Excel y pulsaciones
de teclas se grabarn en la macro, en el orden en que son introducidos.

4. Ahora dele a la celda el formato que desee usted: haga clic en Celdas en el men
Formato, haga clic en Fuente, haga clic en Negrita bajo Estilo, haga clic en Rojo en
Color, haga clic en la ficha Bordes, haga clic en Rojo en Color, elija el grosor del borde que
desee, haga clic en Contorno y, a continuacin, haga clic en Aceptar.
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
11
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

5. Para terminar de grabar la macro haga clic en el botn Detener grabacin que aparece
en la esquina inferior izquierda de la hoja de clculo:

Ahora dispone de una macro que puede realizar, en una sola operacin, los 12 clics de
mouse necesarios para dar formato a una celda.

Utilizar la macro que ha creado

La prxima vez que necesite marcar una celda, puede ejecutar la macro. Si va a utilizar la
macro con frecuencia, puede crear un botn en la barra de herramientas o asignarle una
tecla, o ambas cosas.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
12
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Ejecutar la macro desde el men Herramientas

1. Haga clic en la celda a la que desee dar formato.


2. En el men Herramientas, seleccione Macro y, a continuacin, haga clic en Macros.
3. Haga clic en el nombre de la macro y, a continuacin, haga clic en Ejecutar.

Crear un botn en la barra de herramientas que ejecute la macro

1. En el men Herramientas, haga clic en Personalizar y, despus, en la ficha Comandos.


2. En Categoras, haga clic en Macros.
3. Arrastre el botn personalizado a la barra de herramientas que desee.
4. En el cuadro de dilogo Personalizar, haga clic en Modificar seleccin y, a
continuacin, haga clic en Asignar macro.
5. En el cuadro de dilogo Asignar macro, haga clic en el nombre de la macro y, a
continuacin, haga clic en Aceptar.
6. Para cambiar el aspecto del botn, haga clic de nuevo en Modificar seleccin, elija
Cambiar imagen del botn y haga clic en una de las imgenes disponibles; o haga clic en
Modificar imagen del botn y utilice el Editor de botones para crear su propia imagen.
7. Haga clic en Cerrar.

Asignar una combinacin de teclas para ejecutar la macro

1. En el men Herramientas, seleccione Macro y, a continuacin, haga clic en Macros.


2. Haga clic en el nombre de la macro y, a continuacin, haga clic en Opciones.
3. En el cuadro Tecla de mtodo abreviado, escriba la tecla que utilizar con CTRL para
ejecutar la macro.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
13
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Nota: Evite utilizar una combinacin de teclas que se use para otras operaciones de Excel,
tales como CTRL+C para copiar.

Ejecutar una macro

Existen varias maneras de ejecutar una macro. Siempre puede ejecutar una macro por
medio del comando de men. Dependiendo de cmo est asignada la ejecucin de la macro,
es posible que tambin pueda ejecutarla presionando una combinacin de teclas de mtodo
abreviado con CTRL o haciendo clic en un botn de la barra de herramientas o en el rea de
un objeto, grfico o control. Asimismo, puede ejecutar una macro automticamente al abrir
un libro.

Nota: Cuando se establece el nivel de seguridad de macros de Microsoft Office Excel en


Deshabilitar todas las macros sin notificacin, Excel solo ejecutar las macros firmadas
digitalmente o almacenadas en una ubicacin de confianza, como la carpeta de inicio de
Excel. Si la macro que desea ejecutar no est firmada digitalmente o no est almacenada en
una ubicacin de confianza, puede cambiar temporalmente el nivel de seguridad para que se
habiliten todas las macros.

Para obtener ms informacin acerca de cmo cambiar la configuracin de seguridad de


macros, vea el tema sobre cmo cambiar la configuracin de seguridad de macros en
Excel.

Ejecutar una macro

1. Si la ficha Programador no est disponible, haga lo siguiente para mostrarla:

Haga clic en el botn de Microsoft Office y, a continuacin, haga clic en Opciones


de Excel.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
14
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel,


active la casilla de verificacin Mostrar Ficha Programador en la cinta de opciones y, a
continuacin, haga clic en Aceptar.

Nota: La cinta de opciones es un componente de la Interfaz de usuario de Microsoft Office


Fluent.

2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente


todas las macros, haga lo siguiente:

a) En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de macros.

b) En la categora Configuracin de macros, bajo Configuracin de macros, haga clic en


Habilitar todas las macros (no recomendado; puede ejecutarse cdigo posiblemente
peligroso) y, a continuacin, haga clic en Aceptar.

Nota: Para ayudar a evitar que se ejecute cdigo potencialmente peligroso, recomendamos
que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando
termine de trabajar con las macros. Para obtener ms informacin acerca de cmo cambiar
la configuracin, vea el tema sobre cmo cambiar la configuracin de seguridad de macros
en Excel.

1. Abra el libro que contiene la macro.


2. En la ficha Programador, en el grupo Cdigo, haga clic en Macros.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
15
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

3. En el cuadro Nombre de la macro, haga clic en la macro que desea ejecutar.


4. Siga uno de los procedimientos siguientes:
Para ejecutar una macro en un libro de Excel, haga clic en Ejecutar.

Sugerencia Tambin puede presionar CTRL+F8 para ejecutar la macro. Puede


interrumpir la ejecucin de la macro presionando ESC.
Para ejecutar una macro desde un mdulo de Microsoft Visual Basic, haga clic en
Edicin y, a continuacin, en el men Ejecutar, haga clic en Ejecutar

Sub/UserForm o presione F5.

Ejecutar una macro presionando una combinacin de teclas de mtodo


abreviado con CTRL.

1. Si la ficha Programador no est disponible, siga este procedimiento para mostrarla:

a) Haga clic en el botn de Microsoft Office y, a continuacin, haga clic en


Opciones de Excel.
b) En la categora Ms frecuentes, bajo Opciones principales para trabajar con Excel,
active la casilla de verificacin Mostrar ficha Programador en la cinta de opciones y, a
continuacin, haga clic en Aceptar.
Nota: La cinta de opciones es un componente de la Interfaz de usuario de Microsoft
Office Fluent.

2. En la ficha Programador, en el grupo Cdigo, haga clic en Macros.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
16
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

3. En el cuadro Nombre de la macro, haga clic en la macro a la que desea asignar una
combinacin de teclas con CTRL.
4. Haga clic en Opciones.
5. En el cuadro Tecla de mtodo abreviado, escriba cualquier letra minscula o mayscula
que desee utilizar.

Nota: La tecla de mtodo abreviado suplantar a cualquier tecla de mtodo abreviado


predeterminada equivalente en Excel mientras est abierto el libro que contiene la macro.
Para obtener una lista de teclas de mtodo abreviado que utilicen la tecla CTRL que ya
estn asignadas en Excel, vea Teclas de funcin y de mtodo abreviado de Excel.

6. Escriba una descripcin de la macro en el cuadro Descripcin.


7. Haga clic en Aceptar y, a continuacin, en Cancelar.

Ejecutar una macro haciendo clic en un botn de la barra de


herramientas de acceso rpido

1. Haga clic en el botn de Microsoft Office y, a continuacin, haga clic en


Opciones de Excel.
2. Haga clic en Personalizar y, a continuacin, en la lista Comandos disponibles en,
seleccione Macros.
3. En la lista, haga clic en la macro que cre y, a continuacin, en Agregar.
4. Para cambiar la imagen del botn de la macro, seleccione la macro en el cuadro donde la
agreg y haga clic en Modificar.
5. En Smbolo, haga clic en la imagen de botn que desea.
6. Para cambiar el nombre de la macro que aparece al posicionar el cursor sobre el botn,
escriba el nombre que desea en el cuadro Nombre para mostrar.
7. Haga clic en Aceptar para agregar el botn de la macro a la barra de herramientas de
acceso rpido.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
17
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

8. En la barra de herramientas de acceso rpido, haga clic en el botn de la macro.

Ejecutar una macro haciendo clic en un rea de un objeto grfico

1. En la hoja de clculo, seleccione un objeto grfico existente, como una imagen, una
imagen prediseada, una forma o un grfico SmartArt.
2. Para crear una zona activa en el objeto existente, en la ficha Insertar, en el grupo
Ilustraciones, haga clic en Formas, seleccione la forma que desea utilizar y, a
continuacin, dibuje dicha forma en el objeto existente.

3. Haga clic con el botn secundario del mouse (ratn) en la zona activa que ha creado y, a
continuacin, elija Asignar Macro en el men contextual.
4. Siga uno de los procedimientos siguientes:
Para asignar una macro al botn u objeto grfico, haga doble clic en la macro o
escriba el nombre de la misma en el cuadro Nombre de la macro.
Para grabar una nueva macro y asignarla al objeto grfico seleccionado, haga clic en

Grabar. Cuando termine de grabar la macro, haga clic en Detener grabacin


en la ficha Programador en el grupo Cdigo.

Sugerencia: Tambin puede hacer clic en Detener grabacin en el lado izquierdo de


la barra de estado.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
18
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Para modificar una macro existente, haga clic en el nombre de la macro, en el cuadro
Nombre de la macro y, a continuacin, haga clic en Modificar.

5. Haga clic en Aceptar.


6. En la hoja de clculo, seleccione la zona activa.

Sugerencia: Se mostrarn las Herramientas de dibujo con la ficha Formato

7. En la ficha Formato, en el grupo Estilo de forma, haga lo siguiente:


Haga clic en la flecha situada junto a Relleno de forma y, a continuacin, haga clic
en Sin relleno.
Haga clic en la flecha situada junto a Contorno de forma y, a continuacin, haga
clic en Sin contorno.

Ejecutar automticamente una macro al abrir un libro

Si graba una macro y la guarda con el nombre "Auto_abrir", la macro se ejecutar cada vez
que se abra el libro que contiene la macro. Otra forma de ejecutar automticamente una
macro al abrir un libro es escribir un procedimiento de Microsoft Visual Basic para
Aplicaciones (VBA) en el evento Open del libro usando el Editor de Visual Basic. El
evento Open es un evento de libro integrado que ejecuta su cdigo de macro cada vez que
se abre el libro.

Crear una macro Auto_abrir

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
19
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

1. Si la ficha Programador no est disponible, haga lo siguiente para mostrarla:

a) Haga clic en el botn de Microsoft Office y, a continuacin, haga clic en


Opciones de Excel.
b) En la categora Ms frecuentes, bajo Trabajar con Excel y con otras aplicaciones de
Office, active la casilla de verificacin Herramientas para el programador y haga clic en
Aceptar.

2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente


todas las macros, haga lo siguiente:

a) En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de macros.


b) En la categora Configuracin de macros, bajo Configuracin de macros, haga clic en
Habilitar todas las macros (no recomendado; puede ejecutarse cdigo posiblemente
peligroso) y, a continuacin, haga clic en Aceptar.

Nota: Para ayudar a evitar que se ejecute cdigo potencialmente peligroso, recomendamos
que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando
termine de trabajar con las macros.

1. Si desea guardar la macro con un libro determinado, abra primero ese libro.
2. En la ficha Programador, en el grupo Cdigo, haga clic en Grabar macro.
3. En el cuadro Nombre de la macro, escriba Auto_abrir.
4. En la lista Guardar macro en, seleccione el libro donde desea almacenar la macro.

Sugerencia: Si desea que la macro est disponible siempre que utilice Excel, seleccione
Libro de macros personal. Cuando se selecciona Libro de macros personal, Excel crea
un libro oculto de macros personal (Personal.xlsb), si an no existe, y guarda la macro en
este libro. En Windows Vista, este libro se guarda en la carpeta C:\Usuarios\nombre de

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
20
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

usuario\AppData\Local\Microsoft\Excel\XLStart. En Microsoft Windows XP, este libro se


guarda en la carpeta C:\Documents and Settings\nombre de usuario\Datos de
programa\Microsoft\Excel\XLStart. Los libros almacenados en la carpeta XLStart se abren
automticamente al iniciar Excel. Si desea que se ejecute automticamente una macro del
libro de macros personal en otro libro, tambin debe guardar ese libro en la carpeta
XLStart, de forma que ambos libros se abran cuando se inicie Excel.

5. Haga clic en Aceptar y realice las acciones que desea grabar.

6. En la ficha Programador, en el grupo Cdigo, haga clic en Detener grabacin .

Sugerencia: Tambin puede hacer clic en Detener grabacin en el lado izquierdo de


la barra de estado.

Notas:
Si en el paso 6 eligi guardar la macro en Este libro o en Libro nuevo, guarde o
mueva el libro a una de las carpetas XLStart.
La grabacin de una macro Auto_abrir tiene las limitaciones siguientes:
Si el libro en donde se guarda la macro Auto_abrir ya contiene un procedimiento de
VBA en su evento Open, el procedimiento de VBA del evento Open reemplazar
todas las acciones contenidas en la macro Auto_abrir.
Las macros Auto_abrir se omiten cuando se abren libros mediante programacin
utilizando el mtodo Open.
Una macro Auto_abrir se ejecuta antes de que se abra cualquier otro libro. Por lo
tanto, si graba acciones que desea que realice Excel en el libro predeterminado
Libro1 o en un libro cargado desde la carpeta XLStart, la macro Auto_abrir
producir un error cuando reinicie Excel porque la macro se ejecuta antes de abrir
los libros de inicio y el predeterminado.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
21
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Si encuentra estas limitaciones, en vez de grabar una macro Auto_abrir, debe crear
un procedimiento de VBA para el evento Open como se describe en la seccin
siguiente de este artculo.
Si desea iniciar Excel sin ejecutar una macro Auto_abrir, mantenga presionada la
tecla MAYS al abrir el programa.

Crear un procedimiento de VBA para el evento Open de un libro

El ejemplo siguiente utiliza el evento Open para ejecutar una macro al abrir el libro.

1. Si la ficha Programador no est disponible, haga lo siguiente para mostrarla:

a) Haga clic en el botn de Microsoft Office y, a continuacin, haga clic en


Opciones de Excel.
b) En la categora Ms frecuentes, bajo Trabajar con Excel y con otras
aplicaciones de Office, active la casilla de verificacin Herramientas para el
programador y haga clic en Aceptar.

2. Para establecer el nivel de seguridad de manera que estn habilitadas temporalmente


todas las macros, haga lo siguiente:
a) En la ficha Programador, en el grupo Cdigo, haga clic en Seguridad de
macros.

b) En la categora Configuracin de macros, bajo Configuracin de macros, haga


clic en Habilitar todas las macros (no recomendado; puede ejecutarse cdigo
posiblemente peligroso) y, a continuacin, haga clic en Aceptar.
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
22
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Nota: Para ayudar a evitar que se ejecute cdigo potencialmente peligroso, recomendamos
que vuelva a cualquiera de las configuraciones que deshabilitan todas las macros cuando
termine de trabajar con las macros.

1. Guarde y cierre todos los libros abiertos.


2. Abra el libro donde desea agregar la macro o cree un nuevo libro.
3. En la ficha Programador, en el grupo Cdigo, haga clic en Visual Basic.
4. En la ventana Explorador de proyectos, haga clic con el botn secundario en el objeto
ThisWorkbook y, a continuacin, haga clic en Ver cdigo.

Sugerencia: Si la ventana Explorador de proyectos no est visible, en el men Ver, haga


clic en Explorador del proyecto.

5. En la lista Objeto situada encima de la ventana Cdigo, seleccione Libro.

De esta manera se crea un procedimiento vaco para el evento Open, como el siguiente:

Private Sub Workbook_Open()


End Sub

6. Agregue al procedimiento las lneas de cdigo siguientes:


Private Sub Workbook_Open()
MsgBox Date
Worksheets("Sheet1").Range("A1").Value = Date
End Sub

7. Cambie a Excel y guarde el libro como libro habilitado para macros (.xlsm).
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
23
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

8. Cierre y vuelva a abrir el libro. Al abrir de nuevo el libro, Excel ejecuta el procedimiento
Private Sub Workbook_Open, que muestra la fecha actual en un cuadro de mensaje.
9. Haga clic en Aceptar en el cuadro de mensaje.

Observe que la celda A1 de la Hoja1 tambin contiene la fecha, como resultado de ejecutar
el procedimiento Private Sub Workbook_Open.

Entendiendo el cdigo
Retomando nuestro ejemplo de los nmeros rojos en las cuentas por cobrar, parece que
nuestra macro funciona, vamos a verla por dentro:

5
1) La macro comienza con la instruccin especial Sub, seguida del nombre elegido.
2) Las lneas precedidas por un apstrofo son comentarios por el usuario y no forman parte
de la macro.
3) Esta instruccin corresponde a la operacin de seleccionar la fuente con la que se define
el color del texto en la celda elegida (que fue justamente lo que se hizo luego de encender el
grabador).
4) Finaliza la instruccin que define el tipo de fuente, color y dems propiedades que
llevar el texto en la celda seleccionada.
5) La macro termina con la instruccin End Sub.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
24
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Una de las instrucciones merece una explicacin detallada:


With Selection.Font
Esta instruccin tiene tres partes: El complemento, la accin y la propiedad, separadas por
un punto. Concretamente, la accin es la seleccin de la celda especfica y la propiedad es
definir la fuente y los colores que deber llevar el texto en dicha celda, en este caso sera el
texto de color rojo.
Enseguida se encuentran las instrucciones (seguidas por un punto) cuyas propiedades
define el tipo de letra, color, tamao, sombreado, etc. por ejemplo:
.Name = "Calibri"
.FontStyle = "Normal"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.Color = 255
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor

Las estructuras objeto.accin y objeto.propiedad aparecen mucho en Visual Basic.


Aunque ste no es un manual de Visual Basic, con un poco de ingenio y lgica podemos
comenzar a programar.

Modificando cdigos: Un ejemplo sencillo.

Retomemos el ejemplo en el que cambiamos de color las letras de una celda, pero ahora nos
interesa ocultar la columna Cantidad mediante la grabadora de macros:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
25
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Una vez grabada el cdigo correspondiente en el editor de VBA ser el siguiente:

Sub OcultarCantidad()
'
' OcultarCantidad Macro
' Macro grabada el 20/04/2013 por Riquet Zequeira
'
' Acceso directo: CTRL+o
'
Columns("C:C").Select
Selection.EntireColumn.Hidden = True
End Sub

Podemos crear una macro que muestre la columna Cantidad a travs del cdigo sin
utilizar la grabadora de macros, basta con acceder directamente al editor de Visual Basic y
escribimos el cdigo como aparece en la figura siguiente:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
26
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Sin embargo aunque se oculte la columna Cantidad a travs de estas instrucciones es


necesario asignarle un mtodo abreviado de manera sencilla, deberemos ir a Ficha
Programador > Cdigo > Macros, o bien pulsar Alt + F8, y veremos una ventana dilogo
con un listado de nuestras macros:

Con la macro de nuestro listado seleccionada, pulsaremos el botn de Opciones, mostrando


una nueva ventana en la que podremos asignar una tecla para llamar a nuestra macro
MostrarCantidad:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
27
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Todava podemos ir un paso ms all. Sera mucha ms cmodo trabajar con nica macro.
Ocultara la columna Cantidad con una sola macro, es decir, ocultar y mostrar con la
misma instruccin, para lo cual basta realizar el siguiente cdigo:

Sub OcultarMostrar()
If Selection.EntireColumn.Hidden = False Then
Selection.EntireColumn.Hidden = True
Else
Selection.EntireColumn.Hidden = False
End If
End Sub

Una vez hecho eso podemos elegir cualquier combinacin que nos parezca adecuada (por
ejemplo CTRL + s) y veremos cmo la columna Cantidad aparece y desaparece.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
28
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Esta nueva macro usa una instruccin nueva: la condicional If, que en ingls quiere decir si.
Las instrucciones que aparecen en el cdigo anterior pueden traducirse as:

Si la columna correspondiente a cantidad est a la vista, entonces (en ingls then)


ocultar esa columna.
Si no (en ingls, else), es decir, si est oculta
mostrarla.
Fin (end) de la condicional.

Las instrucciones de la forma If,,,ThenElse se llaman condicionales por que ejecutan


una u otra operacin segn el cumplimiento o no de una condicin. Este tipo de estructura
aparece en muchos lenguajes y visual Basic no es la excepcin.

Ejemplo prctico No. 1: Impresin de recibos foliados.

Del ejemplo anterior aprendimos que las instrucciones que forman parte de una macro
pueden ser de dos tipos:
Las que equivalen a los comandos de Excel. Por ejemplo, seleccionar un rango u
ocultar una columna.
Instrucciones especiales, para controlar la operacin de la macro. Por ejemplo, la
instruccin condicional If,,,ThenElse

Las instrucciones del segundo tipo son ms complejas porque no podemos obtenerlas
automticamente del grabador, pero nos permiten crear macros ms poderosas. Veamos
ahora un ejemplo que nos permitir comprender esto con mayor claridad.

Dado el siguiente recibo, queremos imprimir cien copias de este recibo, numeradas
consecutivamente de uno en uno, el nmero de recibo debe aparecer en la celda E4 como se
muestra en la siguiente figura:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
29
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

El cdigo correspondiente es el siguiente:

Sub Recibos ( )
For i = 1 To 3
Range("E3").Value = i
ActiveWindow.SelectedSheets.PrintOut
Copies:=1
Next
End Sub

La instruccin ActiveWindow.SelectedSheets.PrintOut imprime la planilla, es decir el


recibo. En la misma instruccin se dice que se debe imprimir una copia por vez. La
instruccin debe repetirse tres veces, cambiando el nmero de recibo. Para eso se necesita
un ciclo: una forma de indicar que una instruccin se ejecuta varias veces, cclicamente. En
la macro usamos uno de los ciclos ms simples: ForNext.

Las instrucciones contenidas en el ciclo se ejecutan mientras una variable auxiliar cambia
su valor desde un valor inicial hasta alcanzar un mximo. En la macro anterior, la variable

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
30
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

auxiliar la llamamos i y su valor comienza en 1 y termina en 3, nosotros podemos definir


hasta donde podra terminar. Por lo tanto, i es un contador que controla cuntas veces se
ejecuta una tarea.

Por otra parte, la instruccin Range("E3").Value = i escribe el valor de la variable i en la


celda E3 de la planilla. Aqu aparece otra vez la estructura objeto.propiedad: del la celda
E3 tomamos su propiedad valor (en ingls value). Es decir, que la variable i sirve tanto
para controlar que la impresin se realice cien veces como para numerar cada copia.

Ejemplo prctico No. 2: Impresin de recibos con folios mltiples

Consideremos un recibo muy simple como el que mostramos en la siguiente figura:

Los datos de ste recibo como nombre, importe, etc., se obtienen del listado de la siguiente
figura:

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
31
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Se deber imprimir un recibo como el que mostramos al inicio del ejemplo. Para obtener
todos los recibos tenemos que recorrer el listado de la figura anterior copiando ciertos datos
en la planilla de la primera pantalla:

La fecha de la celda E1 la copiamos en H2.


La direccin de la celda B2 en H3.
El nmero de unidad de la columna A en la celda H4.

Y as sucesivamente con todos los datos. El nmero de recibo podra generarse en forma
automtica al imprimir, y el importe debe calcularse multiplicando el importe total de la
celda B1 por el porcentaje de la columna D.

Como el listado de la segunda pantalla comienza en la fila 5 y termina en la 16 podemos


usar un ciclo ForNext para recorrerlo y obtener todos los recibos, para ello se realizar
la siguiente macro:

Sub Edificio()
[H2] = [E1]
[H3] = [B2]
ActiveSheet.PageSetup.PrintArea = "$G$1:$I$6"

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
32
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

For fila = 5 To 10
[H1] = [H1] + 1
[H4] = Cells(fila, 1)
[H5] = Cells(fila, 5)
[H6] = [B1] * Cells(5, 4)
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Next
End Sub

Los datos e fecha (E2) y direccin (B2) van fuera del ciclo porque se mantienen constantes
para todos los recibos. Vemos tambin la instruccin que incrementa, en cada pasada, el
nmero de recibo de la celda H1.
El resto de los datos van cambiando para cada integrante de la lista, segn el valor de la
variable fila. Para completar la macro solamente se incluye la instruccin correspondiente
a la impresin.

ActiveSheet.PageSetup.PrintArea = "$G$1:$I$6" establece el rango de


impresin.
ActiveWindow.SelectedSheets.PrintOut Copies:=1 imprime el rango establecido,
en esta instruccin podemos modificar el nmero de copias.

La primera instruccin le ponemos antes del ciclo ForNext, porque es el mismo para
todos los recibos. La segunda la ponemos antes del Next, para proceder con la impresin
justo antes de pasar al siguiente registro de la lista.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
33
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

El ciclo Do While

En la siguiente macro reemplazamos el ciclo ForNext, por Do While, cuya duracin


depende de la condicin. En este caso, el ciclo contina mientras el valor de la celda sea
mayor que cero. Las instrucciones que forman el ciclo son comprendidas entre el Do y el
Loop, se incrementa el numero de fila para pasar al siguiente registro de lista. Podemos
averiguar cmo se indica en una macro la obtencin de la vista previa, de la siguiente
manera:

Sub Edificio()
[H2] = [E1]
[H3] = [B2]
ActiveSheet.PageSetup.PrintArea = "$G$1:$I$6"
fila = 5
Do While Cells(fila, 1) > 0
[H1] = [H1] + 1
[H4] = Cells(fila, 1)
[H5] = Cells(fila, 5)
[H6] = [B1] * Cells(5, 4)
ActiveWindow.SelectedSheets.PrintPreview
Loop
End Sub

ActiveWindow.SelectedSheets.PrintPreview reemplaza la instruccin de


impresin por la vista previa, para probar la ejecucin de la macro sin derrochar
papel.

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
34
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Caso prctico No. 1. Clculo de horas trabajadas a la semana.

Option Explicit
Sub HorasSemanales()
'Calcula las horas semanales trabajadas
Dim a(1 To 5, 1 To 2) As Single
Dim dia As String, jornada As String
Dim i As Byte, j As Byte 'Tipo byte entre 0 y 255
Dim horas As Single
For i = 1 To 5
Select Case i
Case 1: dia = "Lunes"
Case 2: dia = "Martes"
Case 3: dia = "Miercoles"
Case 4: dia = "Jueves"
Case 5: dia = "Viernes"
End Select
For j = 1 To 2
If j = 1 Then
jornada = "INICIO"
Else
jornada = "FINAL"
End If
a(i, j) = InputBox("Introduzca la hora de " & jornada _
& " de la jornada de " & dia & "," & vbCrLf & _
"en formato decimal. Por ejemplo 17:30 son las 17,5")
If j = 2 Then horas = horas + a(i, 2) - a(i, 1)
Next j
Next i
MsgBox "Horas semanales = " & horas
End Sub

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
35
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Caso Prctico No. 2. Clculo de la utilidad promedio de una empresa

Sub BeneficioMedio()
'Calcula el beneficio medio de un grupo de empresas
Dim a() As Double 'Define una matriz sin decir an la dimensin
Dim n As Byte
Dim i As Byte
Dim media As Double
n = InputBox("Nmero de empresas del Grupo=")
ReDim a(n) 'Redimensiona una matriz dinmica
For i = 1 To n
a(i) = InputBox("Beneficio de la Empresa " & i & " = ", "La Media hasta ahora es " &
media)
media = (media * (i - 1) + a(i)) / i
Next
MsgBox "Beneficio Medio del Grupo de Empresas= " & media
End Sub

Caso prctico No. 3. Combinaciones

'Escribir las 4!=24 frmas diferentes de escribir ABCD alterando el orden


Sub permuta()
Dim i As Byte, j As Byte, k As Byte, l As Byte
Dim a() As Byte, mensaje As String
For i = 1 To 4
For j = 1 To 4
For k = 1 To 4
For l = 1 To 4
If i = j Or i = k Or i = l Or j = k Or j = l Or k = l Then
Else
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
36
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

mensaje = mensaje & palabra(i, j, k, l) & vbCrLf


Exit For
End If
Next l
Next k
Next j
Next i
MsgBox mensaje
End Sub
Function palabra(i As Byte, j As Byte, k As Byte, l As Byte) As String
Dim letra As String * 1
Dim n As Byte, x As Byte
Dim a(1 To 4) As Byte
a(1) = i: a(2) = j: a(3) = k: a(4) = l
For n = 1 To 4
x = a(n)
Select Case x
Case 1: letra = "A"
Case 2: letra = "B"
Case 3: letra = "C"
Case 4: letra = "D"
End Select
palabra = palabra & letra
Next n
End Function
Sub permuta_bis() 'Permutaciones de ABCD
Dim i As Byte, j As Byte, n As Byte
Dim a(1 To 4) As String
Dim b(1 To 24) As String
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
37
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Dim frase As String


Dim x As Single
Randomize
For n = 1 To 24
For i = 1 To 4
x = Rnd
Select Case x
Case Is < 0.25: a(i) = "A"
Case 0.25 To 0.5: a(i) = "B"
Case 0.5 To 0.75: a(i) = "C"
Case Is > 0.75: a(i) = "D"
End Select
palabra = palabra & letra
Next n
End Function

Caso prctico No. 4. Permutaciones

Sub permuta_bis() 'Permutaciones de ABCD


Dim i As Byte, j As Byte, n As Byte
Dim a(1 To 4) As String
Dim b(1 To 24) As String
Dim frase As String
Dim x As Single
Randomize
For n = 1 To 24
For i = 1 To 4
x = Rnd
Select Case x
Case Is < 0.25: a(i) = "A"
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
38
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Case 0.25 To 0.5: a(i) = "B"


Case 0.5 To 0.75: a(i) = "C"
Case Is > 0.75: a(i) = "D"
End Select
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1: Exit For
Next j
Next i
b(n) = ""
For i = 1 To 4
b(n) = b(n) & a(i)
Next i
For j = 1 To n - 1
If b(j) = b(n) Then n = n - 1: Exit For
Next j
Next n
For n = 1 To 24
frase = frase & b(n) & vbCrLf
Next n
MsgBox frase
End Sub

Caso prctico No.5. Clculo de la TIR.

Sub CalculaTIR()
Range("F7").Value = 0
Range("H7").Value = 1
Do While Abs(Range("G8")) > 0.00001 'error admitido
If Range("G8") < 0 Then

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
39
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("H7") = Range("G7")
Else
Range("F7") = Range("G7")
End If
'La siguiente lnea se utiliza para retrasar la ejecucin de la macro
'de esta forma se puede ver como converge la tasa a la TIR
'Application.Wait Now + TimeValue("00:00:1")
Loop
End Sub

Caso prctico No. 6. Clculo de la mensualidad en un prstamo

Sub prestamo()
Static Principal 'Variable esttica. No cambia
Static Tasa
Static Terminos
Dim Pago As Double
Principal = Application.InputBox(Prompt:="Principal (100000 por ejemplo)", _
Default:=Principal)
Tasa = Application.InputBox(Prompt:="Tipo de inters nominal anual (4,75 por
ejemplo)", _
Default:=Tasa)
Terminos = Application.InputBox(Prompt:="Nmero de aos (30 por ejemplo)", _
Default:=Terminos)
'Vea como se usa la funcin de Excel Pmt (Pago) sin necesidad de calcularla en una celda
Pago = Application.WorksheetFunction.Pmt(Tasa / 1200, Terminos * 12, Principal)
MsgBox Prompt:="La Mensualidad es " & Format(-Pago, "Currency"),
Title:="Calculadora de Prstamos"
End Sub

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
40
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Caso prctico No. 7 Simulacin Compra-Venta en Bolsa de Valores

Option Explicit
Dim fila As Integer

Sub genera()
Dim n As Long
Dim i As Long
fila = 0
Call limpia_zona
Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja1").Activate
n = CInt(InputBox("Cuantos das de cotizacin?" & Chr(10) & "Por ejemplo, 100, o
bien, 500 ", "Entrada de Datos"))

Range("K10").Value = "Capital"
Range("L10").Value = "Acciones"
Range("M10").Value = "Patrimonio"
Range("N10").Value = "Acc.Comp."
Range("O10").Value = "Acc.Vendidas"
Range("P10").Value = "Aportadas"
Range("D11").Value = 15
Range("B10").Value = "N"
Range("B11").Value = 1
Range("B11").Select
'Este es el famoso Edicin, Rellenar, Series
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=n
Randomize
Range("C12").Value = "=LogInv(RAND(), 0, 2%) - 1"
Range("D12").Formula = "=+Round(D11*(1+C12),2)"

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
41
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("C12:D12").Select
Selection.Copy
Range("B11").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Range("C12").Select

Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Call ordenes
Call principal(n)

Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja2").Activate
Range("H6").Formula = "=+E6"
Range("H7").Formula = "=+H6+E7"
Range("I6").Formula = "=+1400-E6*C6"
Range("I7").Formula = "=+if(left(D7,1)=""A"",+I6+1400-E7*C7,if(left(D7,1)=""V"",
+I6-E7*C7,+I6-E7*F7))"
Range("I7").NumberFormat = "#,##0.00"

Range("H7:I7").Select
Selection.Copy
Range("G5").Select
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
42
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste

Range("A1").Select
Application.CutCopyMode = False

Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja1").Activate
Range("A1").Select
Call grafica
End Sub

Sub limpia_zona()
'Range("B12:D12").Select
'Range("D12").Activate
'Range(Selection, Selection.End(xlDown)).Select
'Selection.ClearContents
'Range("B10").Select
Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja2").Activate

Cells.Select
Selection.Clear
Range("B5").Value = "Dia"
Range("C5").Value = "Precio Dia"
Range("D5").Value = "Tipo"
Range("E5").Value = "N Acc."
Range("F5").Value = "Precio"
Range("G5").Value = "Pasado"

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
43
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("H5").Value = "Acc.Acum."
Range("I5").Value = "Capital"

Range("B5.I5").Font.Bold = True
Range("B5.I5").HorizontalAlignment = xlCenter

Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja1").Activate
Cells.Select
Selection.Clear
End Sub

Sub Lista(Dia As Long, Precio As Single, Tipo As String, Aportadas As Single, otroPrecio
As Single, pasado As Long)
Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja2").Activate

Range("B5").Select

fila = fila + 1

ActiveCell.Offset(fila, 0).Value = Dia


ActiveCell.Offset(fila, 1).Value = Precio
ActiveCell.Offset(fila, 1).NumberFormat = "0.00"
ActiveCell.Offset(fila, 2).Value = Tipo

ActiveCell.Offset(fila, 3).Value = Aportadas


ActiveCell.Offset(fila, 4).Value = otroPrecio
ActiveCell.Offset(fila, 4).NumberFormat = "0.00"
ActiveCell.Offset(fila, 5).Value = pasado

Application.Workbooks("CompVtaBolsa.xls").Worksheets("Hoja1").Activate

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
44
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("B10").Select
End Sub

Sub principal(n)
Dim Dia As Long
Dim pasado As Long
Dim Precio As Single
Dim CA As Single 'Precio Lmite de la orden de Compra A
Dim CB As Single
Dim CC As Single
Dim VA As Single
Dim VB As Single
Dim VC As Single 'Precio Lmite de la orden de Vanta C
Dim Capital As Double
Dim Acciones As Long
Dim Aportadas As Single
Dim CAn As Long 'Nmero de compras A
Dim CBn As Long 'Nmero de compras B
Dim CCn As Long 'Nmero de compras C
Dim VAn As Long 'Nmero de ventas A
Dim VBn As Long 'Nmero de ventas B
Dim VCn As Long 'Nmero de ventas C
Dim POld As Single
Dim Patrimonio As Double
Dim Compradas As Single
Dim Vendidas As Single
Dim otroPrecio As Single
Dim compradasA As Single
Dim compradasB As Single
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
45
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Dim compradasC As Single


Dim vendidasA As Single
Dim vendidasB As Single
Dim vendidasC As Single

Range("B10").Activate
For Dia = 1 To n
Compradas = 0
Vendidas = 0
Precio = ActiveCell.Offset(Dia, 2).Value
Aportadas = Round(100 / Precio, 0) + Round(200 / Precio, 0) + Round(400 / Precio, 0)
'Las aportadas se calcula con estos tres sumandos ya que cuando se compran con los
700 $,
'se da simultaneamente la orden de venta. Pero son tres ordenes de venta, por lo que
'por el tema de los redondeos tenemos que calcularlo as.
Acciones = Acciones + Aportadas
ActiveCell.Offset(Dia, 14).Value = Aportadas
Capital = Capital + 1400 - Aportadas * Precio
otroPrecio = Precio

Call Lista(Dia, Precio, "Aportadas", Aportadas, otroPrecio, Dia)

For pasado = 1 To Dia - 1


POld = ActiveCell.Offset(pasado, 2).Value

CA = Range("B10").Offset(pasado, 3).Value
CB = Range("B10").Offset(pasado, 4).Value
CC = Range("B10").Offset(pasado, 5).Value
VA = Range("B10").Offset(pasado, 6).Value
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
46
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

VB = Range("B10").Offset(pasado, 7).Value
VC = Range("B10").Offset(pasado, 8).Value

compradasA = 0
compradasB = 0
compradasC = 0

If Precio <= CA And ActiveCell.Offset(pasado, 3).Font.Bold = False Then 'Se


activa la orden de Compra A
CAn = CAn + 1
Capital = Capital - 100
compradasA = Round(100 / CA, 0)
Acciones = Acciones + compradasA
Capital = Capital + 100 - CA * compradasA
ActiveCell.Offset(pasado, 3).Font.Bold = True
Compradas = Compradas + compradasA
Call Lista(Dia, Precio, "Compradas A", compradasA, CA, pasado)
End If

If Precio <= CB And ActiveCell.Offset(pasado, 4).Font.Bold = False Then 'Se


activa la orden de Compra B
CBn = CBn + 1
Capital = Capital - 200
compradasB = Round(200 / CB, 0)
Acciones = Acciones + compradasB
Capital = Capital + 200 - CB * compradasB
ActiveCell.Offset(pasado, 4).Font.Bold = True
Compradas = Compradas + compradasB
Call Lista(Dia, Precio, "Compradas B", compradasB, CB, pasado)

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
47
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

End If

If Precio <= CC And ActiveCell.Offset(pasado, 5).Font.Bold = False Then 'Se


activa la orden de Compra C
CCn = CCn + 1
Capital = Capital - 400
compradasC = Round(400 / CC, 0)
Acciones = Acciones + compradasC
Capital = Capital + 400 - CC * compradasC
ActiveCell.Offset(pasado, 5).Font.Bold = True
Compradas = Compradas + compradasC
Call Lista(Dia, Precio, "Compradas C", compradasC, CC, pasado)
End If

If Precio >= VA And ActiveCell.Offset(pasado, 6).Font.Bold = False Then 'Se activa


la orden de Venta A
VAn = VAn + 1
vendidasA = Round(100 / POld, 0)
Capital = Capital + VA * vendidasA
Acciones = Acciones - vendidasA
ActiveCell.Offset(pasado, 6).Font.Bold = True
Vendidas = Vendidas + vendidasA
Call Lista(Dia, VA, "Vendidas A", -vendidasA, POld, pasado)

End If

If Precio >= VB And ActiveCell.Offset(pasado, 7).Font.Bold = False Then 'Se


activa la orden de Venta B
VBn = VBn + 1
vendidasB = Round(200 / POld, 0)
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
48
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Capital = Capital + VB * vendidasB


Acciones = Acciones - vendidasB
ActiveCell.Offset(pasado, 7).Font.Bold = True
Vendidas = Vendidas + vendidasB
Call Lista(Dia, VB, "Vendidas B", -vendidasB, POld, pasado)
End If

If Precio >= VC And ActiveCell.Offset(pasado, 8).Font.Bold = False Then 'Se


activa la orden de Venta C
VCn = VCn + 1
vendidasC = Round(400 / POld, 0)
Capital = Capital + VC * vendidasC
Acciones = Acciones - vendidasC
ActiveCell.Offset(pasado, 8).Font.Bold = True
Vendidas = Vendidas + vendidasC
Call Lista(Dia, VC, "Vendidas C", -vendidasC, POld, pasado)
End If

Next pasado
Patrimonio = Capital + Acciones * Precio
ActiveCell.Offset(Dia, 9).Value = Capital
ActiveCell.Offset(Dia, 10).Value = Acciones
ActiveCell.Offset(Dia, 11).Value = Patrimonio
ActiveCell.Offset(Dia, 12).Value = Compradas
ActiveCell.Offset(Dia, 13).Value = Vendidas
Next Dia

Range("E7").Value = CAn
Range("F7").Value = CBn

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
49
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("G7").Value = CCn
Range("H7").Value = VAn
Range("I7").Value = VBn
Range("J7").Value = VCn

End Sub
Sub ordenes()
Range("E8").Value = 5 / 100
Range("F8").Value = 10 / 100
Range("G8").Value = 20 / 100
Range("H8").Value = 5 / 100
Range("I8").Value = 10 / 100
Range("J8").Value = 20 / 100

Range("E8:J8").Select
Selection.Style = "Percent"
Selection.HorizontalAlignment = xlCenter

Range("E10").Value = "Compra A"


Range("F10").Value = "Compra B"
Range("G10").Value = "Compra C"
Range("H10").Value = "Venta A"
Range("I10").Value = "Venta B"
Range("J10").Value = "Venta C"

Range("E10:Q10").Select
Selection.Font.Bold = True
Selection.HorizontalAlignment = xlCenter

'******** Para copiar la frmula ************


Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
50
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Range("E11").Formula = "=+Round($D11/(1+E$8),2)"
Range("E11").Copy
Range("D11").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste

Range("E11").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("F11:G11").Select
ActiveSheet.Paste

Range("H11").Formula = "=+Round($D11*(1+H$8),2)"
Range("H11").Copy
Range("D11").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 4).Activate
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste

Range("H11").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("H11:J11").Select
ActiveSheet.Paste

Range("B11").Select
Zequeira y Asociados Grupo Actuarial 2013
gactuarialmx@gmail.com
51
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Application.CutCopyMode = False
'******** Para copiar la frmula ************
End Sub
Sub grafica()
Range("D11").Select
Range(Selection, Selection.End(xlDown)).Select
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
ActiveChart.Legend.Delete
Range("A1").Select
End Sub

Caso prctico No. 8. Registros en una base de datos

Sub Registros() 'Rellenar los registros de una Base de Datos. Hoja3


Dim Nombre As String
Dim Ciudad As String
Dim Edad As Integer
Dim fecha As Date
'Activar Hoja3
Worksheets("Hoja3").Activate
With ActiveSheet
.Range("B4").Value = "Nombre"
.Range("C4").Value = "Ciudad"
.Range("D4").Value = "Edad"
.Range("E4").Value = "Fecha"
End With

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
52
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

'Para poner negrita y centrar la cabecera


Range("B4:E4").Select
With Selection
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With

'Activar casilla B5
ActiveSheet.Range("B5").Activate
Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")
'Mientras la variable Nombre sea diferente a cadena vaca
Do While Nombre <> ""
'La estructura repetitiva for se adapta perfectamente a aquellas situaciones en que se
sabe previamente el
'nmero de veces que se ha de repetir un proceso.
'Do While..Loop es una estructura repetitiva que se repite mientras se cumpla el
criterio
'En este caso se trata de rellenar una Base de Datos. Se piden nuevos datos mientras
que el nombre no este vacio

Ciudad = InputBox("Entre la Ciudad : ", "Ciudad")


Edad = Val(InputBox("Entre la Edad : ", "Edad"))
fecha = CDate(InputBox("Entra la Fecha : ", "Fecha"))
'Copiar los datos en las casillas correspondientes
With ActiveCell
.Value = Nombre
.Offset(0, 1).Value = Ciudad
.Offset(0, 2).Value = Edad
.Offset(0, 3).Value = fecha

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
53
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

End With
'Hacer activa la celda de la fila siguiente a la actual
ActiveCell.Offset(1, 0).Activate
Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre")
Loop

'Seleccionamos la Base de Datos y la ponemos de color amarillo


Application.Goto Reference:="R4C2"
Selection.CurrentRegion.Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With

End Sub

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
54
M. EN F. RIQUET ZEQUEIRA FERNNDEZ Macros en Excel con Aplicacin a las Finanzas 2013

Zequeira y Asociados Grupo Actuarial 2013


gactuarialmx@gmail.com
55

S-ar putea să vă placă și