Vba rechnen mit zeit über 24Std

Hallo,

Ich habe zwei Textboxen, mit Zeit angaben.
Eine ist unter 24 Std (22:10).
Die Zweite ist über 24 Std (25:10)

Wie kann man die Differenz von 3 Std errechnen?

Wobei inder zweiten Textbox die Zeit 25:10 nicht als 1:10 sondern als 25:10 angeben werden muß!

Hat da Jemand eine idee?

Danke gruß fred

Hallo,

Wobei inder zweiten Textbox die Zeit 25:10 nicht als 1:10
sondern als 25:10 angeben werden muß!

Wenn Du Werte als Zeit behandelst, werden unzulässige Werte abgewiesen.

Wenn Du eine Zeit: 25:10 anzeigen möchtest, musst Du die Funktionen zum Rechnen selbst schreiben, dabei unterstützt Dich VB nicht.

Gruß Rainer

Hallo,

Wenn Du eine Zeit: 25:10 anzeigen möchtest, musst Du die
Funktionen zum Rechnen selbst schreiben, dabei unterstützt
Dich VB nicht.

wie soll der code aussehen, hab schon im google gesucht ohne erfolg.
gruß fred

Hallo,

wie soll der code aussehen, hab schon im google gesucht ohne
erfolg.

klar, so etwas hat vor Dir auch noch Niemand gebraucht.
Wer will schon 25:36 Uhr anzeigen. :smile:

Nim den untenstehenden Code. Für Addition soll das reichen.
Wenn Du Subtraktion auch noch brauchst, sollte es Dir sicher gelingen, den Code umzuschreiben.

Gruß Rainer

Private Function TmAdd(ByVal t1 As String, ByVal t2 As String) As String
 Dim p1 As Integer, p2 As Integer
 Dim h1 As Integer, h2 As Integer
 Dim m1 As Integer, m2 As Integer
 Dim Hr As Integer, Mr As Integer
 If InStr(1, t1, ":") 0 And InStr(1, t2, ":") 0 Then
 p1 = InStr(t1, ":")
 p2 = InStr(t2, ":")
 h1 = Val(Mid(t1, 1, p1))
 h2 = Val(Mid(t2, 1, p2))
 m1 = Val(Mid(t1, p1 + 1, Len(t1) - p1))
 m2 = Val(Mid(t2, p2 + 1, Len(t2) - p2))
 Hr = h1 + h2
 Mr = m1 + m2
 If Mr \>= 60 Then
 Mr = Mr - 60
 Hr = Hr + 1
 End If
 TmAdd = CStr(Hr) + ":" + Right("00" + CStr(Mr), 2)
 Else
 TmAdd = "Formatfehler"
 End If
End Function

Aufgerufen wird die Funktion etwa so:

Ergebnis = TmAdd("23:45", "2:36")

Ich habe zwei Textboxen, mit Zeit angaben.
Eine ist unter 24 Std (22:10).
Die Zweite ist über 24 Std (25:10)

Wie kann man die Differenz von 3 Std errechnen?

Hallo Fred,

in der Tabelle sind drei Txtboxen.

Sub tt()
With Worksheets("Tabelle1")
 .Range("A1:A2,B1").NumberFormat = "[hh]:mm"
 .Range("A1") = .TextBox1.Text
 .Range("A2") = .TextBox2.Text
 .Range("B1").Formula = "=A2-A1"
 .TextBox3.Text = Hour(.Range("B1")) & ":" & Minute(.Range("B1"))
 .Range("A1:A2,B1").ClearContents
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

Die Zweite ist über 24 Std (25:10)

.Range(„A1:A2,B1“).NumberFormat = „[hh]:mm“

VBA lässt 25:10 Uhr zu? Die Anzeige einer Zeit, die es nicht gibt?
Hast Du das getestet? In VB6 geht das nicht, ungültige Werte werden abgewiesen.

Gruß Rainer

Hallo Rainer,

Wer will schon 25:36 Uhr anzeigen. :smile:

och, einige schon, z.B. bei einem Countdownzähler.
Der quasi zählt bzw. anzeigt, Noch
x Stunden und y Minuten bis zu einem Ereignis. Undman will halt das so angezeigt haben und nicht noch
z Tage x Stunden y Minuten.

Mit
Textbox1: 22:12
Textbox2: 23:10 bzw. 25:10
klappt nachfolgender Code (in Vba).
Sicher, wenn die Stunden in TB2 nur einstellig sind versagt noch der Code, aber ist eher ein zweitrangiges Problem und leicht zu ändern.

Sub tt3()
With Worksheets("Tabelle1")
 If IsNumeric(Left(.TextBox2.Text, 2)) Then
 If CInt(Left(.TextBox2.Text, 2)) 

Gruß
Reinhard

VBA lässt 25:10 Uhr zu? Die Anzeige einer Zeit, die es nicht
gibt?
Hast Du das getestet? In VB6 geht das nicht, ungültige Werte
werden abgewiesen.

Hallo Rainer,

ja, war/ist getestet:

http://www.bilder-space.de/show.php?file=26.09vvoVLt…

Dafür sorgen diese rechteckigen Klammern beim Format *schätz*

Gruß
Reinhard

Hallo Rainer

Private Function TmAdd(ByVal t1 As String, ByVal t2 As String)

As String

Dim p1 As Integer, p2 As Integer

Dim h1 As Integer, h2 As Integer

Dim m1 As Integer, m2 As Integer

Dim Hr As Integer, Mr As Integer

If InStr(1, t1, „:“) 0 And InStr(1, t2, „:“) 0 Then

p1 = InStr(t1, „:“)

p2 = InStr(t2, „:“)

h1 = Val(Mid(t1, 1, p1))

h2 = Val(Mid(t2, 1, p2))

m1 = Val(Mid(t1, p1 + 1, Len(t1) - p1))

m2 = Val(Mid(t2, p2 + 1, Len(t2) - p2))

Hr = h1 + h2

Mr = m1 + m2

If Mr >= 60 Then

Mr = Mr - 60

Hr = Hr + 1

End If

TmAdd = CStr(Hr) + „:“ + Right(„00“ + CStr(Mr), 2)

Else

TmAdd = „Formatfehler“

End If

End Function

Aufgerufen wird die Funktion etwa so:

Ergebnis = TmAdd(„23:45“, „2:36“)

Funktioniert bestens danke

Danke fred