Hay algo que no tienes en cuenta:
Estas usando un bucle
FOR, el cual va desde
0 hasta
(listcount - 1).
El problema es que
(listcount - 1) se evalúa la primera vez que entras al FOR.
Entonces, si eliminas elementos de la lista, llegará el momento en que el indice que usas, no será válido.
La solucion es usar un while con un indice que se incremente sólo cuando no debes borrar, osea:
Dim x As Long
x = 0
Do While x <= (List1.ListCount - 1)
If List1.List(x) = "" Then
List1.RemoveItem (x)
Else
x = x + 1
End If
Loop
Saludos!