Option Explicit

Sub provisionMitFunktionen()
    
' Programm berechnet Provisionen abhängig vom Umsatz
    ' Dateiname: provisionMitFunktionen
    Dim umsatz As Double
    
Dim verkaufsbetrag As Double
    
Dim auszuzahlendeProvision As Double
    
Dim eingabe As String
    
' Gib Programmbeschreibung aus
    MsgBox ("Geben Sie Umsatz und Verkaufsbetrag ein!" _
            & Chr$(13) & "Das Programm berechnet die" _
            & " Provision des Vermittlers! Sie beenden das" _
            & " Programm durch die Eingabe von: beenden!")
    
' Lies Umsatz ein
    eingabe = InputBox("Geben Sie nun den Umsatz des Kunden ein!")
    
Do While eingabe <> "beenden"
        
If Not Lies_und_ueberpruefe_Benutzereingaben(eingabe, _
                                                    umsatz, _
                                                    verkaufsbetrag) 
Then Exit Sub
        auszuzahlendeProvision = berechne_Provision(umsatz, verkaufsbetrag)
        
' Gib das Ergebnis aus
        MsgBox ("Die Provision für dieses Geschäft ist: " _
                & auszuzahlendeProvision & " DM")
        
' Lies Umsatz ein
        eingabe = InputBox("Geben Sie nun den Umsatz des Kunden ein!")
    
Loop
End Sub

Function Lies_und_ueberpruefe_Benutzereingaben(ByVal eingabe As String, umsatz As Double, _
                                                verkaufsbetrag 
As DoubleAs Boolean
    Lies_und_ueberpruefe_Benutzereingaben = 
True
    
If Not wandle_in_Double_um(eingabe, umsatz) Then
        Lies_und_ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
    eingabe = InputBox("Geben Sie nun den Verkaufsbetrag ein!")
    
If Not wandle_in_Double_um(eingabe, verkaufsbetrag) Then
        Lies_und_ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
    
If verkaufsbetrag > umsatz Then
        MsgBox ("Umsatz muß größer gleich Verkaufsbetrag sein!")
        Lies_und_ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
End Function

Function berechne_Provision(ByVal umsatz As Double, _
                            
ByVal verkaufsbetrag As Double) _
                            
As Double
    
Dim provisionInProzent As Double
    
' Umsatzgrenzen sind DM-Betraege
    Const umsatzGrenze1 As Double = 100000
    
Const umsatzGrenze2 As Double = 500000
    
Const umsatzGrenze3 As Double = 1000000
    
' Provisionen in Prozent
    Const provisionUmsatzGrenze1 As Double = 5
    
Const provisionUmsatzGrenze2 As Double = 10
    
Const provisionUmsatzGrenze3 As Double = 20
    
' Bestimme Provision
    If umsatz >= umsatzGrenze3 Then
            provisionInProzent = provisionUmsatzGrenze3
        
ElseIf umsatz >= umsatzGrenze2 Then
            provisionInProzent = provisionUmsatzGrenze2
        
ElseIf umsatz >= umsatzGrenze1 Then
            provisionInProzent = provisionUmsatzGrenze1
        
Else
            provisionInProzent = 0
    
End If
    
' Berechne die Provision
    berechne_Provision = (verkaufsbetrag * provisionInProzent) / 100
End Function