Option Explicit
Sub zinsberechnung()
' Programm berechnet die monatliche Belastung
' bei einzugebendem Kaufpreis und Eigenkapital
' Dateiname: funktionen13
Dim eingabe As String
Dim eigenkapital As Double
Dim immobilienpreis As Double
Dim aufzunehmenderBetrag As Double
Dim monatlicheBelastung As Double
Dim zinsKlasse As Integer
Dim fehler As Boolean
MsgBox ("Bitte geben Sie Ihr Eigenkapital und den " _
& Chr$(13) & "Kaufpreis ein, sowie die Ihnen zugeteilte" _
& Chr$(13) & " Zinsklasse ein! Sie beenden das Programm," _
& Chr$(13) & " indem Sie beenden als Kaufpreis angeben")
eingabe = InputBox("Geben Sie jetzt den Kaufpreis ein! ")
Do While eingabe <> "beenden"
If Not Lies_restliche_und_ueberpruefe_alle_Benutzereingaben(eingabe, _
immobilienpreis, _
eigenkapital, _
zinsKlasse) Then Exit Sub
If Not fuehre_Berechnungen_durch(eigenkapital, _
immobilienpreis, _
zinsKlasse, _
monatlicheBelastung) Then Exit Sub
' Gib Ergebnisse aus
MsgBox ("Ihre monatliche Belastung ist: " & monatlicheBelastung & " DM")
eingabe = InputBox("Geben Sie jetzt den Kaufpreis ein! ")
Loop
End Sub
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
Function Monatliche_Belastung_berechnen(ByVal immobilienpreis As Double, _
ByVal eigenkapital As Double, _
ByVal zinsKlasse As Integer) 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) * (zinsKlasse + tilgung)
Monatliche_Belastung_berechnen = jahresBelastung / 12
End Function
Function Lies_restliche_und_ueberpruefe_alle_Benutzereingaben(ByVal eingabe As String, _
immobilienpreis As Double, _
eigenkapital As Double, _
zinsKlasse As Integer) As Boolean
Lies_restliche_und_ueberpruefe_alle_Benutzereingaben = True
If Not wandle_in_Double_um(eingabe, immobilienpreis) Then
Lies_restliche_und_ueberpruefe_alle_Benutzereingaben = False
Exit Function
End If
eingabe = InputBox("Geben Sie nun ihr Eigenkapital ein! ")
If Not wandle_in_Double_um(eingabe, eigenkapital) Then
Lies_restliche_und_ueberpruefe_alle_Benutzereingaben = False
Exit Function
End If
eingabe = InputBox("Geben Sie nun ihre Zinsklasse ein! ")
If Not wandle_in_Integer_um(eingabe, zinsKlasse) Then
Lies_restliche_und_ueberpruefe_alle_Benutzereingaben = False
Exit Function
End If
End Function
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
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
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, zinsKlasse4)
Case 2
monatlicheBelastung = Monatliche_Belastung_berechnen(immobilienpreis, eigenkapital, zinsKlasse4)
Case 3
monatlicheBelastung = Monatliche_Belastung_berechnen(immobilienpreis, eigenkapital, zinsKlasse4)
Case 4
monatlicheBelastung = Monatliche_Belastung_berechnen(immobilienpreis, eigenkapital, zinsKlasse4)
Case 5
monatlicheBelastung = Monatliche_Belastung_berechnen(immobilienpreis, eigenkapital, zinsKlasse4)
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