Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K |
K |
||
(Der Versionsvergleich bezieht 3 dazwischenliegende Versionen mit ein.) | |||
Zeile 3: | Zeile 3: | ||
Für die formatierte Ausgabe eines Datum/Zeit-Wertes (Date-Datentyp) von mehr als 24 Stunden könnte man die Format-Funktion überschreiben und die Syntax von Excel nutzen. | Für die formatierte Ausgabe eines Datum/Zeit-Wertes (Date-Datentyp) von mehr als 24 Stunden könnte man die Format-Funktion überschreiben und die Syntax von Excel nutzen. | ||
- | Beispiel: <code>Format( | + | Beispiel: <code>Format(Timeserial(60,30,15), "[hh]:nn:ss")</code> |
<source> | <source> | ||
Public Function Format(ByVal Expression As Variant, Optional ByVal FormatString As Variant, _ | Public Function Format(ByVal Expression As Variant, Optional ByVal FormatString As Variant, _ | ||
Zeile 18: | Zeile 18: | ||
FormatString = Replace(FormatString, "[h]", "h", , , vbTextCompare) | FormatString = Replace(FormatString, "[h]", "h", , , vbTextCompare) | ||
Else | Else | ||
- | FormatString = Replace(FormatString, "[hh]", | + | FormatString = Replace(FormatString, "[hh]", "[h]", , , vbTextCompare) |
- | FormatString = Replace(FormatString, "[h]", CStr(Hours), , , vbTextCompare) | + | FormatString = Replace(FormatString, "[h]", Replace(CStr(Hours), "0", "\0"), , , vbTextCompare) |
End If | End If | ||
End If | End If | ||
Zeile 28: | Zeile 28: | ||
End Function | End Function | ||
</source> | </source> | ||
+ | |||
+ | Modul | ||
+ | {{websvn.draft|path=text/StringTools.bas|text=StringTools.bas}} | ||
+ | Testklasse | ||
+ | {{websvn.draft|path=_test/text/StringToolsTests.cls|text=StringToolsTests.cls}} |
Für die formatierte Ausgabe eines Datum/Zeit-Wertes (Date-Datentyp) von mehr als 24 Stunden könnte man die Format-Funktion überschreiben und die Syntax von Excel nutzen.
Beispiel: Format(Timeserial(60,30,15), "[hh]:nn:ss")
Public Function Format(ByVal Expression As Variant, Optional ByVal FormatString As Variant, _ Optional ByVal FirstDayOfWeek As VbDayOfWeek = vbSunday, _ Optional ByVal FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1) As String Dim Hours As Long If IsDate(Expression) Then If InStr(1, FormatString, "[h", vbTextCompare) > 0 Then Hours = Fix(Round(CDate(Expression) * 24, 1)) If Hours < 24 Then FormatString = Replace(FormatString, "[hh]", "hh", , , vbTextCompare) FormatString = Replace(FormatString, "[h]", "h", , , vbTextCompare) Else FormatString = Replace(FormatString, "[hh]", "[h]", , , vbTextCompare) FormatString = Replace(FormatString, "[h]", Replace(CStr(Hours), "0", "\0"), , , vbTextCompare) End If End If End If Format = VBA.Format$(Expression, FormatString, FirstDayOfWeek, FirstWeekOfYear) End Function
Modul StringTools.bas Testklasse StringToolsTests.cls