Umrechnung Minuten/Sekunden in Zeitangabe
Konvertierungsfunktionen wie Minuten oder Sekunden in Zeitangabe zu konvertieren. sollte an und für sich kein Problem sein. Wenn die Rechenarithmetik von Access uns keinen Strich durch die Rechnung machen würde. Angenommen man hat 400 Minuten und teilt diese durch 60 und weisst das Ergebnis einer Long-Variablen zu, um die Stunden zu erhalten: 400/60 = 6.66666667. Dieses einem Long-Wert zugeordnet ergibt aber 7!
Ein Trick ist die Teilung mit einem Backslash, also 400\60. Diese Division gibt immer die Zahl vor dem Komma zurück, Nachkommastellen werden einfach abgeschnitten.
Fangen wir mal mit den Funktionen an. Diese am besten in einem Modul plazieren:
Public Function ConvertMintoTime(varM As Long) Dim hours As Long Dim minutes As Long hours = varM \ 60 minutes = varM - hours * 60 ConvertMintoTime = Format(hours, "00") & Format(minutes, "\:00") & ":00" End Function Public Function ConvertSectoTime(varS As Long) Dim hours As Long Dim minutes As Long Dim seconds As Long hours = varS \ 3600 minutes = (varS - hours * 3600) \ 60 seconds = varS - hours * 3600 - minutes * 60 ConvertSectoTime = Format(hours, "00") & Format(minutes, "\:00") & Format(seconds, "\:00") End Function
In der ersten Funktion werden die Minuten durch 60 geteilt um die Stunden zu erhalten. Im zweiten Schritt wird die Differenz zwischen den Minuten und den Stunden x 60 ermittelt, um die Minuten zuerhalten, was letztendlich nichts anderes als der Rest der ersten Division ist.
In der zweiten Funktion haben wir Sekunden, daher teilen wir durch 3600 für die Stunden. der Rest dieser Division wird dann durch 60 geteilt für die Minuten, und der letzte Rest bildet dann die Sekunden ab.
Per Format() Funktion wird die Ausgabe der Funktion aufbereitet.
Der Aufruf kann z.B. aus einem Formular oder anderen Modul erfolgen, da die Funktionen den Gültigkeitsbereich Public besitzen. Dieser könnte z.B. so aussehen:
Sub test() Dim t As Long t = 4000 MsgBox t & " Sekunden sind Umgerechnet: " & ConvertSectoTime(t) MsgBox t & " Minuten sind Umgerechnet: " & ConvertMintoTime(t) End Sub
Das wars schon, also eigentlich bis auf den Fallstrick mit dem Teil-Strich nichts besonderes.
Bis dahin
Andreas Vogt © 2012