Zeitformat in Textdatei ohne Rundung übernehmen per VBA

r_Alf

Mitglied
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? :rolleyes:

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)
 
Wieso willst du etwas, was bereits formattiert ist, nochmal formattieren? :)
Versuchs mal so:
Code:
Print #FileNr, Cells(2, 4).Text
 
Ohman, Wald und Bäume... hab mich wohl durch das Ergebnis irritieren lassen, welches mit
Print #FileNr, Cells(2, 4)
gespeichert wird (Bruchteil des Tages) :rolleyes:
 
Zurück