Curso visual basic

44

description

 

Transcript of Curso visual basic

Page 1: Curso visual basic
Page 2: Curso visual basic

Programación Visual Basic en Excelaplicado a finanzas y seguros

Julián Oliver

Actuario de Seguros

Profesor de la Universidad Pontificia Comillas

Page 3: Curso visual basic

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

Page 4: Curso visual basic

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

Page 5: Curso visual basic

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

Page 6: Curso visual basic

• 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

Page 7: Curso visual basic

• 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 enAyuda de Microsoft Excel – F1

Información de programaciónReferencia a Visual Basic en Microsoft Excel

Objetos de Microsoft Excel

conceptos básicos

Page 8: Curso visual basic

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

Page 9: Curso visual basic

Definición• función

Function test(parámetro1,...)...test = ....End Function

• subrutinaSub test(parámetro1,...)...End Sub

• variableDim variable1 As tipo, variable2 As ....

Page 10: Curso visual basic

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

Page 11: Curso visual basic

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

Page 12: Curso visual basic

Modelo de objetos de Excel

Page 13: Curso visual basic

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

Page 14: Curso visual basic

Modelo de objetos de Excelapplication

representa a la instancia de Excel que se está ejecutando

• propiedadesDisplayAlertsDisplayFullScreenNames (colección de nombres de celdas)OperatingSystem, Version

• métodosCalculate, InputBox

Page 15: Curso visual basic

Modelo de objetos de Excel

workbookrepresenta el libro de cálculo

• propiedadesCount (colección)

• métodosAdd (colección)

Close

Open

Page 16: Curso visual basic

Modelo de objetos de Excelworksheet

representa la hoja de cálculo

• propiedadesCount (colección)Visible

• métodosAdd (colección)DeletePaste (objeto ActiveSheet)

Page 17: Curso visual basic

Modelo de objetos de Excelrange

representa un rango de celdas

• propiedadesCurrentRegionFormulaNumberFormatValue

• métodosCopy, Cut, SelectClearContents

Page 18: Curso visual basic

Modelo de objetos de Excelinterior

representa el interior de un rango de celdas

• propiedadesColor

fontrepresenta el tipo de letra de un rango de celdas

• propiedadesBold, Italic, Size

Page 19: Curso visual basic
Page 20: Curso visual basic

Modelo de objetos de Excel

Application

WorkSheet

Range

representación:Application.WorkSheet.Rangeobjeto.objeto.propiedadobjeto.objeto.método

el objeto Application puede ser omitido

Page 21: Curso visual basic

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.PasteEnd Sub

Page 22: Curso visual basic

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

Page 23: Curso visual basic

Modelo de objetos de Excel

ejemplo: borrar el contenido del rango B1:B7Sub test()

WorkSheets(“Hoja1”).Range(“B1:B7”).ClearContents

End Sub

ejemplo: poner formato al rango A1:A7Sub test()With WorkSheets(“Hoja1”).Range(“A1:A7”)

.Font.Color = RGB(0,0,255)

.NumberFormat = “€ #,##0.00”End WithEnd Sub

Page 24: Curso visual basic

Uso de funciones de Excelejemplo: 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

Page 25: Curso visual basic

Uso de funciones de Excel ayuda completa en

Ayuda de Microsoft Excel – F1 Información de programación

Referencia a Visual Basic en Microsoft ExcelLista de funciones de hoja de cálculo disponibles para VB

funciones habitualesAverage() , Var(), VarP()ChiInv(), Tinv()NPer(), Rate(), PMT(), PV(), FV()InputBox()

uso genéricoApplication.Función()

Page 26: Curso visual basic

Algunas funciones de Excel

• Average() - Promedio()• BetaDist() - Distr.Beta()• BetaInv() - Distr.Beta.Inv()• ChiInv() - Prueba.Chi.Inv()• Fact() - Fact()• FDist() - Distr.F()• FInv() - Distr.F.Inv()• FV() - VF()

Page 27: Curso visual basic

Algunas funciones de Excel

• GammaDist() - Distr.Gamma()

• GammaInv() - Distr.Gamma.Inv()

• HLookUp() - BuscarH()

• Irr() - Tir()

• Ln()

• LogInv() - Distr.Log.Inv()

• LogNormDist() - Distr.Log.Norm()

Page 28: Curso visual basic

Algunas funciones de Excel

• Max(), Min()• NormDist() - Distr.Norm()• NormInv() - Distr.Norm.Inv()• NormSDist(), NormSInv()• Nper()• Pmt() - Pago()• Poisson() • PV() - VA()

Page 29: Curso visual basic

Algunas funciones de Excel

• Round() - Redondear()

• RoundDown() - Redondear.Menos()

• RoundUp() - Redondear.Mas()

• StDev() - DevEst()

• StDevP() - DevEstP()

• Sum() - Suma(), SumIf() - Sumar.Si()

Page 30: Curso visual basic

Algunas funciones de Excel

• TDist() - Distr.T()

• TInv() - Distr.T.Inv()

• Trim() - Espacios()

• Var(), VarP()

• VLookUp() - BuscarV()

Page 31: Curso visual basic

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

Page 32: Curso visual basic

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

Page 33: Curso visual basic
Page 34: Curso visual basic

Operadores

. operador jerárquico

+ - / * operadores aritméticos

^ potencia

\ Mod cociente y restos enteros

& concatenación de textos

= asignación de valor

Page 35: Curso visual basic

Función de densidad de una variante Exponencial:

Function fdExponencial(x, m)Dim e As Double, lambda As Doublee = 2.71828182845905lambda = 1 / mfdExponencial = lambda * e ^ (-lambda * x)End Function

Ejemplos

1

)(,0,·)( · xExexf x

Page 36: Curso visual basic

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

Page 37: Curso visual basic

Algunas funciones de VBA

• Abs()• Array()• Choose()• Chr()• CreateObject()• Date()• DateAdd()• DateDiff()• Days()• Exp()

• FormatNumber()• FV()• IRR()• Left()• Log() [Ln]• LTrim()• Mid()• Month()• NPer()• Pmt()

• PV()• Rate()• Replace()• RGB()• Right()• Round()• RTrim()• Str()• Trim()• Year()

Page 38: Curso visual basic

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

Page 39: Curso visual basic

Sub test()Dim a As Integer, b As Integera = 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 SelectEnd IfEnd Sub

Estructura Select Case

Page 40: Curso visual basic

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

Page 41: Curso visual basic

Sub test() Worksheets("Hoja1").Range("B5").CurrentRegion.

Interior.Color = RGB(200, 200, 0)

For Each c In Worksheets("Hoja1").Range("B5").CurrentRegion.

Cells

If c.Value < 0 Then

c.Interior.Color = RGB(255, 0, 0)

End If

Next

End Sub

Bucle For - Next

Page 42: Curso visual basic

Sub test() Dim k As Integerk = 1Do 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

Page 43: Curso visual basic
Page 44: Curso visual basic