Ho avuto anche io lo stesso problema ma lo ho risolto abbandonando la funzione split a favore di instr e mid.
la prima ti trova il carattere nella stringa la seconda legge da una determinata posizione in avanti
E' macchinoso ma almeno l'errore a me non si è più verificato.

ex.

posizione=instr(var,"|")
if (posizione > 1) 'verifico che non sia vuota
then
etc.
ciccio = mid(var,1,posizione-1) 'prima parte della stringa
pasticcio = mid(var,posizione) 'seconda parte della stringa

adesso lo ho fatto senza verificare magari al posto dell'1 ci vuole 0 non sono così calcolatore prova e basteranno pochi aggiustamenti

Penso che split non funzi se ci sono più ricorrenze