「VBS nothing どんな状態」
という検索キーワードに気が付きました。
VBScritptで見かける
If obj Is Nothing Then
といった構文を、正しく理解しようとしている方による検索です。
VBSで確認するよりも、VBAの開発環境であるVBE(Visual Basic Editor)の、ウォッチウィンドウを使って確認するのを、おすすめします。
NothingとはObjPtr関数の戻り値が0の状態
まずは結論を。
オブジェクトのメモリアドレスを返す、(隠し関数である)ObjPtr関数の戻り値が「0」の状態が、Nothingです。
Nothingを確認するSubプロシージャ
ご自分の手と目で確認してください。Excelでなくても、WordでもPowerPointでもいいので、VBEを起動し、標準モジュールに以下のSubプロシージャを作成してください。
Dim obj As Object
Set obj = Application
Set obj = Nothing
End Sub
オブジェクト変数objを用意して、Applicationプロパティの戻り値を格納して、Nothingにするだけの、このまま実行しても何もおきないSubプロシージャです。
Nothingの確認手順
上記のSubプロシージャを、式の値をウォッチウィンドウで確認しながらステップ実行すると、Nothingがどういう状態かを確認できます。
ウォッチ式の追加
ウォッチウィンドウで確認するウォッチ式を追加します。
上記のSubプロシージャで使っているオブジェクト変数「obj」
オブジェクト変数objのメモリアドレスを確認する「ObjPtr(obj)」
という2つの式を追加してください。
オブジェクト変数objは、コードからドラッグアンドドロップで追加するのが簡単でしょう。
「ObjPtr(obj)」のほうは、[ウォッチ式の追加]ダイアログで下図のように入力してください。
ウォッチ式を確認しながらステップ実行する
拙著『いちばんやさしいExcel VBAの教本』でも多用しているショートカットキー[F8]でステップ実行を開始します。
このときウォッチウィンドウは下図のような状態になります。
オブジェクト変数objの値はNothingで、ObjPtr(obj)の値は「0」です。
これが先ほどお伝えした、Nothingの状態です。
オブジェクト変数に、参照情報が代入されていない初期状態です。
ステップ実行を継続する
ショートカットキー[F8]でステップ実行を継続し、
Set obj = Application
を実行します。
ウォッチウィンドウは下図のような状態になります。
オブジェクト変数objの値はNothingではなくなり、ObjPtr(obj)の値は0ではなくなりました。
ちなみに値(メモリアドレス)は、実行環境やタイミングによって異なる値になります。
これがNothingではない状態です。
オブジェクト変数に、オブジェクトへの参照情報が代入された状態です。
更にステップ実行を継続する
更にショートカットキー[F8]でステップ実行を継続し、
Set obj = Nothing
を実行します。
ウォッチウィンドウは下図のような状態になります。
オブジェクト変数objの値は再びNothingになり、ObjPtr(obj)の値も0になりました。
これもNothingの状態です。
オブジェクト変数に、参照情報が代入されていない状態です。
Nothingとは
最後にもう一度。
VBAやVBSのNothingとは、オブジェクト変数に参照情報が代入されていない状態です。
ObjPtr関数の戻り値が「0」のときが、Nothingの状態です。
最終更新日時:2019-12-08 15:20
- Newer:InlineShapeをすべて削除する
- Older:python-pptxでshapeの枠線色を設定する
Home » エクセルマクロ・Excel VBAの使い方 » VBAやVBSのNothingとはどういう状態なのか