jejeje, que bueno que U_G no leyó lo primero o me hubiera "cotorreado" mucho, jejeje
Bueno, yo no soy muy partidario de "solucionar" las cosas sin entender bien el por que tenian un problema, el bluque FOR que te quita el problema es por que lo inicias del 1 en lugar de 0, entonces supongo que no entra al ciclo y por eso la consulta a sp(0) ya no marca error.
En un post tu pusiste como ejemplo esto:
CAL FEITIS X 25 KG--25|HIERRO TORS. 10 mm--5|MINETTI CEMENTO X 50KG--2|
Deduzco que el problema es que tu cadena termina con pipe (|), entonces el SPLIT genera una última casilla "sin nada" y el segundo split tampoco genera nada, y claro es que la referecia a cualquier subindice marque error.
La solución sería formatear el parámetro para que no termine con el pipe.
Saludos y gracias