User Tools

Site Tools


vba:classes:iformattable

[VBA] IFormattable

Eine Nachbildung des Interfaces IFormattable für VBA

Version 1.0.1 04.07.2016
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.
Bild zum Import

Download iformattable.cls (V-1.0.1)

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] DateTime, 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

iformattable.cls
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "IFormattable"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'-------------------------------------------------------------------------------
'File         : iformattable.cls
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba/classes/iformattable
'               https://msdn.microsoft.com/en-us/library/system.iformattable(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
'Environment  : VBA 2007 +
'Version      : 1.1.0
'Name         : IFormattable
'Author       : Stefan Erb (ERS)
'History      : 21.06.2016 - ERS - Create
'               04.07.2016 - ERS - Die Paramter analog zur VB-Net Version hinzugefügt
'-------------------------------------------------------------------------------
Option Explicit
 
'/**
' * 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
Attribute toString.VB_UserMemId = 0
'Attribute toString.VB_UserMemId = 0
End Property
 
vba/classes/iformattable.txt · Last modified: 04.07.2016 10:22:37 by yaslaw