Geht es auch im Format "0:00:00,0" ?
18.08.2011 01:52:07
fcs
Hallo Martin,
als Format in der Tabelle kann Excel Zeiten mit Sekundenbruchteilen darstellen.
Allerdings wird der Eingabewert nur im Hintergrund verwaltet. Im Editierfeld geht beim Editieren jedoch die Nachkommastelle verloren.
Nachfolgend eine Funktion, die einen Text im gewünschten Format unter VBA generiert.
Gruß
Franz
Sub Beispiel()
Dim ReadTime1 As Double, ReadTime2 As Double, sTime1 As String, sTime2 As String
sTime1 = "11:59:59,9"
ReadTime1 = Zeit_Dezimal(sTime1)
sTime2 = "10:00:00,0"
ReadTime2 = Zeit_Dezimal(sTime2)
MsgBox sTime1 & " | " & ReadTime1 & vbLf _
& sTime2 & " | " & ReadTime2 & vbLf _
& "Zeitdifferenz: " & ReadTime1 - ReadTime2 & " Tage" & vbLf _
& "Zeitdifferenz: " & Zeit_DezimalSekunden(ReadTime1 - ReadTime2)
End Sub
Function Zeit_Dezimal(TimeText As String) As Double
'Rechnet einen Zeittext, ggf. mit Bruchteilen von Sekunden in Tage als Dezimalzahl um
If InStr(1, TimeText, ",") > 0 Then
If IsDate(Left(TimeText, InStr(1, TimeText, ",") - 1)) Then
Zeit_Dezimal = CDbl(TimeValue(Left(TimeText, 8))) _
+ CDbl(Mid(TimeText, InStr(1, TimeText, ","))) / 24 / 3600
Else
Zeit_Dezimal = 0
End If
Else
If IsDate(TimeText) Then
Zeit_Dezimal = CDbl(TimeValue(TimeText))
Else
Zeit_Dezimal = 0
End If
End If
End Function
Function Zeit_DezimalSekunden(ByVal Wert As Double, Optional bPlus As Boolean) As String
'Wert in Bruchteilen von Tagen im Format hh:mm:ss,0 anzeigen
Dim Stunden As Double, Minuten As Double, Sekunden As Double
Dim SekundenBruchteil As Double, WertAbs As Double
Dim Vorzeichen As String
If bPlus = True Then Vorzeichen = "+"
If Wert