476 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich habe folgenden Code:

Sub zeit()

Dim datZeit1 As Date, datZeit2 As Date
datZeit1 = Range("A1")
datZeit2 = Range("A2")

MsgBox Format(datZeit1 + datZeit2, "hh:mm")

End Sub


(A1=4:30, A2=26:45 z.B)
in dem ich eine aufsummierte Zeit in Stunden in einem Text oder wie hier in einer msgbox ausgeben will. Nur leider funktioniert das so nicht, wenn die Summe >24 Std ist. Auch mit "[h]:mm" klappt es nicht im Code. Hat jemand eine Tipp?
Danke und gruß Andreas

3 Antworten

0 Punkte
Beantwortet von
Hallo Andreas,

Interessant. Das Problem war mir noch nicht bekannt. Es könnte
evtl. daran liegen, dass VBA versucht, alles was in eckigen
Klammern steht als Name auszuwerten. Schließlich könntest du ja
anstelle eines Benutzerformats auch einen Namen wie z.B. "Long
Time" eingeben. Wie man die Format-Funktion nun dazu bringt, die
Eckige Klammer als solche auszuwerten, weiß ich auch nicht. Alle
mir bekannten Steuerzeichen haben nicht funktioniert.

Die einfachste Lösung ist es, hier die Excel-Funktion =Text() zu
verwenden. Die Code-Zeile lautet wie folgt:

MsgBox Application.Text(datZeit1 + datZeit2, "[h]:mm")

Übrigens ist das nicht die Einzige VBA-Funktion, die falsch arbeitet.
Ich habe im Lauf der Zeit einige VBA-Bugs aufgedeckt. Beispiel:
Round(17.5, 0) = 18 aber Round(18.5, 0) ist auch 18. Wie kann das
sein? Für korrektes Runden immer die ExcelFunktion
Application.Round(18.5, 0) verwenden.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo Ihr beiden :-)

Ein Ansatz!

Gruss Nighty

Die Uhrzeit ist in diesem Beispiel A1 und B1 die Dezimale Darstellung!

Sub Zeit_Dezimal()
Dim DForm As Double, Berechnung As Double
Cells(1, 1).NumberFormat = "General"
DForm = Cells(1, 1)
Berechnung = DForm * 24
Cells(1, 2) = Berechnung
Cells(1, 1).NumberFormat = "[h]:mm:ss"
End Sub
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo ihr Beiden,

danke für eure Tipps und die beiden sehr guten Ansätze, kann ich sehr gut so anwenden!
Ich hatte mir provisorisch geholfen, indem ich die Zelle nachträglich noch einmal formatiert habe mit
cells(x,y).NumberFormat=("[h]:mm").
Das klappte dann, aber eure Ansätze passen besser in mein Problem.

VG Andreas
...