Cambiar el orden de los item en un listbox

Tengo un listbox y he colocado un SpinButton con la intención de cambiar el orden los ítem que he seleccionado para el listbox

He encontrado un código pero se limita a moverse por el listbox, es el siguiente:

Private Sub Form_Load()
   Dim i As Long
   For i = 1 To 10
      ListBox2.AddItem "Item " & Chr(64 + i)
   Next
End Sub
Private Sub SpinButton2_SpinDown()
   Dim SelIndex         As Long
   Dim Temp             As String
   SelIndex = ListBox2.ListIndex
   If (SelIndex >= 0) And (SelIndex < ListBox2.ListCount - 1) Then
      Temp = ListBox2.List(SelIndex + 1)
      ListBox2.List(SelIndex + 1) = ListBox2.List(SelIndex)
      ListBox2.List(SelIndex) = Temp
      ListBox2.ListIndex = ListBox2.ListIndex + 1
   End If
End Sub
Private Sub SpinButton2_SpinUp()
   Dim SelIndex         As Long
   Dim Temp             As String
   SelIndex = ListBox2.ListIndex
   If SelIndex > 0 Then
      Temp = ListBox2.List(SelIndex - 1)
      ListBox2.List(SelIndex - 1) = ListBox2.List(SelIndex)
      ListBox2.List(SelIndex) = Temp
      ListBox2.ListIndex = ListBox2.ListIndex - 1
   End If
End Sub

¿Qué modificaciones debo hacer en el código para que modifique el orden de los item, subiéndolo o bajándolo a lo largo de la lista? O otra solución alternativa?

1 Respuesta

Respuesta
2

H   o la:

Ya probé el código y lo que hace es mover un item hacia abajo o hacia arriba. Cuando lo ejecuto me llena el listbox con los item desde A hasta el J, selecciono el Item B, presiono el spin para bajar y mueve el Item B debajo del Item C.

¿Eso es lo que necesitas? ¿O qué es lo que quieres que haga el spin?

Hola Dante Amor

En mi caso, solo se desplaza por el listbox y me permite seleccionar un item sin tener que pincharlo con el ratón, pero no mueve el item ni hacia arriba ni hacia abajo que es lo que yo realmentr quiero, algo debo hacer mal

Porque especificas desde A hasta el item J, Dante Amor?

Esto es lo que me carga:

En mi caso, tengo que seleccionar el item con el mouse y después lo puedo mover con el botón spin

Ya he detectado el problema

Es cierto  que modifica el orden!, pero para mi pasaba inadvertido porque en mi listbox tengo 2 columnas, en la primera el código y en la segunda el nombre del item, y fallo mio, pasaba inadvertido el cambio pk sólo me fijaba en la columna del nombre, pero ahora que me fijo bien si modifica el orden en la columna 1.

¿Cómo puedo modificarlo para que modifique el orden de ambas columnas a la vez? ya que cada código va unido a dicho nombre!! y será lo que luego pasare a la planilla

Gracias!!!!

Así:

Private Sub SpinButton2_SpinDown()
   Dim SelIndex         As Long
   Dim Temp             As String
   SelIndex = ListBox2.ListIndex
   If (SelIndex >= 0) And (SelIndex < ListBox2.ListCount - 1) Then
      Temp = ListBox2.List(SelIndex + 1)
      Temp2 = ListBox2.List(SelIndex + 1, 1)
      ListBox2.List(SelIndex + 1) = ListBox2.List(SelIndex)
      ListBox2.List(SelIndex + 1, 1) = ListBox2.List(SelIndex, 1)
      ListBox2.List(SelIndex) = Temp
      ListBox2.List(SelIndex, 1) = Temp2
      ListBox2.ListIndex = ListBox2.ListIndex + 1
   End If
End Sub
Private Sub SpinButton2_SpinUp()
   Dim SelIndex         As Long
   Dim Temp             As String
   SelIndex = ListBox2.ListIndex
   If SelIndex > 0 Then
      Temp = ListBox2.List(SelIndex - 1)
      Temp2 = ListBox2.List(SelIndex - 1, 1)
      ListBox2.List(SelIndex - 1) = ListBox2.List(SelIndex)
      ListBox2.List(SelIndex - 1, 1) = ListBox2.List(SelIndex, 1)
      ListBox2.List(SelIndex) = Temp
      ListBox2.List(SelIndex, 1) = Temp2
      ListBox2.ListIndex = ListBox2.ListIndex - 1
   End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas