Attribute VB_Name = "Modul1" Option Explicit Sub preismodell() Dim eingabe As String Dim anzahlErwachsener As Integer Dim anzahlKinder As Integer Dim anzahlHaustiere As Integer Dim anreisetag As Integer Dim anreisemonat As Integer Dim reisedauer As Integer Dim preis As Double eingabe = InputBox("Bitte geben Sie die Anzahl Erwachsener ein!") Do While eingabe <> "beenden" If Not wandle_in_integer_um(eingabe, anzahlErwachsener) Then Exit Sub eingabe = InputBox("Bitte geben Sie die Anzahl Kinder ein!") If Not wandle_in_integer_um(eingabe, anzahlKinder) Then Exit Sub eingabe = InputBox("Bitte geben Sie die Anzahl Haustiere ein!") If Not wandle_in_integer_um(eingabe, anzahlHaustiere) Then Exit Sub If Not haustierkontrolle(anzahlHaustiere) Then Exit Sub eingabe = InputBox("Bitte geben Sie nun den Anreisetag ein!") If Not wandle_in_integer_um(eingabe, anreisetag) Then Exit Sub eingabe = InputBox("Bitte geben Sie nun den Anreisemonat ein!") If Not wandle_in_integer_um(eingabe, anreisemonat) Then Exit Sub If Not datumkontrolle(anreisetag, anreisemonat) Then Exit Sub eingabe = InputBox("Bitte geben Sie nun die reisedauer ein!") If Not wandle_in_integer_um(eingabe, reisedauer) Then Exit Sub Call plausikontrolle(anzahlErwachsener, anzahlKinder) preis = berechnePreis(anzahlErwachsener, anzahlKinder, anzahlHaustiere, _ anreisetag, anreisemonat, reisedauer) MsgBox ("Sie bezahlen " & preis & " € für Ihren Urlaub") eingabe = InputBox("Bitte geben Sie die Anzahl Erwachsener ein!") Loop End Sub Function berechnePreis(anzahlErwachsener As Integer, anzahlKinder As Integer, _ anzahlHaustiere As Integer, anreisetag As Integer, _ anreisemont As Integer, reisedauer As Integer) As Double Const grundpreis As Double = 50 Const kinderrabatt As Double = 0.5 Const vierzehntageRabatt As Double = 0.8 Const vierzehntageRabattJuli As Double = 0.9 Const haustierpreis As Double = 5 Dim preis As Double preis = reisedauer * (anzahlErwachsener * grundpreis + anzahlKinder * (grundpreis * kinderrabatt) + anzahlHaustiere * haustierpreis) If reisedauer >= 14 Then If (anreisemont = 7) And (anreisetag < 21) Then preis = preis * vierzehntageRabattJuli Else preis = preis * vierzehntageRabatt End If End If berechnePreis = preis End Function Function wandle_in_integer_um(eingabe As String, rueckgabe As Integer) As Boolean wandle_in_integer_um = True If Not IsNumeric(eingabe) Then MsgBox ("Die Eingabe ist nur bei einer Zahl sinnvoll!") wandle_in_integer_um = False Exit Function End If rueckgabe = CInt(eingabe) End Function Function haustierkontrolle(anzahlHaustiere As Integer) As Boolean Const maximalAnzahlHaustiere As Integer = 2 haustierkontrolle = True If anzahlHaustiere > maximalAnzahlHaustiere Then MsgBox ("Es sind nur 2 Haustiere erlaubt!") haustierkontrolle = False Exit Function End If End Function Function datumkontrolle(anreisetag, anreisemonat) As Boolean datumkontrolle = True If (anreisetag <= 0) Or (anreisemonat <= 0) Then MsgBox ("Anreisetag und Anreisemonat müssen positive Zahlen sein!") datumkontrolle = False Exit Function End If If (anreisemonat = 1) Or (anreisemonat = 3) Or (anreisemonat = 5) Or (anreisemonat = 7) Or (anreisemonat = 7) _ Or (anreisemonat = 8) Or (anreisemonat = 10) Or (anreisemonat = 12) Then If anreisetag > 31 Then MsgBox ("Anreisetag muss kleiner 31 sein!") datumkontrolle = False Exit Function End If ElseIf (anreisemonat = 4) Or (anreisemonat = 6) Or (anreisemonat = 9) Or (anreisemonat = 11) Then If anreisetag > 30 Then MsgBox ("Anreisetag muss kleiner 30 sein!") datumkontrolle = False Exit Function End If ElseIf (anreisemonat = 2) Then If anreisetag > 28 Then MsgBox ("Anreisetag muss kleiner 28 sein!") datumkontrolle = False Exit Function End If Else MsgBox ("Anreisemonat muss kleiner 13 sein!") datumkontrolle = False Exit Function End If End Function Sub plausikontrolle(anzahlErwachsener As Integer, anzahlKinder As Integer) If (anzahlErwachsener + anzahlKinder >= 20) Then MsgBox ("verdaächtig viele Reisende!") End If End Sub