Fehlvariablen von Objekten in VBA (Fehlvariablen von Objekten in VBA), Lektion, Seite 723837
https://www.purl.org/stefan_ram/pub/fehlvariablen_vba (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
VBA-Kurs

Fehlvariablen von Objekten

Eine Fehlvariable ist eine Variable eines Objektes, die angenommen wird, wenn an einer Stelle, an der die Angabe einer Variablen erwartet wird, nur ein Objekt angegeben wird.

Die Fehlvariable von VBA.Err-Objekten ist »Number«.

Wir betrachten zunächst das folgende Programm mit  ».Number«.

Modul1

Option Explicit

Sub Main()

Debug.Print VBA.Information.VarType( VBA.Err.Number )
Debug.Print VBA.VbVarType.vbLong
Debug.Print VBA.Err.Number
Let VBA.Err.Number = 7
Debug.Print VBA.Err.Number

End Sub

transcript
 3 
3
0
7

Wir können nun ».Number« überall weglassen, und das Programm läuft genauso.

Modul1

Option Explicit

Sub Main()

Debug.Print VBA.Information.VarType( VBA.Err )
Debug.Print VBA.VbVarType.vbLong
Debug.Print VBA.Err
Let VBA.Err = 7
Debug.Print VBA.Err

End Sub

Protokoll
 3 
3
0
7

»Number« ist die Fehlvariable des VBA.Err-Objektes. Eine Fehlvariable  oder Fehleigenschaft  ist eine Variable eines Objekts, die angenommen wird, wenn die Angabe einer Variablen fehlt.

Wenn »VBA.Information.VarType« mit einem Objekt als Argument aufgerufen wird, das eine Fehlvariable besitzt, dann ergibt sich eine Information über jene Fehlvariable und nicht über das Objekt!

Es gibt aber Ausnahmen von der Annahme einer Fehlvariablen, beispielsweise bei der Verwendung von »VBA.Information.IsObject« und »VBA.Information.TypeName«. Dort steht »VBA.Err« wirklch für das Objekt »VBA.Err« selber und nicht  für dessen Eintrag »VBA.Err.Number«.

Man kann den Ausdruck für das Objekt aber einklammern, um sich auf die Fehleigenschaft zu beziehen.

Modul1

Option Explicit

Sub Main()

Debug.Print VBA.Information.IsObject( VBA.Err ) ' Inhalt von VBA.Err ist Objekt
Debug.Print VBA.Information.TypeName( VBA.Err ) ' Typ des /Inhaltes/ von VBA.Err
Debug.Print VBA.Information.IsObject( ( VBA.Err )) ' Fehleigenschaft ist kein Object
Debug.Print VBA.Information.TypeName( ( VBA.Err )) ' Fehleigenschaft hat Typ Long

End Sub

Protokoll
Wahr
ErrObject
Falsch
Long

Man kann den Unterschied sehen, indem man zum Vergleich einmal ».Number« hinzufügt.

Modul1

Option Explicit

Sub Main()

Debug.Print VBA.Information.IsObject( VBA.Err.Number ) ' Falsch, Inhalt ist kein Objekt
Debug.Print VBA.Information.TypeName( VBA.Err.Number ) ' Long, Typ des Inhalts der Variablen

End Sub

transcript
Falsch
Long

Der Name eines Objektes steht in vielen Fällen für die Fehlvariable  des Objekts, aber in manchen Fällen auch für das Objekt selber.

Einklammern eines Objektes ergibt die Fehleigenschaft.

Modul1

Option Explicit

Sub Main()

Debug.Print Typename( VBA.Err )

Debug.Print Typename( ( VBA.Err ))

Debug.Print Typename( ( ( VBA.Err )))

End Sub

Protokoll
ErrObject
Long
Long

Objektvergleiche

Obwohl »=« in dem folgenden Beispiel zufällig das gleiche Ergebnis liefert, muß »Is« verwendet werden, um zu erfahren, ob zwei Auswertungen das gleiche Objekt ergeben.

Bei »=« kann es sein, daß stattdessen die Fehlwerte  verglichen werden.

Modul1

Option Explicit

Sub Main()

Debug.Print VBA.Err Is VBA.Err

Debug.Print VBA.Err = VBA.Err

Let VBA.Err.Number = 7

Debug.Print VBA.Err = 7

End Sub

Protokoll

Wahr

Wahr

Wahr

?   Übungsfrage

Welche Ausgabe erzeugt das folgende Programm?

Modul1

Option Explicit

Sub Main()

Let VBA.Err.Number = 2
Debug.Print VBA.Err.Number

End Sub

?   Übungsfrage (1)

Welche Ausgabe erzeugt das folgende Programm?

Modul1

Option Explicit

Sub Main()

Let VBA.Err.Number = 2
Debug.Print VBA.Err

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 stefanram723837 stefan_ram:723837 Fehlvariablen von Objekten in VBA Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723837, slrprddef723837, 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/fehlvariablen_vba