Option Explicit
Sub zinsberechnung()
    
' Programm berechnet die monatliche Belastung
    ' bei einzugebendem Kaufpreis und Eigenkapital
    ' Dateiname: funktionen8
    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
    Gib_Programmbeschreibung_aus
    Lies_den_Immobilienpreis_ein eingabe
    
Do While eingabe <> "beenden"
        Lies_restliche_und_ueberpruefe_alle_Benutzereingaben eingabe, _
                                                             immobilienpreis, _
                                                             eigenkapital, _
                                                             zinsKlasse, _
                                                             fehler
        
If fehler Then
            
Exit Sub
        
End If
        fuehre_Berechnungen_durch eigenkapital, immobilienpreis, _
                                    zinsKlasse, monatlicheBelastung, fehler
        
If fehler Then
            
Exit Sub
        
End If
        
' Gib Ergebnisse aus
        MsgBox ("Ihre monatliche Belastung ist: " & monatlicheBelastung & " DM")
        Lies_den_Immobilienpreis_ein eingabe
    
Loop
End Sub

Sub berechne_Eigenkapitalquote(ByVal eigenkapital As Double, _
                                
ByVal immobilienpreis As Double, _
                                fehler 
As Boolean)
    
Dim eigenkapitalquote As Double
    fehler = 
False
    eigenkapitalquote = (eigenkapital / immobilienpreis) * 100
    
If eigenkapitalquote < 30 Then
        MsgBox ("Ihre Eigenkapitalquote " & eigenkapitalquote & _
                "% ist zu niedrig!")
        fehler = 
True
        
Exit Sub
    
End If
End Sub

Sub Monatliche_Belastung_berechnen(ByVal immobilienpreis As Double, _
                                    
ByVal eigenkapital As Double, _
                                    
ByVal zinsKlasse As Integer, _
                                    monatlicheBelastung 
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)
    monatlicheBelastung = jahresBelastung / 12
End Sub

Sub Gib_Programmbeschreibung_aus()
    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")
End Sub

Sub Lies_den_Immobilienpreis_ein(immobilienpreis As String)
    immobilienpreis = InputBox("Geben Sie jetzt den Kaufpreis ein!")
End Sub

Sub Lies_restliche_und_ueberpruefe_alle_Benutzereingaben(ByVal eingabe As String, _
                                                        immobilienpreis 
As Double, _
                                                        eigenkapital 
As Double, _
                                                        zinsKlasse 
As Integer, _
                                                        fehler 
As Boolean)
    fehler = 
False
    
If Not IsNumeric(eingabe) Then
        MsgBox ("Kaufpreis muß eine Zahl sein!")
        fehler = 
True
        
Exit Sub
    
End If
    immobilienpreis = 
CDbl(eingabe)
    eingabe = InputBox("Geben Sie nun ihr Eigenkapital ein!")
    
If Not IsNumeric(eingabe) Then
        MsgBox ("Eigenkapital muß eine Zahl sein!")
        fehler = 
True
        
Exit Sub
    
End If
    eigenkapital = 
CDbl(eingabe)
    eingabe = InputBox("Geben Sie nun ihre Zinsklasse ein!")
    
If Not IsNumeric(eingabe) Then
        MsgBox ("Zinsklasse muß eine Zahl sein!")
        fehler = 
True
        
Exit Sub
    
End If
    zinsKlasse = 
CInt(eingabe)
End Sub

Sub fuehre_Berechnungen_durch(ByVal eigenkapital As Double, _
                                
ByVal immobilienpreis As Double, _
                                
ByVal zinsKlasse As Integer, _
                                monatlicheBelastung 
As Double, _
                                fehler 
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
    fehler = 
False
    berechne_Eigenkapitalquote eigenkapital, immobilienpreis, fehler
    
If fehler Then
        
Exit Sub
    
End If
    
Select Case zinsKlasse
        
Case 1
            Monatliche_Belastung_berechnen immobilienpreis, _
                                            eigenkapital, zinsKlasse1, monatlicheBelastung
        
Case 2
            Monatliche_Belastung_berechnen immobilienpreis, _
                                            eigenkapital, zinsKlasse2, monatlicheBelastung
        
Case 3
            Monatliche_Belastung_berechnen immobilienpreis, _
                                            eigenkapital, zinsKlasse3, monatlicheBelastung
        
Case 4
            Monatliche_Belastung_berechnen immobilienpreis, _
                                            eigenkapital, zinsKlasse4, monatlicheBelastung
        
Case 5
            Monatliche_Belastung_berechnen immobilienpreis, _
                                            eigenkapital, zinsKlasse5, monatlicheBelastung
        
Case Else
            MsgBox ("Sie haben eine falsche Zinsklasse eingegeben! " & _
                    "Zinsklasse muß kleiner gleich 5 sein!")
            fehler = 
True
            
Exit Sub
    
End Select
End Sub