Option Explicit
Function
zinsberechnung(immobilienpreisString
As String
, _
eigenkapitalString
As String
, _
zinsKlasseString
As String
) _
As Double
' Programm berechnet die monatliche Belastung
' bei einzugebendem Kaufpreis und Eigenkapital
' Dateiname: zinsMitDelbstdefinierterFunktion
Dim
eigenkapital
As Double
Dim
immobilienpreis
As Double
Dim
zinsKlasse
As Integer
Dim
monatlicheBelastung
As Double
If
Not
ueberpruefe_alle_Benutzereingaben(immobilienpreisString, _
eigenkapitalString, zinsKlasseString, _
immobilienpreis, eigenkapital, _
zinsKlasse)
Then
Exit Function
If
Not
fuehre_Berechnungen_durch(eigenkapital, immobilienpreis, _
zinsKlasse, monatlicheBelastung)
Then
Exit Function
zinsberechnung = monatlicheBelastung
End Function
Private Function
berechne_Eigenkapitalquote(
ByVal
eigenkapital
As Double
, _
ByVal
immobilienpreis
As Double
) _
As Boolean
Dim
eigenkapitalquote
As Double
berechne_Eigenkapitalquote =
True
eigenkapitalquote = (eigenkapital / immobilienpreis) * 100
If
eigenkapitalquote < 30
Then
MsgBox ("Ihre Eigenkapitalquote " & eigenkapitalquote & _
"% ist zu niedrig! ")
berechne_Eigenkapitalquote =
False
Exit Function
End If
End Function
Private Function
Monatliche_Belastung_berechnen(
ByVal
immobilienpreis
As Double
, _
ByVal
eigenkapital
As Double
, _
ByVal
zins
As Double
) _
As Double
Const
tilgung
As Double
= 1
Dim
aufzunehmenderBetrag
As Double
Dim
jahresBelastung
As Double
Dim
eigenkapitalquote
As Double
aufzunehmenderBetrag = immobilienpreis - eigenkapital
jahresBelastung = (aufzunehmenderBetrag / 100) * (zins + tilgung)
Monatliche_Belastung_berechnen = jahresBelastung / 12
End Function
Private Function
ueberpruefe_alle_Benutzereingaben(
ByVal
immobilienpreisString
As String
, _
ByVal
eigenkapitalString
As String
, _
ByVal
zinsKlasseString
As String
, _
immobilienpreis
As Double
, _
eigenkapital
As Double
, _
zinsKlasse
As Integer
) _
As Boolean
ueberpruefe_alle_Benutzereingaben =
True
If
Not
wandle_in_Double_um(immobilienpreisString, immobilienpreis)
Then
ueberpruefe_alle_Benutzereingaben =
False
MsgBox ("Immobilienpreis muss eine Zahl sein!")
Exit Function
End If
If
Not
wandle_in_Double_um(eigenkapitalString, eigenkapital)
Then
ueberpruefe_alle_Benutzereingaben =
False
MsgBox ("Eigenkapital muss eine Zahl sein!")
Exit Function
End If
If
Not
wandle_in_Integer_um(zinsKlasseString, zinsKlasse)
Then
ueberpruefe_alle_Benutzereingaben =
False
MsgBox ("Zinsklasse muss eine Zahl sein!")
Exit Function
End If
End Function
Private Function
wandle_in_Double_um(
ByVal
eingabe
As String
, rueckgabe
As Double
)
As Boolean
wandle_in_Double_um =
True
If
Not
IsNumeric(eingabe)
Then
MsgBox ("Der von Ihnen eingegebene Wert muß eine Zahl sein! ")
wandle_in_Double_um =
False
Exit Function
End If
rueckgabe =
CDbl
(eingabe)
End Function
Private Function
wandle_in_Integer_um(
ByVal
eingabe
As String
, rueckgabe
As Integer
)
As Boolean
wandle_in_Integer_um =
True
If
Not
IsNumeric(eingabe)
Then
MsgBox ("Der von Ihnen eingegebene Wert muß eine Zahl sein! ")
wandle_in_Integer_um =
False
Exit Function
End If
rueckgabe =
CInt
(eingabe)
End Function
Private Function
fuehre_Berechnungen_durch(
ByVal
eigenkapital
As Double
, _
ByVal
immobilienpreis
As Double
, _
ByVal
zinsKlasse
As Integer
, _
monatlicheBelastung
As Double
) _
As Boolean
Const
zinsKlasse1
As Double
= 5.5
Const
zinsKlasse2
As Double
= 5.3
Const
zinsKlasse3
As Double
= 5.2
Const
zinsKlasse4
As Double
= 5#
Const
zinsKlasse5
As Double
= 4.5
fuehre_Berechnungen_durch =
True
If
Not
berechne_Eigenkapitalquote(eigenkapital, immobilienpreis)
Then
fuehre_Berechnungen_durch =
False
Exit Function
End If
Select Case
zinsKlasse
Case
1
monatlicheBelastung = Monatliche_Belastung_berechnen _
(immobilienpreis, eigenkapital, zinsKlasse1)
Case
2
monatlicheBelastung = Monatliche_Belastung_berechnen _
(immobilienpreis, eigenkapital, zinsKlasse2)
Case
3
monatlicheBelastung = Monatliche_Belastung_berechnen _
(immobilienpreis, eigenkapital, zinsKlasse3)
Case
4
monatlicheBelastung = Monatliche_Belastung_berechnen _
(immobilienpreis, eigenkapital, zinsKlasse4)
Case
5
monatlicheBelastung = Monatliche_Belastung_berechnen _
(immobilienpreis, eigenkapital, zinsKlasse5)
Case Else
MsgBox ("Sie haben eine falsche Zinsklasse eingegeben! " & _
"Zinsklasse muß kleiner gleich 5 sein! ")
fuehre_Berechnungen_durch =
False
Exit Function
End Select
End Function