Ordenar una columna numerica de un listview
Pues eso que tengo un listview y tengo una columna en la que tengo solo datos numericos que me gustaria ordenar numericamente y no como un string.
¿Alguien sabe como?
¿Alguien sabe como?
Hola,
utiliza CInt para convertir el tipo string a integer y poder ordenarlo como números
Dim numero As String
numero = "0001"
MsgBox CInt(numero) --> 1
Para ordenar puedes utilizar varios métodos... si no van a ser muchos, muchos números puedes utilizar el método de la burbuja.
salu2
sdemingo
utiliza CInt para convertir el tipo string a integer y poder ordenarlo como números
Dim numero As String
numero = "0001"
MsgBox CInt(numero) --> 1
Para ordenar puedes utilizar varios métodos... si no van a ser muchos, muchos números puedes utilizar el método de la burbuja.
salu2
sdemingo
Este es el codigo que huso en el evento click del ColumnHeader para ordenar el listview, pero hace una ordenacion tratando los datos como string. Al rellenar el listview he provado a forzar a convertir el dato, pero no consigo nada. ¿Tengo que currarme la funcion completa de ordenacion?¿No hay ningun otro metodo?
With listview
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End With
With listview
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End With
El método de la burbuja no es más que esto...
For a = 0 To UBound(numeros)
For b = 0 To UBound(numeros)
If numeros(a) < numeros(b) Then
Copia = numeros(a)
numeros(a) = numeros(b)
numeros(b) = Copia
End If
Next b
Next a
salu2
sdemingo
For a = 0 To UBound(numeros)
For b = 0 To UBound(numeros)
If numeros(a) < numeros(b) Then
Copia = numeros(a)
numeros(a) = numeros(b)
numeros(b) = Copia
End If
Next b
Next a
salu2
sdemingo