イミディエイト ウィンドウでは、以下を使用できます。
?Result Is Nothing
?IsNull( Result )
?IsEmpty( Result )
?IsMissing( Result )
1 つ目は単に完全性のためです。Result はオブジェクトではないためResult Is Nothing
、エラーがスローされます。次元化されていない配列を含む、Empty
初期化されていないバリアント用です。.
(更新) いくつかの追加のチェックを行う際に、IsEmpty が宣言された配列 (Redim されているかどうかにかかわらず) で true を返すことは決してないことを発見しました。例外は 1 つだけです。私が見つけた唯一の例外は、配列が Public としてではなくモジュール レベルで宣言されている場合と、それをイミディエイト ウィンドウでチェックした場合のみです。
Missing
関数またはサブルーチンに渡されるオプションの値の場合。を宣言することはできませんが、何も渡されない場合にtrue を返すOptional Foo() As Variant
ようなものを持つことができます。ParamArray Foo() As Variant
IsMissing
したがって、配列が初期化されているかどうかを判断する唯一の方法は、以下をチェックするプロシージャを作成することです。
Public Function IsDimensioned(vValue As Variant) As Boolean
On Error Resume Next
If Not IsArray(vValue) Then Exit Function
Dim i As Integer
i = UBound(Bar)
IsDimensioned = Err.Number = 0
End Function
ところで、このルーチン (または Jean-François Corbett によって投稿されたライブラリ) は、配列が次元化されてから消去された場合に false を返すことに注意してください。