カスタムクラスのインスタンスであるグローバル変数があります。
オブジェクトが設定されているかどうか、または初期化する必要があるかどうかを確認するにはどうすればよいですか?
If obj Is Nothing Then
' need to initialize obj: '
Set obj = ...
Else
' obj already set / initialized. '
End If
または、他の方法でそれを好む場合:
If Not obj Is Nothing Then
' obj already set / initialized. '
Else
' need to initialize obj: '
Set obj = ...
End If
これを行うための(安全でない)方法-オプション明示を使用しないで大丈夫なら-は...
Not TypeName(myObj) = "Empty"
これは、オブジェクトが宣言されていない場合も処理します。これは、宣言をコメントアウトして動作をオフにする場合に便利です...
Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object
'Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ false, the object has not been declared
これは、VBAが宣言されていない変数を空のバリアント型として自動的にインスタンス化するために機能します。これにより、動作を管理するための補助的なブール値が不要になります。