「vba set オブジェクトが参照されているかを調べたい」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
VBA(Visual Basic for Applications)で、オブジェクト変数が、オブジェクトを参照しているかどうかを調べるには、どうすればいいのかを探していた方による検索です。
オブジェクト変数の中身をローカルウィンドウで確認する
まずはローカルウィンドウを使って、オブジェクト変数の中身を確認しましょう。
Dim bk As Workbook
Set bk = ActiveWorkbook
Debug.Print bk.Name
Set bk = Nothing
メニュー[表示]-[ローカルウィンドウ]から、ローカルウィンドウを表示しておいて、上記のSubプロシージャをショートカットキー[F8]でステップ実行してください。
ステップ実行を開始すると、ローカルウィンドウは下図のような状態になります。
ローカルウィンドウを確認すると、Workbook型のオブジェクト変数・bkの[値]欄に「Nothing」と表示されています。
このNothingの状態が、オブジェクト変数がオブジェクトをまだ参照していない状態です。
ショートカットキー[F8]でステップ実行をすすめ、
Set bk = ActiveWorkbook
を通り過ぎると、ローカルウィンドウは下図のような状態になります。
[値]欄に表示されていた「Nothing」はなくなり、変数名・bkの前に[+]が表示されています。
これが、オブジェクト変数が何らかのオブジェクトを参照している状態です。
変数名・bkの前に表示されている[+]をクリックすると、オブジェクト変数・bkを使って、どんな情報にアクセスできるのか、その一部を確認できます。
更にステップ実行をすすめて、
Set bk = Nothing
を通り過ぎると、再びオブジェクト変数の値が「Nothing」になります。
オブジェクト変数・bkにNothingをセットしたので、オブジェクトを参照していない状態になったわけです。
Nothingかどうかを調べればオブジェクト変数がオブジェクトを参照しているかどうかわかる
つまり、オブジェクト変数がNothingであればオブジェクトを参照しておらず、Nothingでなければオブジェクトを参照しているということです。
- Newer:Findで完全一致・部分一致を指定して検索するには
- Older:ListObjectオブジェクトの有無を確認する
Home » エクセルマクロ・Excel VBAの使い方 » オブジェクト変数がオブジェクトを参照しているかどうかを調べるには