Funciones Financieras

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