version=1.0.1 vdate=04.07.2016 fname=iformattable.cls ns=%NAMESPACE% fpath=/vba/classes ====== [VBA] IFormattable ====== //Eine Nachbildung des Interfaces IFormattable für VBA// ==Version %%version%% %%vdate%%== >//Das Modul hat versteckte Attribute. Damit diese aktiv übernommen werden reicht es nicht aus, den Code in ein neues Modul zu kopieren. Man muss das Modul aus der Datei nach VBA importieren.// >{{popup>:vba:vba_importfile.png|Bild zum Import}} {{%%fname%%|Download %%fname%% (V-%%version%%)}} Dieses Interface parst eine Klasse so, dass der Standardrückgabewert toString() ist. Dieser ist je nach Klasse anderst definiert. ===== Definitionen ===== ==== toString() ==== Die Methode ist als Standardmethode für das Interface definiert. Dadurch wird sie bei CStr() automatisch angewendet. Dazu verwende ich das versteckte Attribut ''Attribute toString.VB_UserMemId = 0'' '/** ' * Gibt ein String-Wert eines Objektes zurück ' * @param String Einige Klassen unterstützen ein Format, siehe dazu die Details zu den Umsetzungen ' * @param IFormatProvider Wird noch nict unterstützt ' * @return String ' */ Public Property Get toString( _ Optional ByVal format As String, _ Optional ByRef formatProvider As Object _ ) As String ===== Beispiele ===== Für das Beispiel verwende ich die Klasse [[vba:classes:date:datetime:index]], welche das Interface eingebunden hat. Public Sub test() Dim dt As DateTime Set dt = DateTime() Debug.Print CStr(dt) End Sub --> Error: Type Missmatch Dasselbe mit dem Interface IFOrmattable Public Sub test() Dim dt As IFormattable Set dt = DateTime() Debug.Print CStr(dt) End Sub #2016-06-23 11:25:01# ===== Code =====