View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
deltaquattro deltaquattro is offline
external usenet poster
 
Posts: 65
Default Problems in copying a Collection to another and removing elementsfrom two Collections

Hi, Peter,

thanks for the answers:

1. yes I forgot to specify that I was referring to a collection of
objects. Which are the other way to do a "deep" copy which you are
referring to? Could you give me some details?

2. Oh, right, didn't think of that :) thanks!

Best Regards

Sergio

On 11 Mar, 17:32, "Peter T" <peter_t@discussions wrote:
Re 1.
Yes, that is assuming your collection refers to objects (well, there are
other ways but no need to go there).

Re 2.
Loop backwards
For I= c1.Count to 1 step -1

Regards,
Peter T

"deltaquattro" wrote in message

...

Hi,


two questions on Collections:


1. in VBA, the only way to copy the items (not just the references) of
a collection c1 to another collection c2 is to go through each element
of c1 with a For Each Next and Add each item to c2, right?


2. I have a collection c1 containing some objects to be deleted (the
ones for which the Defective property is True). I want to delete them
from c1 and at the same time to delete the objects in the same
position from another collection c2. *See code below:


Sub RemoveDefectivesfromColns(c1 As Collection, c2 As Collection)
Dim obj as Object, I As Long


For I=1 to c1.Count
* * *Set obj =c1(I)
* * *If obj.Defective Then
* * * * * *c1.Remove I
* * * * * *c2.Remove I
* * *End If
Next I
End Sub


Problems: number of elements in c1 and c2 is changing as the cycle
goes on, so sooner or later the Remove method will fail (because I
exceeds the number of remaining elements in c1 and c2). How can I
solve this? Also, is there a way to do this with a For Each In Next?
Would it be faster? Thanks,


Best Regards


deltaquattro


c1.Add Item:="woof"


Set c2=c1


makes