I just tried something else ...
if you replace the for loop in the example I provide with this:
...
For i = 1 To 20
Set item = .ListItems.Add(, , "Record" & Str(i))
Call item.ListSubItems.Add(, , , "one")
Call item.ListSubItems.Add(, , , "two")
Call item.ListSubItems.Add(, , , "three")
Next i
...
You'll find it works too.
Obviously in your working code you'll want to use indexes etc. (columnheader objects as well as listitems, and subitems) -- I didn't bother for this little exercise.