You could take out all the interim End With and With statements.
Also, are you sure you want to keep re-assigning contract =
firstAddress, upgrade = firstAddress, and prepay = firstAddress every
time through the loops? I'm guessing you meant c.Address in each of
those statements.
Regards,
Nick Hebb
BreezeTree Software
http://www.breezetree.com