Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数がオブジェクトを参照しているかどうかを調べるには

オブジェクト変数がオブジェクトを参照しているかどうかを調べるには

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba set オブジェクトが参照されているかを調べたい」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

VBA(Visual Basic for Applications)で、オブジェクト変数が、オブジェクトを参照しているかどうかを調べるには、どうすればいいのかを探していた方による検索です。

[スポンサードリンク]

オブジェクト変数の中身をローカルウィンドウで確認する

まずはローカルウィンドウを使って、オブジェクト変数の中身を確認しましょう。

Sub オブジェクト変数を確認する()

 Dim bk As Workbook

 Set bk = ActiveWorkbook
 Debug.Print bk.Name
 Set bk = Nothing

End Sub

メニュー[表示]-[ローカルウィンドウ]から、ローカルウィンドウを表示しておいて、上記のSubプロシージャをショートカットキー[F8]でステップ実行してください。

ステップ実行を開始すると、ローカルウィンドウは下図のような状態になります。

オブジェクト変数がオブジェクトを参照しているかどうかを調べるには

ローカルウィンドウを確認すると、Workbook型のオブジェクト変数・bkの[値]欄に「Nothing」と表示されています。

このNothingの状態が、オブジェクト変数がオブジェクトをまだ参照していない状態です。

ショートカットキー[F8]でステップ実行をすすめ、
 Set bk = ActiveWorkbook
を通り過ぎると、ローカルウィンドウは下図のような状態になります。

オブジェクト変数がオブジェクトを参照しているかどうかを調べるには

[値]欄に表示されていた「Nothing」はなくなり、変数名・bkの前に[+]が表示されています。

これが、オブジェクト変数が何らかのオブジェクトを参照している状態です。

変数名・bkの前に表示されている[+]をクリックすると、オブジェクト変数・bkを使って、どんな情報にアクセスできるのか、その一部を確認できます。

更にステップ実行をすすめて、
 Set bk = Nothing
を通り過ぎると、再びオブジェクト変数の値が「Nothing」になります。

オブジェクト変数・bkにNothingをセットしたので、オブジェクトを参照していない状態になったわけです。

Nothingかどうかを調べればオブジェクト変数がオブジェクトを参照しているかどうかわかる

つまり、オブジェクト変数がNothingであればオブジェクトを参照しておらず、Nothingでなければオブジェクトを参照しているということです。

この、Nothingかどうかを調べるのに使うのが、Is演算子です。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数がオブジェクトを参照しているかどうかを調べるには

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.