Funciones Financieras
26 agosto, 2011 Deja un comentario
VBA tiene una serie de funciones financieras además de las que ya tiene Excel, que nos ofrece la oportunidad de crear potentes aplicaciones para finanzas empresariales o personales.
Si desea repasar las funciones financieras de Excel aquí tiene un documento que tal vez pueda ayudarle.
Para estudiar las propias de VBA volvamos al examinador de objetos. Pulse F2 y en el cuadro de búsqueda inserte FINANCIAL. Inmediatamente pordrá ver los miembros de Financial:
Las más usuales son:
rate: tasa fija de interés.
nper:nº de períodos
pmt: pagos o depósitos periódicos.
pv:valor actual del préstamo
fv: valor futuro del préstamo o inversión.
type:tipo de pago o depósito.
El siguiente ejemplo muestra el cálculo de la cuota para un préstamo francés:
Sub otro()
Dim Fmt, FVal, PVal, APR, TotPmts, Tipopago, Pago
Const PERIODFIN = 0, PERIODINI = 1 ‘ Momento de los pagos.
Fmt = «###,###,##0.00» ‘ Define el formato.
FVal = 0 ‘ Normalmente 0 (crédito).
PVal = InputBox(«¿Cuánto dinero desea solicitar?»)
APR = InputBox(«¿Cuál es la tasa anual porcentual del crédito?»)
If APR > 1 Then APR = APR / 100 ‘ Asegura la forma correcta.
TotPmts = InputBox(«¿Cuantos pagos mensuales va a realizar?»)
Tipopago = MsgBox(«¿Realiza los pagos al final del mes?», vbYesNo)
If Tipopago = vbNo Then Tipopago = PERIODINI Else Tipopago = PERIODFIN
Pago = Pmt(APR / 12, TotPmts, -PVal, FVal, Tipopago)
MsgBox «El importe del pago será » & Format(Pago, Fmt) & » al mes.»
End Sub
En la práctica que aquí se expone, se ha realizado el cálculo de las cuotas de un préstami tipo francés mediante Excel:
En F10 se inserta la fórmula siguiente:=(Va*i/q)/(1-(1+i/q)^-(n*q))
Si qusiéramos hacerlo mediante VBA el código asociado sería el siguiente:
Sub prestamo_dos()
Dim cuantia, cuota, tipo, periodos, i, r
Const k = 0.25 / 100
tipo = (Cells(4, 4).Value) / 100
periodos = Cells(5, 4).Value
cuantia = Cells(3, 4).Value
Cells(9, 2) = Cells(4, 4) / 100
For i = 9 To 15
Cells(i, 2).Value = (Cells(i – 1, 2).Value) + k
r = Cells(i, 2).Value
Cells(i, 6) = Abs(Pmt(r, periodos, cuantia))
Cells(i, 5) = Abs(Pmt(r / 2, periodos * 2, cuantia))
Cells(i, 4) = Abs(Pmt(r / 4, periodos * 4, cuantia))
Cells(i, 3) = Abs(Pmt(r / 12, periodos * 12, cuantia))
Next
End Sub