Frühe Bindung in VBA [] (Frühe Bindung in VBA), Lektion, Seite 723674
https://www.purl.org/stefan_ram/pub/fruehe_vba (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
VBA-Kurs

»New« – statische Klassenvariablen in VBA

Hinzufügen eines neuen Typs

Über IDE > Extras > Verweise kann ein Verweis auf eine Bibliothek (type library ) hinzugefügt werden. (Diese Bibliothek kann auch ein VBA-Projekt sein.)

Dadurch werden die Module (Klassen) dieser Bibliothek VBA bekannt.

(Die Reihenfolge der Verweise legt die Priorität fest, also welches Modul bei gleichnamigen Modulen verschiedener Bibliotheken verwendet wird.)

Nicht alle Bibliotheken sind immer und überall vorhanden, so wie auch bestimmte Programme nicht immer und überall vorhanden sind. Manche Bibliotheken gehören zu bestimmten Versionen von Windows oder Office, andere kommen von Drittanbietern.

Für Übungszwecke sollte jetzt Verweis auf die „Microsoft Scripting Runtime“ (scrrun.dll) hinzugefügt werden.

Statische Typdeklaration (Frühe Bindung)

Bei einer statischen Typdeklaration erhält eine Variable einen spezielleren Typ als »Object«. Diese ist aber erst nach dem Anlegen des entsprechenden Verweisen möglich.

Modul1

Option Explicit

Sub Main()

Dim V As Scripting.Dictionary
Set V = CreateObject( "Scripting.Dictionary" )
V.Add "A", "Anton"

End Sub

Die Entwicklungsumgebung kann mehr Unterstützung anbieten, wenn sie den genauen Typ kennt. Beispielsweise kann sie nun nach Eingabe von »V.« (in einer neuen Zeile direkt vor »End Sub«) eine Auswahlliste anzeigen.

Vorteile

»New«

Das Anlegen eines Verweises erlaubt nun auch die Verwendung von »New«, das Tippfehler bei der Typangabe – im Gegensatz zu »CreateObject« – schon bei der Eingabe oder beim Kompilieren melden kann.

Modul1

Option Explicit

Sub Main()

Dim D As Scripting.Dictionary
Set D = New Scripting.Dictionary
D.Add "A", "Anton"

End Sub

Modul1

Option Explicit

Sub Main()

Dim D As Scripting.Dictionary

Debug.Print VBA.Information.VarType( D )

Debug.Print VBA.Information.TypeName( D )

Debug.Print VBA.Information.IsObject( D )

Debug.Print

Set D = New Scripting.Dictionary

Debug.Print VBA.Information.VarType( D )

Debug.Print VBA.Information.TypeName( D )

Debug.Print VBA.Information.IsObject( D )

Stop

End Sub

transcript
 9 
Nothing
Wahr

9
Dictionary
Wahr

Der VarType ist aber weiterhin 9 (vbObject), und TypeName ist weiterhin der Typ des Objektes (nicht der Variablen)

Kurzform Early binding

Dimensionierung
  Dim d As New Scripting.Dictionary

Hier wird das Objekt aber nicht beim New, sondern erst bei Bedarf angelegt, die Langform hat den Vorteil, daß der Zeitpunkt der Erzeugung ausdrücklich festgelegt wird

Beispiel JScript

Modul1

Option Explicit

'Add: Microsoft Script Control 1.0

Public Sub x()

Dim o As New ScriptControl

o.Language = "JScript"

o.AddCode "function summe(a,b) {return a+b;}"

Debug.Print o.Run("summe", 1, 2)

End Sub

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723674 stefan_ram:723674 Frühe Bindung in VBA Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723674, slrprddef723674, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/fruehe_vba