Selección ordenada de datos de un listbox

He implementado un formulario con un listbox en una hoja Excel, para acelerar la carga de datos en la misma, puesto que tengo de un número bastante elevado de artículos. Para ello, he empleado el siguiente código:

Dim ele As Long, con As Integer, fila As Long
con = 0
For ele = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(ele) = True Then
con = con + 1
End If
Next ele
If con = 0 Then
Exit Sub
End If
con = 0
fila = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
For ele = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(ele) = True Then
con = con + 1
End If
Next ele
If con <> 0 Then
For ele = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(ele) = True Then
ActiveSheet.Cells(fila, "A") = ListBox1.List(ele)
fila = fila + 1
End If
Next ele
End If

Evidentemente, y por resumirlo un poco, si yo selecciono (por poner un ejemplo) los elementos: A, B, C y D del listbox, los pasa a las celdas en ese orden, pero yo quiero saber si es posible que me los pase en el mismo orden en el que yo los selecciono.

Si selecciono esos mismos elementos, pero en la secuencia B, D, A, C, a ver si es posible que en ese mismo orden los traspase a las celdas.

1 Respuesta

Respuesta
3

En primer lugar no entendí porqué recorres 3 veces el mismo bucle.

Pero yendo a la pregunta en concreto, no es posible que Excel recuerde el orden de la selección en una selección múltiple de un listbox... lo que te sugiero es que a medida que selecciones un item (puede ser con doble clic) vayas alimentando una pequeña lista auxiliar.

Necesitarás darle la opción de quitar algún elemento a la 2da lista... y una vez correcta volcar a la hoja en ese orden.

Adjunto una imagen para reflejar la idea:

Espero te sirva la idea.

Sdos. No olvides valorar la respuesta si el tema queda resuelto.

Completando un poco más la respuesta, tendrías otras opciones como x ejemplo volcar en la misma hoja a medida que vas seleccionando, o guardandolo en una cadena... pero con estas opciones se te complicará al momento en que necesites quitar alguna selección o se te quita por error.

A la 2da lista incluso se le pueden agregar flechas arriba-abajo para cambiar el orden de los elementos.

Con respecto a la repetición del bucle, no es necesario que primero recorras la lista contando la cantidad de seleccionados ... y luego volver a recorrerla si hay items seleccionados... para eso directamente ejecuta lo que necesitas con cada item seleccionado si los hay.

Sdos!

Estimada Elsa:

Agradezco tu rápida respuesta.

El código está así, porque lo aproveché de alguna página, y no estaba del todo seguro si "adelgazarlo" un poco, o no. Ante la duda, lo dejé así, que tampoco me molesta tanto, jeje.

La solución que me planteas, me gusta. Seguramente, dentro del mismo Userform donde tengo el Listbox, cree esa ventana a la derecha como en tu ejemplo, y allí pueda ordenar los elementos seleccionados.

Buena solución. Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas