'Festlegung
der Variablen als globale Variablen, weil
Übertragungen vereinfacht werden (?!?)
Public
fahrradtyp As
String
Public
datumanfang As
String
Public
datanfang As Date
Public
datumende As String
Public
datende As Date
Public dauer
As Integer
Public
weekend As Currency
Public sonst
As Currency
Public
fehlertyp As
Integer 'Fehlerhafte
Fahrradtypeingabe
Public
fehlerdatum As
Integer 'Fehlerhafte
Datumseingabe |
|
| Sub Eingaben() |
| 'Nach und nach die Daten
eingeben |
| |
'Fahrradtyp:
While
fehlertyp = 0 |
|
| |
|
Call
typ(fahrradtyp) |
| |
Wend |
|
| |
'Zurücksetzen
der Abbruchbedingung
fehlerdatum = 0 |
| |
'Plausibilitätsprüfung
der Datumseingaben:
While
fehlerdatum = 0 |
| |
|
Call
datanf(datumanfang)
Call
datend(datumende) |
| |
|
If
datanfang - datende > 0 Then |
| |
|
|
Call
falschesdatum2 |
| |
|
Else |
| |
|
|
'Anfangsdatum
liegt vor Enddatum
fehlerdatum = -1 |
| |
|
End
If |
| |
Wend |
| |
'Berechnung der Mietdauer
dauer = datende - datanfang + 1 'angefangene Tage werden
voll berechnet!
'Eintragen der
Mietdauer
Sheets("Rechnung").Select
Range("B10").Value = dauer |
| |
'Prüfung
der Wochentage auf Wochenende und
Eintragen in die entsprechenden Zellen
If WeekDay(datanfang,
vbMonday) > 5 Then |
| |
|
Range("D10").Value = weekend |
| |
Else |
| |
|
Range("D10").Value = sonst |
| |
End
If |
| End Sub |
|
| Sub typ(fahrradtyp
As String) |
| |
'Sicherstellen,
daß die richtige Tabelle ausgewählt
wird
Sheets("Rechnung").Select
Range("B1").Select |
| |
While fehlertyp =
0 |
| |
|
'Eingabe des Fahrradtyps
anfordern
fahrradtyp = InputBox("Gemieteter
Fahrradtyp (Kinder, Damen, Herren)") |
| |
|
'Daten zuordnen
If
fahrradtyp = "Kinder" Then |
| |
|
|
weekend = 8
sonst = 6
fehlertyp = -1 |
| |
|
ElseIf fahrradtyp
= "Damen" Then |
| |
|
|
weekend = 15
sonst = 12
fehlertyp = -1 |
| |
|
ElseIf
fahrradtyp = "Herren" Then |
| |
|
|
weekend = 18
sonst = 15
fehlertyp = -1 |
| |
|
Else |
| |
|
|
MsgBox
("Falschen Fahrradtyp
eingegeben!") |
| |
|
End
If |
| |
Wend |
| |
'Eingabewerte
in die entsprechenden Zellen eintragen
Range("B4").Value = fahrradtyp |
| End Sub |
|
| Sub
datanf(datumanfang) |
| |
'Sicherstellen, daß die
richtige Tabelle ausgewählt wird
Sheets("Rechnung").Select
Range("B1").Select |
| |
While fehlerdatum
= 0 |
| |
|
'Eingabe des Datums des
Mietanfangs
datumanfang = InputBox("Datum
Mietanfang (JJJJ-MM-TT):")
Call
datumpruefen(datumanfang) |
| |
Wend
'Eingabewert in die
entsprechende Zelle eintragen
Range("B7").Value =
datumanfang
'Eingabewert
konvertieren
datanfang = CDate(datumanfang)
'Abbruchbedinung
für Eingabe zurücksetzen
fehlerdatum = 0 |
| End Sub |
|
| Sub
datend(datumende) |
| |
'Sicherstellen, daß die
richtige Tabelle ausgewählt wird
Sheets("Rechnung").Select
Range("B1").Select |
| |
While
fehlerdatum = 0 |
| |
|
'Eingabe
des Datums des Mietendes
datumende = InputBox("Datum
Mietende (JJJJ-MM-TT):")
Call
datumpruefen(datumende) |
| |
Wend
'Eingabewert in die
entsprechende Zelle eintragen
Range("D7").Value = datumende
'Eingabewert
konvertieren
datende = CDate(datumende)
'Abbruchbedinung
für Eingabe zurücksetzen
fehlerdatum = 0 |
| End Sub |
|
| Sub
falschesdatum() |
| |
MsgBox
("Falsches Datumsformat
eingegeben!") |
| End Sub |
|
| Sub
datumpruefen(datum) |
| |
If Len(datum)
<> 10 Then |
| |
|
Call falschesdatum |
| |
ElseIf Mid(datum, 5, 1)
<> "-" Then |
| |
|
Call falschesdatum |
| |
ElseIf Mid(datum, 8, 1)
<> "-" Then |
| |
|
Call falschesdatum |
| |
ElseIf CInt(Mid(datum, 6, 2))
> 12 Then |
| |
|
Call falschesdatum |
| |
ElseIf CInt(Right(datum, 2))
> 31 Then |
| |
|
Call falschesdatum |
| |
ElseIf (0 = Left(datum, 4) Mod 4) And Mid(datum, 6, 2) =
"02" And
CInt(Right(datum, 2))
> 29 Then |
| |
|
Call falschesdatum |
| |
ElseIf Mid(datum, 6, 2) =
"02" And
CInt(Right(datum, 2))
> 28 Then |
| |
|
Call falschesdatum |
| |
ElseIf Mid(datum, 6, 2) =
"04" Or
Mid(datum,
6, 2) = "06" Or Mid(datum, 6, 2) =
"09" Or
Mid(datum,
6, 2) = "11" And CInt(Right(datum, 2))
> 30 Then |
| |
|
Call falschesdatum |
| |
Else |
| |
|
'Datum korrekt eingegeben
fehlerdatum = -1 |
| |
End If |
| End Sub |
|
| Sub
falschesdatum2() |
| |
MsgBox
("Endedatum vor Anfangsdatum!") |
| End Sub |