Thanks, but comments like that will surely make me big headed
Once I attempted the problem for myself I saw where the difficulty was.
Because you were stripping out the contacts that hadn't got a number, this meant that the Items in the ListBox containing the names was no-longer concurrent with the PIM Items.
You could also try using FindItem to locate the last name of the contact etc. But as this requires some string manipulation and relies on contacts having a unique last name (not always the case when you look at Aunts, Uncles and Cousins etc), which is why I deemed an ArrayList to be a much more simple solution.
Also note that you only need to initialise the objects once, and if required you can dispose of them when you've finished with them.
Regards,
RandomCoder