' Ausführliche Programmierung, man kann die Prüfung von Leerung und Komposthaufen auch
' ins Hauptprogramm schreiben.
Option Explicit
Function wandle_in_int_um(ByVal eingabe As String) As Integer
If Not IsNumeric(eingabe) Then
Err.Raise 5000, "wandle_in_int_um", "Bitte nur Zahlen eingeben"
End If
wandle_in_int_um = CInt(eingabe)
End Function
Sub pruefeLeerung(Leerung)
If Leerung <> 14 And Leerung <> 28 Then
' Benutzerdefinierte Fehlermeldung
Err.Raise 5000, "pruefeLeerung", "Bitte entweder 14 oder 28 eingeben"
End If
End Sub
Sub pruefeKompost(Komposthaufen)
If Komposthaufen <> "n" And Komposthaufen <> "j" Then
' MsgBox und Beenden der Prozedur
Err.Raise 5001, "pruefeKompost", "Sie dürfen bei Komposthaufen nur ein j oder ein n eingeben"
End If
End Sub
Private Sub StartButton_Click()
On Error GoTo Fehlerbehandlung
Dim AnzahlPersonen As Integer
Dim Leerung As Integer
Dim Komposthaufen As String
Dim Muellfaktor As Integer
Dim Volumen As Integer
Const RestMuell_30 As Integer = 30
Const RestMuell_20 As Integer = 20
Const RestMuell_15 As Integer = 15
Const Gebuehr As Double = 26
' Aufruf Funktion wandle_in_int um mit Parameter
AnzahlPersonen = wandle_in_int_um(AnzahlPersonenInput.Text)
Leerung = wandle_in_int_um(LeerungInput.Text)
Komposthaufen = KomposthaufenInput.Text
pruefeLeerung Leerung 'aufruf der Prozedur prufeLeerung mit Parameter
pruefeKompost Komposthaufen 'aufruf der Prozedur pruefeKompost mit Parameter
If Leerung = 28 And (Komposthaufen = "n") Then
MsgBox ("Vierwöchige Leerung bringt nur in Verbindung mit einem Komposthaufen finanzielle Vorteile")
Muellfaktor = RestMuell_30
Volumen = AnzahlPersonen * Muellfaktor
ElseIf Leerung = 28 And (Komposthaufen = "j") Then
Muellfaktor = RestMuell_15
Volumen = AnzahlPersonen * Muellfaktor
ElseIf Komposthaufen = "j" Then
Muellfaktor = RestMuell_20
Volumen = AnzahlPersonen * Muellfaktor
Else
Muellfaktor = RestMuell_30
Volumen = AnzahlPersonen * Muellfaktor
End If
VolumenOutput.Text = Volumen
Volumen = Fix(Volumen / 10) 'Fix = Zahlen nach dem Komma abschneiden
GebuehrenOutput = Volumen * Gebuehr
Exit Sub
Fehlerbehandlung:
MsgBox "Fehler: " & Err.Description
End Sub