Io vedo già un problema in questa impostazione.
Ogni cosa dovrebbe avere una sola (e singola) responsabilità. Se hai creato una Sub che spezzetta una stringa, fatti restituire da essa i pezzi o comunque i dati che ti servono, e poi fa in modo che il Form nel quale è presente la ListView recuperi queste informazioni e in base ad esse vada a riempire il controllo.
In tutti i casi, non ha senso che una funzione faccia più cose, e soprattutto avere una funzione che elabora la stringa mettendo i dati su un Form o un suo controllo: se un domani i dati vanno mostrati in una griglia, devi cambiare la logica che interpreta la stringa anche se dovresti evitare di farlo, e inoltre - come in questo caso - non si può determinare se il problema sta nella corretta intepretazione della stringa o nella corretta impostazione del controllo.
Dividi le implementazioni e vedrai che questo sarà già di aiuto per risolvere il problema.
Ciao!![]()