Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Allgemein / Zeit / Stunden

Berechnungen mit mehr als 24 Stunden

Die Format-Funktion kann maximal eine Uhrzeit von knapp 24:00 zurückgeben. Längere Zeiträume werden als Tage abgebildet.

Versucht man z.B. eine Zeit von genau 48 Stunden im Format "hh:nn" anzeigen, so erhält man "00:00" als Ergebnis, was für viele Anwendungen nicht gerade das gewünschte Resultat sein dürfte.

Die folgenden beiden Funktionen lösen dieses Problem:
'"hh:nn" in Datumswert umwandeln:
Function HHNNValue(ByVal Text As String) As Variant
  Dim PosTrenner As Long
  Dim Stunden As Variant
  Dim Minuten As Variant
  
  'Stundenanteil:
  Stunden = CDec(Val(Text))
  
  'Ggf. Minutenanteil:
  PosTrenner = InStr(Text, ":")
  If PosTrenner Then
    Text = Mid$(Text, PosTrenner + 1)
    Minuten = CDec(Val(Text))
  End If
  
  'Konvertieren in Tagesanteil:
  HHNNValue = (Stunden + Minuten / 60) / 24
End Function

'Datumswert in "hh:nn" umwandeln:
Function HHNNString(ByVal Zeit As Variant) As String
  Dim Stunden As Long
  Dim Minuten As Long
  
  'In (gerundete) Gesamtminuten konvertieren:
  Zeit = Int(Zeit * 24 * 60 + 0.5)
  
  'Stunden- und Minutenanteil bestimmen:
  Stunden = Zeit \ 60
  Minuten = CLng(Zeit - Stunden * 60)
  
  'Formatierung:
  HHNNString = Format$(Stunden, "00") _
       & ":" & Format$(Minuten, "00")
End Function
So ergibt der Aufruf von HHNNValue("240") den Wert 10 (ganze Tage), HHNNValue("0:360") den Wert 0,25 (360 Minuten sind 6 Stunden sind ein viertel Tag) und HHNNString(10.25) erzeugt den String "246:00".

© Jost Schwider, 05.05.2000-05.05.2000 - http://vb-tec.de/stunden.htm