Zeitformatierung

Format DD:HH:MM:SS
A                       B C
Total: 1 day, 00 hours, 06 min, 23 sec 88350
Total: 1:00:06:23 88350
Total: 24:06:23 88350
Total: 1 day, 00 hours, 06 min, 23 sec  =  24:06:23    
In der (ausgeblendeten) Spalte C steht der zu formatierende Zeitwert (in Sekunden)
Funktionsaufruf:
"s" übergibt die Variable in Sekunden und schreibt mit "d" in Tagen/Stunden/Minuten/Sekunden zurück
x = CountTime(w, "s", "d (0), h (1), m (2), s (3)", "d")
"m" übergibt die Variable in Minuten und schreibt mit "h" in Stunden/Minuten/Sekunden zurück
x = CountTime(w, "m", "h (1), m (2), s (3)", "h")
"h" übergibt die Variable in Stunden und schreibt mit "m" in Minuten/Sekunden zurück
x = CountTime(w, "h", "m (2), s (3)", "m")
"d" übergibt die Variable in Tagen und schreibt mit "s" in Sekunden zurück
x = CountTime(w, "d", "s (3)", "s")
Sub Change_Seconds_To_Time_DDHHMMSS()
Dim w, x, y, z
'Format xx Tage, xx Stunden, xx Minuten, xx Sekunden
w = Range("C1").Value
x = CountTime(w, "s", "d (0), h (1), m (2), s (3)", "d")
Range("A1").Value = x
'Format DD:HH:MM:SS
w = Range("C2").Value
y = CountTime(w, "s", "d(0):h(1):m(2):s(3)", "d")
y = Replace(y, "days", "")
y = Replace(y, "day", "")
y = Replace(y, "hours", "")
y = Replace(y, "hour", "")
y = Replace(y, "min", "")
y = Replace(y, "sec", "")
Range("A2").Value = y
'Format HH:MM:SS
w = Range("C3").Value
z = CountTime(w, "s", "h(1):m(2):s(3)", "h")
z = Replace(z, "hours", "")
z = Replace(z, "hour", "")
z = Replace(z, "min", "")
z = Replace(z, "sec", "")
Range("A3").Value = z
'und dann zwei Formatierungen in einer Zelle
z = Replace(z, "Total: ", "  =  ")
Range("A4").Value = x & z
If w > 1000000 Then w = 1
Range("C1").Value = w + 1567
Range("C2").Value = w + 1567
Range("C3").Value = w + 1567
End Sub
Function:
Function CountTime(ByVal iValue As Long, _
           Optional ByVal sInputType As String = "s", _
           Optional ByVal sFormat As String = "hh:mm:ss", _
           Optional ByVal sMaxValue As String = "d") As String
  'Eingabewert in Sekunden umrechnen
  Select Case sInputType
    Case "m"
      iValue = iValue * 60
    Case "h"
      iValue = iValue * 3600
    Case "d"
      iValue = iValue * 86400
    Case "s"
    Case Else
      Exit Function
  End Select
  'MaxValue in schönere Form bringen (zum Rechnen)
  Dim iMaxValue As Integer
  Select Case sMaxValue
    Case "d"
      iMaxValue = 0
    Case "h"
      iMaxValue = 1
    Case "m"
      iMaxValue = 2
    Case "s"
      iMaxValue = 3
    Case Else
      iMaxValue = 0
  End Select
    
  Dim d As Long
  Dim h As Long
  Dim m As Long
  Dim s As Long
  'Tage ausrechnen
  If iMaxValue = 0 Then
    d = Int(iValue / 86400)
    iValue = iValue - (86400 * d)
  End If
  'Stunden ausrechnen
  If iMaxValue <= 1 Then
    h = Int(iValue / 3600)
    iValue = iValue - (3600 * h)
  End If
  'Minuten ausrechnen
  If iMaxValue <= 2 Then
    m = Int(iValue / 60)
    iValue = iValue - (60 * m)
  End If
  'Rest: Sekunden
  s = iValue
 
  Dim dd As String
  Dim dh As String
  Dim dm As String
  Dim ds As String
  'ggf. eine Null vor der Zahl einfügen
  dd = Format$(d, "00")
  dh = Format$(h, "00")
  dm = Format$(m, "00")
  ds = Format$(s, "00")
  '"dd" durch Tage ersetzen (ggf. mit Null)
  sFormat = Replace(sFormat, "dd", dd)
  If d < 10 Then
   '"d" durch Tage ersetzen
   sFormat = Replace(sFormat, "d", d)
  Else
   sFormat = Replace(sFormat, "d", dd)
  End If
  '"hh" durch Stunden ersetzen (ggf. mit Null)
  sFormat = Replace(sFormat, "hh", dh)
  '"h" durch Stunden ersetzen
  sFormat = Replace(sFormat, "h", dh)
  '"mm" durch Minuten ersetzen (ggf. mit Null)
  sFormat = Replace(sFormat, "mm", dm)
  '"m" durch Minuten ersetzen
  sFormat = Replace(sFormat, "m", dm)
  '"ss" durch Sekunden ersetzen (ggf. mit Null)
  sFormat = Replace(sFormat, "ss", ds)
  '"s" durch Sekunden ersetzen
  sFormat = Replace(sFormat, "s", ds)
 
  Dim Textd As String
  Dim Texth As String
  Dim Textm As String
  Dim Texts As String
  If d = 1 Then Textd = "day" Else Textd = "days"
  If h = 1 Then Texth = "hour" Else Texth = "hours"
  If m = 1 Then Textm = "min" Else Textm = "min"
  If s = 1 Then Texts = "sec" Else Texts = "sec"
 
  '(0) durch Tag / Tage ersetzen
  sFormat = Replace(sFormat, "(0)", Textd)
  '(1) durch Stunde / Stunden ersetzen
  sFormat = Replace(sFormat, "(1)", Texth)
  '(2) durch Minute / Minuten ersetzen
  sFormat = Replace(sFormat, "(2)", Textm)
  '(3) durch Sekunde / Sekunden ersetzen
  sFormat = Replace(sFormat, "(3)", Texts)
  '(&) durch "und" ersetzen
  sFormat = Replace(sFormat, "(&)", "and")
  CountTime = "Total: " & sFormat
End Function

 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info