更新日:、 作成日:

VBA IsObject 関数:オブジェクトかどうかを判定する

はじめに

Excel VBA マクロの IsObject 関数からオブジェクトかどうかを判定する方法を紹介します。

IsObject 関数は、指定した値がオブジェクトやクラスなどの参照型かどうかを判定します。

オブジェクトの Sheet1 なら True を返します。

クラスの Class1 なら True を返します。

Nothing なら True を返します。

Variant 型の変数にオブジェクトが設定されているかどうかの判定に使用します。

参照型については「値型と参照型の違い」をご覧ください。

IsObject 関数の引数と戻り値

IsObject()
がオブジェクトのときは True を返します。それ以外のときは False を返します。

引数「値」判定したい値を指定します。
戻り値の型ブール型 (Boolean)

解説

参照型には Worksheet や Range、クラスで作成されたものがあります。すべてオブジェクトです。

引数「値」が オブジェクト なら True を返します。それ以外の数値や文字列などの値型なら False を返します。

引数「値」が Nothing なら True を返します。クラスの初期値が Nothing です。

引数「値」が配列なら False を返します。型は関係ありません。オブジェクト型の配列でも False を返します。

使用例

IsObject 関数の使用例を紹介します。

オブジェクトか判定する

オブジェクトかどうかを判定します。

Dim v As Variant
Dim b As Boolean

b = IsObject(v) ' Variant 型の初期値は Empty
Debug.Print(b) ' False

Set v = Worksheets(1)
b = IsObject(v)
Debug.Print(b) ' True

Set v = Range("A1")
b = IsObject(v)
Debug.Print(b) ' True

Set v = Nothing
b = IsObject(v)
Debug.Print(b) ' True

Dim o() As Object
v = o
b = IsObject(v)
Debug.Print(b) ' False

v = 1
b = IsObject(v)
Debug.Print(b) ' False

v = "A"
b = IsObject(v)
Debug.Print(b) ' False

v = Null
b = IsObject(v)
Debug.Print(b) ' False