Mensaje enviado por "TONI.SUAREZ" <toni.suarez@terra.es>
Te paso una función que sirve para ordenarlo...
Adaptala a tus necesidades, pero funciona.
Public Sub Ordenar(arr As Variant, numels As Long, descendente As Boolean)
Dim indice As Long, indice2 As Long, primerelem As Long
Dim distancia As Long, valor As Variant
If VarType(arr) < vbArray Then Exit Sub
primerelem = LBound(arr)
Do
distancia = distancia * 3 + 1
Loop Until distancia > numels
Do
distancia = distancia \ 3
For indice = distancia + primerelem To numels + primerelem - 1
valor = arr(indice)
indice2 = indice
Do While (arr(indice2 - distancia) > valor) Xor descendente
arr(indice2) = arr(indice2 - distancia)
indice2 = indice2 - distancia
If indice2 - distancia < primerelem Then Exit Do
Loop
arr(indice2) = valor
Next
Loop Until distancia = 1
End Sub