Hazllo Paolo,
ich habe mir die Sache angesehen, erkenne das man die Zellen nicht leer lassen kann. Den Code habe ich ein wenig geandert, springe raus wenn die Zelle bereits als Zeitformat formatiert ist! Könnte sonst durcheinander geben. Den neuen Code bitte in die Tabelle kopieren.
Du kannst dir die echten Zeit Zahlen ansehen, indem man die ganze Zeile "J" kopiert, und ,n eine leere Spalte, z.B. U oder V als "Werte" einfügt. Dann sieht man die echten Zahlen für die Zeit. Seltsamerweise erscheint dort für "00:00" die 2, anstatt die "1" !! Keine Ahnung warum das so ist? Versuche dann doch bitte die Formel in Spalte K auf die 2 umzustellen, und beobachte das ganze ob es dann mit der 2 richtig funktionert?? =WENN(J9=2;0;J9*24) Ich nenne das Excel austricksen, bis es irgendwann klappt. Einfach probieren, Versuch macht klug ... Toi, toi, toi
Eine kleine Besonderheit ist die exakte Uhrzeit 24.00. Die bekomme ich irgendwie nicht in den Griff, da macht er mir 1:00 draus. Men Trick: ich geben 23:59 ein, und setze in der Anfangszeit auch statt 10:00 den Wert 9:59 ein. Dann stimmt die Gesamtzeit wieder. Warum Excel bei 24:00 von selbst was automatisch umstellt ist mir nicht bekannt. Halte mich an den alten Praktiker Spruch: "was nicht passt, wird einfach passend gemacht !!" Meine Excel Erfahrungen und Praxis aus 20 Jahre arbeiten mit Excel.
mfg Gast 123
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Wert As String, Zeit As Date, Txt As String
'Aussprung wenn die Zelle auf Zeit formatiert ist
If Target.NumberFormat = "h:mm" Then Exit Sub
'Bearbeiten nur von Textzellen (in Zeit wandeln)
Application.EnableEvents = False
On Error GoTo Ende
Wert = Target.Value
Txt = Cells(6, Target.Column).Value
If Wert = Empty Then GoTo Ende
If Txt = "von" Or Txt = "bis" Then
If Len(Wert) = 1 Then Zeit = CDate(Wert & ":00")
If Len(Wert) = 2 Then Zeit = CDate(Wert & ":00")
If Len(Wert) = 3 Then Zeit = CDate(Left(Wert, 1) & ":" & Right(Wert, 2))
If Len(Wert) = 4 Then Zeit = CDate(Left(Wert, 2) & ":" & Right(Wert, 2))
Target.NumberFormat = "h:mm"
Target.Value = Zeit
End If
Ende: Application.EnableEvents = True
End Sub