asumo que cada vez que le dez a el encabezado de la columna se ordena !? si es asi preba esto:
Private Sub LstPrecios_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Select Case ColumnHeader
Case “Encabezado de la columna que tenga los numeros”
For Ds = 1 To RgsT
LstX.ListItems.Item(Ds).SubItems(4) = String$(20 - Len(LstX.ListItems.Item(Ds).SubItems(4)), "0") & LstX.ListItems.Item(Ds).SubItems(4)
Next
If LstX.SortOrder = lvwAscending Then
LstX.SortKey = 4
LstX.SortOrder = lvwDescending
Else
LstX.SortKey = 4
LstX.SortOrder = lvwAscending
End If
For Ds = 1 To RgsT
LstX.ListItems.Item(Ds).SubItems(4) = FormatNumber(LstX.ListItems.Item(Ds).SubItems(4), 2)
Next
End Select
End Sub