' 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 StringAs 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