You don't show the definition of MyList1 which makes it idfficult to know exactly what you've got but it appears as if it should be

[VBA]Public MyList1(lots,3) As String[/VBA]

The Sort routine is defined like this ...

[VBA]Public Function QuickSort2D(SortArray As Variant, _
SortField As Long, _
etc.[/VBA]

And you call it like this:

[VBA] ListBox1.List = QuickSort2D(MyList1, 4)[/VBA]

... sorting on column 4 out of 3. If you sort on column 0 (the surname) you might find it works better ...

[VBA] ListBox1.List = QuickSort2D(MyList1, 0)[/VBA]

However ... what I gave you in the first place will do the same thing. And both methods will still give you the problem with blank entries at the beginning.