私はこの質問に固有の答えを見つけられませんでしたので、誰かが私のためにそれをクリアすることができれば幸いです。変数が新しいオブジェクトに設定されていると、VBAオブジェクトは破棄されますか?
私はVBAのガベージコレクタは、オブジェクトが使用する(それによって、参照カウントをデクリメント)長くない必要とされ、明示的変数の関連付けを解除するかどうかを判断するために参照カウントを使用して理解して:ここで
Set objectVariable = Nothing
は何ですか私は今、私が働いているスプレッドシートを持っている:
Declare Function GetObject Lib "ObjectCreator.dll"() As Object
Public MyObject as Object
Sub MyMethod()
Set MyObject = GetObject()
...do stuff with MyObject...
Set MyObject = GetObject()
...do stuff with my new MyObject...
Set MyObject = GetObject()
...do stuff with my even newer MyObject...
Set MyObject = Nothing
End Sub
私の質問は:作成したオブジェクトのすべての3つは、GCまたは最後のものだけで破壊されたのですか?すなわち、参照変数がNothing
に設定されているのではなく、別のオブジェクトに設定されている場合、オブジェクトの参照カウントが減少するか?
'GetObject'メソッドを持っているdllを本当に持っているなら、VBA' GetObject'関数を隠さないようにdeclareステートメントで別名を付けるべきです。 – Comintern
@Comintern:別の名前を使用しているはずです...いいえ、DLLにはGetObjectメソッドがありません。オブジェクトを返すメソッドです。私はその例を単純にするためにその名前を使用しました。 – zaphodalive