VBA Tipp: Prüfen, ob Uhrzeit zwischen zwei Uhrzeitangaben (ohne Datumsanteil) liegt

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabe

Es soll festgestellt werden, ob ein Uhrzeitwert zwischen zwei Uhrzeitangaben liegt. Die Aufgabe lässt sich trivial lösen, wenn die Uhrzeitangaben nicht über Mitternacht hinaus reichen. Das ist dann der Fall, wenn die Uhrzeitangabe für das Ende des Zeitbereichs kleiner als die Uhrzeitangabe für den Anfang des Startbereichs ist.

Lösung

Folgende Funktion kann zur Lösung herangezogen werden.

Public Function IsTimeBetween(ByVal TimeOfStart As Date, _
                              ByVal TimeOfEnd As Date, _
                              ByVal TimeToCheck As Date, _
                              Optional ByVal IncludeTimeOfEnd As Boolean) As Boolean
 
   ' Alle Zeitangaben sind ohne Datumsanteil zu verwenden.
   '
   ' TimeOfStart:       Uhrzeitangabe für den Start des zu prüfenden Zeitbereichs
   ' TimeOfEnd:         Uhrzeitangabe für das Ende des Zeitbereichs. Ist dieser größer als
   '                    TimeOfStart, umspannt der Bereich die Mitternachtsgrenze
   ' TimeToCheck:       Uhrzeitwert, der geprüft werden soll
   ' IncludeTimeOfEnd:  Optionales Argument, das entweder den Endzeitpunkt als Bestandteil
   '                    oder nicht als Bestandteil des Zeitbereichs berücksichtigt.
   '
   ' Quelle: dbwiki.net oder dbwiki.de
 
   If TimeOfStart > TimeOfEnd Then
      If TimeToCheck <= TimeOfEnd Then TimeToCheck = TimeToCheck + 1
      TimeOfEnd = TimeOfEnd + 1
   End If
 
   If IncludeTimeOfEnd Then
      IsTimeBetween = (TimeToCheck >= TimeOfStart) _
                  And (TimeToCheck <= TimeOfEnd)
   Else
      IsTimeBetween = (TimeToCheck >= TimeOfStart) _
                  And (TimeToCheck < TimeOfEnd)
   End If
 
End Function

Aufruf

Beispielausgaben aus dem Direktfenster.

?IsTimeBetween(#23:00#, #06:00#, #08:00#)
False
 
?IsTimeBetween(#23:00#, #06:00#, #06:00#)
False
 
?IsTimeBetween(#23:00#, #06:00#, #06:00#, True)
True
 
?IsTimeBetween(#23:00#, #06:00#, #06:00:01#, True)
False
 
?IsTimeBetween(#23:00#, #06:00#, #22:59:59#)
False
 
?IsTimeBetween(#23:00#, #06:00#, #23:00#)
True
 
?IsTimeBetween(#06:00#, #23:00#, #08:00#)
True
 
?IsTimeBetween(#06:00#, #23:00#, #06:00#)
True
 
?IsTimeBetween(#06:00#, #23:00#, #06:00#, True)
True
 
?IsTimeBetween(#06:00#, #23:00#, #06:00:01#, True)
True
 
?IsTimeBetween(#06:00#, #23:00#, #22:59:59#)
True
 
?IsTimeBetween(#06:00#, #23:00#, #23:00#)
False
 
?IsTimeBetween(#06:00#, #23:00#, #23:00#, True)
True
 
?IsTimeBetween(#06:00#, #23:00#, #00:00#)
False
 
?IsTimeBetween(#23:00#, #06:00#, #00:00#)
True

Weblinks