これは変数の定義方法が影響するためです。
変数の定義に New を付けると、オブジェクトを最初に参照したときにオブジェクトの新しいインスタンスが作成されます。
Dim Obj As New Collection Obj.Add "Sample1"とすると、2行目で Obj を参照するので、ここでインスタンスを作成した後で Add メソッドを実行します。
同様に、Set ステートメントで Nothing を代入しても、次にこのオブジェクト(変数)を参照したときに新しいインスタンスが作成されてしまいます。例えば以下の場合は・・・
Dim Obj As New Collection Set Obj = Nothing If Obj Is Nothing Then ' ここで新しいインスタンスを作成する、Nothing にならない! Debug.Print "Nothing" Else Debug.Print "Collection" ' こちらを通過します End Ifこういった Nothing の判定が必要な場合は、変数の定義で New を指定せず、以下のようにします。
Dim Obj As Collection Set Obj = New Collection
■ 参考資料
Dim ステートメント (Visual Basic)https://msdn.microsoft.com/ja-jp/library/7ee5a7s1.aspx