I'm not really sure why but I always get a significant speed boost if I break the operation up.

What I mean is have the first function load al the data into a UDT (with the split function)

the set the list view to visibility off, loop the UDT into the list view using the "With" keyword, (display a bar graph updated every 100 records if there are a lot of records) then then show the list view again.

You tend to find the the list view flickers once and the data's loaded, very quick