Dim New در VBA میاد موقع تعریف متغیر شی جدید بهش اختصاص میده، نه هر دفعه که به Dim برسه.
برای همین در VBA این کد :
Dim i As Integer
For i = 1 To 2
Dim x As New MyList
Next i
معادل این کد نیست :
Dim i As Integer
Dim x As MyList
For i = 1 To 2
Set x = New MyList
Next i
شما چون در حلقه تون O رو با Set O = New MyList تجدید نمی کنید در کل حلقه d دارید صرفا با یک MyList کار می کنید که داخل حلقه تعویض نمیشه، صرفا همون بار اول موقع تعریف شدن New شده.
برای همین همه آیتم های درج شده یک شیء واحد هستند.