Hallo,
bei diesem Ansazu wird in die Zelle eine Funktion eingetragen:
z.B. wird aus 849368 die Funktion =ZEITWERT("0:8:49,368")
Dazu wird dieser Code verwendet:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngValue As Long
Dim lngMs As Long, lngSec As Long, lngMin As Long, lngHour As Long
Dim rngTime As Range
'Set rngtime = Range(ThisWorkbook.Names("Uhrzeiten").RefersTo)
Set rngTime = Intersect(Range(ThisWorkbook.Names("Uhrzeiten").RefersTo), Target)
If Not rngTime Is Nothing Then
If IsNumeric(rngTime.Value) Then
lngValue = rngTime.Value
lngMs = lngValue - (Int(lngValue / 1000) * 1000)
lngValue = (lngValue - lngMs) / 1000
lngSec = lngValue - (Int(lngValue / 100) * 100)
lngValue = (lngValue - lngSec) / 100
lngMin = lngValue - (Int(lngValue / 100) * 100)
lngValue = (lngValue - lngMin) / 100
lngHour = lngValue
Application.EnableEvents = False
With rngTime
.Formula = "=TimeValue(""" & lngHour & ":" & lngMin & ":" & lngSec & "," & lngMs & """)"
.NumberFormat = "hh:mm:ss.000"
End With
Application.EnableEvents = True
End If
End If
End Sub
In VBA gibt der Befehl TIMEVALUE einen Fehler aus, wenn diesem die Zeit mit Millisekunden übergeben wird.
Als Ergebnis bekommt man eine Zeitangabe, mit der man weiterarbeiten kann.
Der Code muss im VBA-Editor dem entsprechenden Tabellenblatt zugewiesen werden.
LG, BigBen
|