Ordenar datos de listbox según condición

Mis agradecimeintos por el conocimiento que me aportan con cada una de sus respuestas.
Mi problema es el siguiente tengo un listbox con 2 columnas así:
la primera son datos de texto y la segunda son datos numericos
DOCUMENTO       FOLIO
hoja de vida          3
rut                         2
cedula                    5
pasado judicial       4
deseo colocar un combobox q tenga dos opciones:
1. Ordenar Alfabéticamente por la primera columna (TEXTO) y al escoger la opción me los organice en forma ascendente y me quede así:
Documento folio
Cedula                   5
Hoja de vida 3
Pasado judicial 4
rut                         2
2. Ordenar en orden ascendente por la segunda columna (NUMÉRICO) y me ordene os datos del listbox en forma ascendente p
DOCUMENTO FOLIO
Rut                                    2
Hoja de Vida                     3
Pasado Judicial                  4
Cedula                               5
Gracias por la atención prestada y el tiempo que dedicas a responder mi pregunta. Bendiciones

1 respuesta

Respuesta
2
Los Listbox no es posible ordenar los datos si no ordenas previamente estos en la hoja, los datos en el Listbox te los muestra tal cual aparecen en la hoja no es posible ordenarlos dentro de control y que en la hoja se queden tal cual los tienes.
Necesitaríamos copiar todo el rango de valores y utilizar o bien otra hoja u otra parte de la hoja que no utilices para llevarnos los valores allí y ordenarlos previamente y después mostrarlos en el Listbox ya ordenados.
Tu dirás si te sirve la solución.
>Un saludo
>Julio
Gracias por la respuesta.
Pero como me comentas en tu respuesta. Si existe una manera enviando los datos que se cargan al listbox a otra parte y ordenarla y después volverlo a cargar me sirve. Necesitaría el código que hiciera eso.
Gracias
No entiendo que en la otra consulta me pusieras esto:
Gracias, pero esperaba el código para la respuesta que propusiste. Bendiciones
Y la puntuaras con un 3 sin tener contestación, que querías que en las dos consultas te contestara con el código... el error de poner 2 veces la misma consulta fue tuyo no mio, y pienso que con contestarte en una consulta es suficiente.
Vamos con el código, para realizar esto se me ocurre que como tienes 2 opciones que tu elegirás pongas 2 botones en el userform uno que sea para ordenar el texto y otro para ordenar los números, de esta manera el código sería este para los diferentes controles, suponemos que tienes los datos desde A1 hasta B5 (con las cabeceras que pusiste):
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.RowSource = "A2:B5"
End Sub
Al iniciar el Userform ya se carga el Listbox en 2 columnas con el rango definido
Private Sub CommandButton1_Click()
 Range("A1:B5").Select
    Selection.Copy
    Range("D1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
ComboBox1.RowSource = "$D$2:$E$5"
End Sub
Este botón copia tu rango a la celda D1 lo ordena por el Texto de forma ascendente y carga el Combobox con el rango ordenado.
Private Sub CommandButton2_Click()
Range("A1:B5").Select
    Selection.Copy
    Range("D1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
ComboBox1.ColumnCount = 2
ComboBox1.RowSource = "$D$2:$E$5"
End Sub
Y este botón copia tu rango lo lleva a D1 y lo ordena por el valor numérico de forma descendente y lo carga en el Combobox ya ordenado.
Si quieres puedes poner un botón de limpiar que elimine los valores del rango donde lo copiamos (D1:E5 en este caso) para que tu hoja de Excel no queden los datos copiados.
Espero que te sirva, si es así comenta, puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas