Probabilmente il programma non entra neanche nel ciclo

Do While contatore <= frmScansione.lstScansioneFinale.ListCount

e per capire il perche' bisogna sapere di che tipo e'

contatore

se viene inizializzato prima del ciclo ad un valore specifico e, soprattutto, quanto vale

frmScansione.lstScansioneFinale.ListCount

nel momento in cui inizia il ciclo stesso.

Puoi avere queste informazioni anche eseguendo il codice in debug e fermandolo proprio nella linea del do while