Option Explicit
Private Sub BerechnenButton_Click()
Dim immobilienpreisString As String
Dim eigenkapitalString As String
Dim zinsKlasseString As String
Dim eigenkapital As Double
Dim immobilienpreis As Double
Dim zinsKlasse As Integer
Dim monatlicheBelastung As Double
immobilienpreisString = ImmobilienpreisInput.Text
eigenkapitalString = EigenkapitalInput.Text
zinsKlasseString = ZinsklasseInput.Text
If Not ueberpruefe_alle_Benutzereingaben(immobilienpreisString, eigenkapitalString, zinsKlasseString, immobilienpreis, eigenkapital, zinsKlasse) Then Exit Sub
If Not fuehre_Berechnungen_durch(eigenkapital, immobilienpreis, zinsKlasse, monatlicheBelastung) Then Exit Sub
MonatlicheBelastungInput.Text = monatlicheBelastung
End Sub
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