potrebbe essere un errore dovuto al fatto che quando elimini una riga dalla list NON si aggiornano gli estremi del ciclo for e quindi, essendo diminuito il numero di righe nella lista, gli ultimi indici non esistono. Potresti provare "invertendo" il ciclo
codice:
For i = lstCategorie.ListCount - 1 downTo 0
If lstCategorie.Selected(i) = True Then
qRimozione = "SELECT * FROM ImpoCategorie WHERE IDCategoria =" & lstCategorie.ItemData(lstCategorie.ListIndex)
RsRimozione.Open qRimozione, Cn, adOpenDynamic, adLockOptimistic
lstCategorie.RemoveItem (lstCategorie.ListIndex)
RsRimozione.Delete
RsRimozione.Update
RsRimozione.Close
Exit For
End If
Next i