Diese Funktion konvertiert eine Ganzzahl in ein beliebiges Format - und zwar Zeitformat. Die Anordnung und das Aussehen des Formates kann frei verändert werden, es ist zum Beispiel möglich, Text einzufügen, die Sekunden vor die Minuten zu stellen, einen Wert mehrfach anzuzeigen usw. Tabelle der unterstützten Zeichenkonstanten
Diese Liste kann natürlich beliebig erweitert werden, z.B. wenn Sie Text einfügen möchten, der ein d, h, m oder s enthält (diese würden ja durch Stunden, Minuten etc. ersetzt werden). Parameter:
Function FormatTime(ByVal lngInputValue 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" lngInputValue = lngInputValue * 60 Case "h" lngInputValue = lngInputValue * 3600 Case "d" lngInputValue = lngInputValue * 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(lngInputValue / 86400) lngInputValue = lngInputValue - (86400 * d) End If ' Stunden ausrechnen If iMaxValue <= 1 Then h = Int(lngInputValue / 3600) lngInputValue = lngInputValue - (3600 * h) End If ' Minuten ausrechnen If iMaxValue <= 2 Then m = Int(lngInputValue / 60) lngInputValue = lngInputValue - (60 * m) End If ' Rest: Sekunden ;-) s = lngInputValue 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) ' "d" durch Tage ersetzen sFormat = Replace(sFormat, "d", d) ' "hh" durch Stunden ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "hh", dh) ' "h" durch Stunden ersetzen sFormat = Replace(sFormat, "h", h) ' "mm" durch Minuten ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "mm", dm) ' "m" durch Minuten ersetzen sFormat = Replace(sFormat, "m", m) ' "ss" durch Sekunden ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "ss", ds) ' "s" durch Sekunden ersetzen sFormat = Replace(sFormat, "s", s) Dim Textd As String Dim Texth As String Dim Textm As String Dim Texts As String If d = 1 Then Textd = "Tag" Else Textd = "Tage" If h = 1 Then Texth = "Stunde" Else Texth = "Stunden" If m = 1 Then Textm = "Minute" Else Textm = "Minuten" If s = 1 Then Texts = "Sekunde" Else Texts = "Sekunden" ' (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, "(&)", "und") FormatTime = sFormat End Function Beispiele: FormatTime(1000) ' Ausgabe: 00:16:40 FormatTime(1000, "m") ' Ausgabe: 16:40:00 FormatTime(2000, "m") ' Ausgabe: 09:20:00 FormatTime(2000, "m", "d (0), hh:mm:ss") ' Ausgabe: 1 Tag, 09:20:00 FormatTime(2000, "m", "hh:mm:ss", "h") ' Ausgabe: 33:20:00 FormatTime(3967, "s", "h:m:s") ' Ausgabe: 1:6:7 FormatTime(200000, "s", "d (0), h (1), m (2) (&) s (3)", "d") ' Ausgabe: 2 Tage, 7 Stunden, 33 Minuten und 20 Sekunden FormatTime(9, "s", "s / ss / s / ss") ' Ausgabe: 9 / 09 / 9 / 09 FormatTime(1, "m", "(2)") ' Ausgabe: Minute Dieser Tipp wurde bereits 27.245 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |