• Excel & VBA
Hypotheek berekenen (Visual Basic programma)

“Lening” is nog een oud programmaatje, dat ik ooit gemaakt heb in VB5. Hiermee kun je volledige overzichten maken van bijvoorbeeld een hypotheeklening. Zowel lineaire leningen als annuïteiten kunnen worden berekend.

Scherm

Het programma bestaat uit een klein formulier, waarop je de leningsom, de looptijd van de lening en het rentepercentage kunt invullen, eventueel kun je de ingangsdatum van de lening invullen. In dat geval worden op het overzicht ook de data vermeld.

lening

Overzicht

Als je op “berekenen” klikt, krijg je een compleet overzicht van alle termijnen van de lening, waaronder de maandelijkse lasten, de rente en schuldrest per termijn.

lening-overzicht

Excel export

Het overzicht kun je ook naar excel exporteren. Voor een voorbeeld van een overzicht in Excel: lening-overzicht.xls

Code berekening

Het handmatig berekenen van annuïtenleningen is vaak een bewerkelijk karwijtje, terwijl het coderen van de berekening slechts enkele tientallen regels code bevat. Dit is de VB code waar de feitelijke berekening wordt uitgevoerd.

 Public Function gfvIntrestAnnuiteit(Optional ByVal evvKapitaal As Variant, _
                        Optional ByVal evvAnnuiteit As Variant, _
                        Optional ByVal evvPerioden As Variant, _
                        Optional ByVal evvPercentage As Variant) As Variant
'-------------------------------------------
'De formule : K = Ann / a(n,p)
'pre : alle optionele invoerparam, behalve de onbekende, zijn bekend;
'      de functie 'gfvGetValueIntrestTables' moet kunnen worden aangeroepen;
'post: de functie krijgt de waarde van de onbekende.
'-------------------------------------------
    If IsMissing(evvKapitaal) Then 'K = Ann / a(n,p)
        gfvIntrestAnnuiteit = CDec(evvAnnuiteit / gfvGetValueIntrestTables(evvPercentage, evvPerioden, True, True))
    ElseIf IsMissing(evvAnnuiteit) Then 'Ann = K / a(n,p)
        gfvIntrestAnnuiteit = CDec(evvKapitaal / gfvGetValueIntrestTables(evvPercentage, evvPerioden, True, True))
    End If
End Function

Private Function gfvGetValueIntrestTables(ByVal evvPercentage As Variant, _
                    ByVal evvPerioden As Variant, _
                    Optional ByVal evvA As Boolean = False, _
                    Optional ByVal evvRecursie As Boolean = False) As Variant
'-------------------------------------------
'pre : de invoerparam moeten bekend zijn;
'post: de functie krijgt de waarde van S(n,p), A(n,p), s(n,p) of a(n,p).
'mogelijke fout : err.number = 6 -> overflow
'-------------------------------------------
Dim lvvVar As Variant
    lvvVar = CDec((1 + (evvPercentage / 100)) ^ evvPerioden) '= S(n,p)
    If evvA Then lvvVar = 1 / lvvVar '= A(n,p)
    If evvRecursie And Not (evvPerioden = 0) Then 'beperking voor recursie
        gfvGetValueIntrestTables = CDec(lvvVar + gfvGetValueIntrestTables(evvPercentage, evvPerioden - 1, evvA, evvRecursie)) '= s(n,p) of a(n,p)
    ElseIf evvRecursie = False Then
        gfvGetValueIntrestTables = CDec(lvvVar)
    End If
End Function

Downloaden

Licentie

Code valt onder het publieke domein.

Gerelateerde artikelen

Reacties (1)

  • MUCHAS GRACIAS POR TODO SON DE MUCHA AYUDA

Stuur je reactie

  • RSS
  • LinkedIn
  • Twitter