Ich habe eine globale Variable, die eine Instanz meiner benutzerdefinierten Klasse ist.
Wie überprüfe ich, ob das Objekt festgelegt ist oder ob ich es initialisieren muss?
If obj Is Nothing Then
' need to initialize obj: '
Set obj = ...
Else
' obj already set / initialized. '
End If
Oder, wenn Sie es andersherum bevorzugen:
If Not obj Is Nothing Then
' obj already set / initialized. '
Else
' need to initialize obj: '
Set obj = ...
End If
obj Is Nothing
NICHT mit dem Prüfen identisch istIsNothing(obj)
! Vielen Dank für die korrekte Syntax, um dies zu überprüfen ... nicht sicher, warumIsNothing()
sich anders verhält ...Not (obj Is Nothing)
leichter zu verstehen alsNot obj Is Nothing
. Mein Gehirn weiß nicht, was ein "Not obj" ist!Der (un) sichere Weg, dies zu tun - wenn Sie damit einverstanden sind, die Option nicht explizit zu verwenden - ist ...
Dies behandelt auch den Fall, wenn das Objekt nicht deklariert wurde. Dies ist nützlich, wenn Sie nur eine Deklaration auskommentieren möchten, um ein bestimmtes Verhalten auszuschalten ...
Dies funktioniert, weil VBA eine nicht deklarierte Variable automatisch als leeren Variantentyp instanziiert. Es ist kein zusätzlicher Boolescher Wert erforderlich, um das Verhalten zu verwalten.
quelle
Option Explicit
. Es gewinnt nichts außer Probleme. Verwenden Sie die bedingte Kompilierung, um das Verhalten zu "wechseln".