I'm not sure you can do it exactly like this. When you call test2, it calls sub1 which updates oldCol. But oldCol is just a reference to the original collection col. The variable col is also a reference, initially to the same collection, but making oldCol point to a new collection doesn't change what col points at.
You need some sort of common variable that both the main program and the class can both see if you want this to work. For example, you could have the main program not keep its own reference to the collection and have the class expose oldCol publicly. Or you could use a global variable (as much as I prefer to avoid them).
Rod Stephens, Visual Basic MVP
*** New Book ***
"Visual Basic 2008 Programmer's Reference"
Sign up for the free VB
Helper Newsletters at http://www.vb-helper.com/newsletter.html