Beh, ovviamente se modifichi parte del codice è ovvio che puoi avere malfunzionamenti, ma si deve capire il perché.
Il fatto è sostanzialmente che il codice non è chiaro ...
1) modifichi il valore dell'indice dela For I all'interno del ciclo mentre questo sta operando (non è un buona regola di programmazione)
2) è ovvio che all'uscita dal ciclo for J sia arrivato oltre il valore di ListBox1.Items.Count-1 e quindi che a quel punto non debba essere utilizzato come valore indice della stessa listbox (è la base di funzionamento della For..Next, in VB5 come in tutte le altre versioni)
3) la If (Y = 1) = True non ha senso ... basta scrivere If Y = 1 e funziona ugualmente.
E' anche importante capire come hai dichiarato tutte le variabili all'inizio.