2

次のコードは、1 行でオブジェクトを宣言してインスタンス化し、それを Nothing に設定しようとします。

Dim myObject As New MyClass
Set myObject = Nothing
MsgBox (myObject Is Nothing) 'FALSE

3 行目のメッセージは「False」です。ただし、宣言とインスタンス化を 2 行に分割すると、次のようになります。

Dim myObject As MyClass
Set myObject = New MyClass
Set myObject = Nothing
MsgBox (myObject Is Nothing) 'TRUE

突然、メッセージは「True」です。既に宣言して 1 行でインスタンス化したオブジェクトがたくさんあるので、Nothing にする必要があるかもしれません。すべての宣言を変更せずにこれを行う方法はありますか?

また、その理由を説明できる方がいらっしゃいましたら、よろしくお願いいたします。私は独学で VBA を学んでいて、その言語をよく理解していません... 私の通常の言語と比べて非常に奇妙です..

4

1 に答える 1

2

Locals windowで参照変数を確認してみてください。説明があるはずです。前述のように、問題はDim ... As New ... myObject参照変数が原因で、msgbox ステートメントのオブジェクトに割り当てられることです。後で何も設定しないと、再び何もなくなります。

于 2012-06-29T05:36:12.223 に答える