2. Programación Visual Basic en Excel
aplicado a finanzas y seguros
Julián Oliver
Actuario de Seguros
Profesor de la Universidad Pontificia Comillas
3. programación VB en Excel
• introducción a la programación
• Conceptos básicos
• Definición de funciones, procedimientos y
variables
• Modelo de objetos
• Uso de funciones de la hoja de cálculo
• ejemplos básicos
4. programación VB en Excel
• referencia básica de VB
• Operadores y funciones de VB
• Estructura condicional: If-Then-Else
• Estructura condicional: Select Case
• Bucle con contador: For Each-Next
• Bucle con condición: Do While y Do Until
• ejemplos básicos
5. programación VB en Excel
• ejemplos financieros y de seguros de vida
• Amortización de préstamos
– referencias dinámicas, funciones VB y bucles
• Tablas PERM/F 2000
– funciones VB
• ejemplos estadísticos y de seguros generales
• Cálculo de probabilidades
• Ajuste de distribuciones
– toma de decisiones
– bucles y referencias dinámicas
6. • actividad habitual: cálculo de
• bases técnicas y operaciones financieras
• provisiones y análisis de rentabilidad técnica
• necesidades:
• automatización y precisión de los cálculos
• posibilidades:
• lenguaje de programación para usuarios
• potente hoja de cálculo
introducción
7. • programación orientada a objetos
• objetos, clases y colecciones
• propiedades
• métodos
• principales objetos en Excel
• Application: la aplicación Excel en su conjunto
• WorkSheet: la hoja de cálculo
• Range: el rango de celdas
• ayuda completa en
Ayuda de Microsoft Excel – F1
Información de programación
Referencia a Visual Basic en Microsoft Excel
Objetos de Microsoft Excel
conceptos básicos
8. Definición
• función
conjunto de instrucciones de VB que sirve
para hacer cálculos y devolver un valor
• subrutina
conjunto de instrucciones de VB que sirve
para alterar propiedades de objetos
• variable
área de memoria que sirve para almacenar
datos
10. Tipos de variable más usados
• contadores, edades y duraciones ....
Integer
• enteros que vayan a ser usados en productos
Long
• tipos de interés, frecuencias relativas
Single
• capitales, primas, tasas, símbolos de conmut.
Double
11. Definición de variables
• el nombre de variable debe
• empezar por una letra
• estar compuesto de letras y números
• tener una longitud inferior a 255 caracteres
• no coincidir con palabras reservadas de VB
• ejemplo:
Dim x as Integer, prima as Double
13. Modelo de objetos
todo elemento que deba ser tratado se
representa por un objeto que tiene
propiedades y métodos:
las propiedades representan las
características o variables que
configuran el objeto
los métodos representan los
mecanismos que permiten manipular el
objeto
14. Modelo de objetos de Excel
application
representa a la instancia de Excel que se
está ejecutando
• propiedades
DisplayAlerts
DisplayFullScreen
Names (colección de nombres de celdas)
OperatingSystem, Version
• métodos
Calculate, InputBox
15. Modelo de objetos de Excel
workbook
representa el libro de cálculo
• propiedades
Count (colección)
• métodos
Add (colección)
Close
Open
16. Modelo de objetos de Excel
worksheet
representa la hoja de cálculo
• propiedades
Count (colección)
Visible
• métodos
Add (colección)
Delete
Paste (objeto ActiveSheet)
17. Modelo de objetos de Excel
range
representa un rango de celdas
• propiedades
CurrentRegion
Formula
NumberFormat
Value
• métodos
Copy, Cut, Select
ClearContents
18. Modelo de objetos de Excel
interior
representa el interior de un rango de celdas
• propiedades
Color
font
representa el tipo de letra de un rango de
celdas
• propiedades
Bold, Italic, Size
19.
20. Modelo de objetos de Excel
Application
WorkSheet
Range
representación:
Application.WorkSheet.Range
objeto.objeto.propiedad
objeto.objeto.método
el objeto Application puede ser omitido
21. Modelo de objetos de Excel
ejemplo: copiar en la hoja 1 el contenido de las celdas
C2 a C5 en las celdas B4 a B7
Sub test()
Worksheets("Hoja1").Range("C3:C5").Copy
Worksheets("Hoja1").Range(“B4").Select
ActiveSheet.Paste
End Sub
22. Modelo de objetos de Excel
ejemplo: ocultar la hoja 1
Sub test()
WorkSheets(“Hoja1”).Visible = False
End Sub
ejemplo: mostrar la hoja 1
Sub test()
WorkSheets(“Hoja1”).Visible = True
End Sub
23. Modelo de objetos de Excel
ejemplo: borrar el contenido del rango B1:B7
Sub test()
WorkSheets(“Hoja1”).Range(“B1:B7”).
ClearContents
End Sub
ejemplo: poner formato al rango A1:A7
Sub test()
With WorkSheets(“Hoja1”).Range(“A1:A7”)
.Font.Color = RGB(0,0,255)
.NumberFormat = “€ #,##0.00”
End With
End Sub
24. Uso de funciones de Excel
ejemplo: encontrar el valor asociado a una letra
En Hoja1, rango E5:F7 completar
En la celda A1 completar =test(A2)
Function test()
Application.VLookup(letra,
Application.Worksheets("Hoja1").
Range("E5:F7"), 2)
End Function
A 2
B 5
C 3
25. Uso de funciones de Excel
ayuda completa en
Ayuda de Microsoft Excel – F1
Información de programación
Referencia a Visual Basic en Microsoft Excel
Lista de funciones de hoja de cálculo disponibles para VB
funciones habituales
Average() , Var(), VarP()
ChiInv(), Tinv()
NPer(), Rate(), PMT(), PV(), FV()
InputBox()
uso genérico
Application.Función()
31. Sub test()
Dim prob as Single, gl as Integer
With WorkSheets(“Hoja1”)
prob = .Range(“A1”)
gl = .Range(“A2”)
.Range(“B3”) = Application.ChiInv(prob,gl)
End With
End Sub
Ejemplos
32. Sub test()
Dim a as Integer, b as Integer, c as Integer
a = Application.InputBox(Type:=1,
Prompt:=“Introduzca la edad”)
b = MsgBox(“valor de a:” & a, vbOkCancel
+ vbInformation)
c = MsgBox(“valor de b:” & b, vbInformation)
End Sub
Ejemplos
33.
34. Operadores
. operador jerárquico
+ - / * operadores aritméticos
^ potencia
Mod cociente y restos enteros
& concatenación de textos
= asignación de valor
35. Función de densidad de una variante Exponencial:
Function fdExponencial(x, m)
Dim e As Double, lambda As Double
e = 2.71828182845905
lambda = 1 / m
fdExponencial = lambda * e ^ (-lambda * x)
End Function
Ejemplos
λ
λ λ 1
)(,0,·)( ·
=>= −
xExexf x
36. Asignar a la celda C5 la suma de las celdas C3 y C4:
Sub test()
Dim Hj As String, Rg As String
Dim celda1 As String, celda2 As String
Hj = "Hoja2"
Rg = "C5"
celda1 = "C3"
celda2 = "C4"
Worksheets(Hj).Range(Rg).Formula = "=SUM(" & celda1 &
":" & celda2 & ")"
End Sub
Ejemplos
38. Sub test()
Dim a As Integer, b As Integer
a = Application.InputBox(Prompt:="Introduzca la
edad", Type:=1)
If a = False Then ' pulsó Cancelar
b = MsgBox("No introdujo edad", vbOKOnly,
"Resultado")
Else ' pulsó Ok
b = MsgBox("La edad introducida es " & a)
End If
End Sub
Estructura If – End If
39. Sub test()
Dim a As Integer, b As Integer
a = Application.InputBox(Prompt:="Introduzca la
edad", Type:=1)
If Not (a = False) Then ' pulsó Ok
Select Case a
Case Is < 14
b = MsgBox("No es asegurable")
Case 14 To 64
b = MsgBox("Es asegurable")
Case 65
b = MsgBox("Consultar a la dirección")
Case Else
b = MsgBox("No cumple requisitos")
End Select
End If
End Sub
Estructura Select Case
40. Sub test()
Dim fila As Integer
Worksheets("Hoja1").Range("B5").CurrentRegion.
Interior.Color = RGB(200, 200, 0)
For fila = 5 To 10 Step 1
Worksheets("Hoja1").Range("B" & fila).Value =
Int((10 * Rnd) - 5)
Next
For fila = 5 To 10 Step 1
Worksheets("Hoja1").Range("C" & fila).Value =
Int((10 * Rnd) - 5)
Next
End Sub
Bucle For - Next
42. Sub test()
Dim k As Integer
k = 1
Do Until Worksheets("Hoja3").Range("B" & k).Value =
""
If Worksheets("Hoja3").Range("B" & k).Value < 0
Then
Worksheets("Hoja3").Range("B“ & k).Interior.
Color = RGB(128, 128, 255)
End If
k = k + 1
Loop
End Sub
Bucle Do Until - Loop