Hallo,
habe mehrere Zellen mit "hh:mm:ss,000" formatiert und trage dort Zeiten Millisekunden genau ein, was in der Exceldarstellung auch noch gut funktioniert (Millisekundenaddition funktioniert).
Jetzt will ich diese Zeitangabe exakt speichern und habe folgendes versucht:
(geöffnet per Open TextDatei For Output As #FileNr)
Print #FileNr, Format(Cells(2, 4), "hh:mm:ss,000")
Problem hierbei ist, dass die Sekunden immer gerundet werden, also immer 000 Millisekunden gespeichert werden. Ein direktes Übernehmen der Zellformatierung hatte nix geändert
Habs dann direkt mal so versucht:
Print #FileNr, Format(Hour(Cells(2, 4)), "##00") & ":" _
& Format(Minute(Cells(2, 4)), "##00") & ":" _
& Format((Cells(2, 4) * 24 * 60 * 60) Mod 60, "##00") & "," _
& Right(Cells(2, 4) * 24 * 60 * 60 * 1000, 3)
Hier hatte ich dann zwar meine Millisekunden drin, die Sekunden waren aber weiterhin gerundet (also bei >499ms eben Sekunden+1) und habs dann mit fix probiert:
Print #FileNr, Format(Hour(Cells(2, 4)), "##00") & ":" _
& Format(Minute(Cells(2, 4)), "##00") & ":" _
& Format(Fix(Cells(2, 4) * 24 * 60 * 60) Mod 60, "##00") & "," _
& Right(Cells(2, 4) * 24 * 60 * 60 * 1000, 3)
Hier ist das Problem, dass aus dem von Hand eingegebenen Wert "00:00:59,000" in der Textdatei ein "00:00:58,000" wird, ändere ich diese händische Eingabe auf "00:00:59,001" habe ich das erwartungsgemäss auch in der Textdatei drin stehen.
Falls die Frage aufkommt warum ich die Sekunden berechne - mit "Second" wars auch gerundet.
Meine Frage wäre nun wie ich das exakt so wie in der Zelle sichtbar gespeichert bekomme?
Ich hoffe mir kann geholfen werden (mehrzellig würd ichs eigentlich nicht machen wollen, nur wenn es wirklich keine einzellige Lösung gibt).
(btw., nutze Office 2010)
habe mehrere Zellen mit "hh:mm:ss,000" formatiert und trage dort Zeiten Millisekunden genau ein, was in der Exceldarstellung auch noch gut funktioniert (Millisekundenaddition funktioniert).
Jetzt will ich diese Zeitangabe exakt speichern und habe folgendes versucht:
(geöffnet per Open TextDatei For Output As #FileNr)
Print #FileNr, Format(Cells(2, 4), "hh:mm:ss,000")
Problem hierbei ist, dass die Sekunden immer gerundet werden, also immer 000 Millisekunden gespeichert werden. Ein direktes Übernehmen der Zellformatierung hatte nix geändert
Habs dann direkt mal so versucht:
Print #FileNr, Format(Hour(Cells(2, 4)), "##00") & ":" _
& Format(Minute(Cells(2, 4)), "##00") & ":" _
& Format((Cells(2, 4) * 24 * 60 * 60) Mod 60, "##00") & "," _
& Right(Cells(2, 4) * 24 * 60 * 60 * 1000, 3)
Hier hatte ich dann zwar meine Millisekunden drin, die Sekunden waren aber weiterhin gerundet (also bei >499ms eben Sekunden+1) und habs dann mit fix probiert:
Print #FileNr, Format(Hour(Cells(2, 4)), "##00") & ":" _
& Format(Minute(Cells(2, 4)), "##00") & ":" _
& Format(Fix(Cells(2, 4) * 24 * 60 * 60) Mod 60, "##00") & "," _
& Right(Cells(2, 4) * 24 * 60 * 60 * 1000, 3)
Hier ist das Problem, dass aus dem von Hand eingegebenen Wert "00:00:59,000" in der Textdatei ein "00:00:58,000" wird, ändere ich diese händische Eingabe auf "00:00:59,001" habe ich das erwartungsgemäss auch in der Textdatei drin stehen.
Falls die Frage aufkommt warum ich die Sekunden berechne - mit "Second" wars auch gerundet.
Meine Frage wäre nun wie ich das exakt so wie in der Zelle sichtbar gespeichert bekomme?
Ich hoffe mir kann geholfen werden (mehrzellig würd ichs eigentlich nicht machen wollen, nur wenn es wirklich keine einzellige Lösung gibt).
(btw., nutze Office 2010)