Access: Zeitangaben auf 5, 10, 15, 30 Minuten runden

von Thomas Tai

 am 21.01.2010

Möglich mit den Versionen: Access 2007, 2003, 2002/XP, 2000 und 97

In Ihren Datenbanken zur Verwaltung von Terminen oder Tätigkeiten gibt es in der Regel ein Feld "Startzeit" (Datentyp "Datum/Zeit", Format "24 Stunden"), für das Sie die aktuelle Zeit als Vorgabe über die Eigenschaft "Standardwert" mit der Formel "=Format(Jetzt(), "hh:nn") eingestellt haben. Beim Anlegen neuer Datensätze stehen in diesem Feld nun meistens Zeitangaben wie "08:39" oder "14:07". Praktischer für Übersichten und Abrechnungen wäre es, wenn die Zeitangaben automatisch im 15-Minuten-Intervall gerundet werden, so dass nur Zeiten wie "14:00", "14:15", "14:30", "14:45" vorgegeben sind.

Eine solche Funktionalität lässt sich recht einfach mit Hilfe einer kleinen VBA-Funktion "ZeitRunden()" realisieren:

Function ZeitRunden(varZeit, varRundenAuf) As Date
  Dim hh As Integer, nn As Integer
  Dim strZeit As String

  strZeit = Format$(varZeit, "hh:nn")


  hh = Val(Left$(strZeit, 2))
  nn = Val(Mid$(strZeit, 4, 2))

  ZeitRunden = Format(TimeSerial( _
               hh, _
               Int(nn / varRundenAuf + 0.5) _
               * varRundenAuf, _
               0), "hh:nn")

End Function

Im ersten Schritt konvertieren wir die als Parameter "varZeit" übergebene Zeit in eine Zeichenkette mit dem Format "Stunden:Minuten". Um die daraus resultierenden Angaben einfacher verarbeiten zu können, werden Stunden und Minuten in getrennten Variablen festgehalten. Mit Hilfe von "TimeSerial" bauen wir dann das Funktionsergebnis auf, wobei der Minutenanteil durch das Rundungsintervall dividiert und anschließend wieder damit multipliziert wird. Zum Beispiel bei der Uhrzeit "13:24" Uhr: Aus "24 / 10= 2" und "2 * 10" ergibt sich ein auf volle 10 Minuten gerundeter Wert von "20" Minuten.

Kommentieren Sie jetzt diesen Artikel

* Pflichtfeld

*

*
*