Option Explicit
Function
provisionMitBenutzerdefinierterFunktion(umsatzEingabe
As String
, verkaufsbetragEingabe
As String
)
' Dateiname: provisionMitBenutzerdefinierterFunktion
Dim
umsatz
As Double
Dim
verkaufsbetrag
As Double
Dim
eingabe
As String
If
Not
ueberpruefe_Benutzereingaben(umsatzEingabe, _
verkaufsbetragEingabe, umsatz, verkaufsbetrag)
Then
Exit Function
provisionMitBenutzerdefinierterFunktion = berechne_Provision(umsatz, verkaufsbetrag)
End Function
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