I have a suggestion that would make all this 100x simpler. Use a List(Of T) instead of arrays. The List(Of T) has methods to remove elements from it. That code you posted is the kind of thing you'd do in VB6. You don't have to torture yourself like that in VB.Net.