Option Explicit

Private Sub BeschriftungVerkaufsbetrag_Click()

End Sub

Private Sub SchaltflächeBerechnen_Click()
    
Dim umsatzEingabe As String
    
Dim verkaufsbetragEingabe As String
    
Dim umsatz As Double
    
Dim verkaufsbetrag As Double
    umsatzEingabe = UmsatzInput.Text
    verkaufsbetragEingabe = VerkaufsbetragInput.Text
    
If Not ueberpruefe_Benutzereingaben(umsatzEingabe, _
        verkaufsbetragEingabe, umsatz, verkaufsbetrag) 
Then Exit Sub
    ProvisionInput.Text = berechne_Provision(umsatz, verkaufsbetrag)
End Sub

Private Function ueberpruefe_Benutzereingaben(ByVal umsatzEingabe As String, _
                                                
ByVal verkaufsbetragEingabe As String, _
                                                umsatz 
As Double, _
                                                verkaufsbetrag 
As Double) _
                                                
As Boolean
    ueberpruefe_Benutzereingaben = 
True
    
If Not wandle_in_Double_um(umsatzEingabe, umsatz) Then
            ueberpruefe_Benutzereingaben = 
False
            MsgBox ("Der erste Parameter (umsatz) der Funktion ist keine Zahl!")
            
Exit Function
    
End If
    
If Not wandle_in_Double_um(verkaufsbetragEingabe, verkaufsbetrag) Then
        ueberpruefe_Benutzereingaben = 
False
        MsgBox ("Der zweite Parameter (verkaufsbetrag) der Funktion ist keine Zahl!")
        
Exit Function
    
End If
    
If verkaufsbetrag > umsatz Then
        MsgBox ("Umsatz muß gr\'a8oßer gleich Verkaufsbetrag sein!")
        ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
End Function

Private 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

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