En este ejemplo veremos c�mo mover (arriba y abajo) los elementos de un listbox.
Para el ejemplo necesitar�s un form en el que haya un listbox (List1) y un array con dos botones (cmdMover())Cuando se pulse en el primer bot�n (�ndice cero), se desplazar� el elemento seleccionado hacia arriba y si se pulsa en el otro, el desplazamiento se har� hacia abajo.
Vamos a ver el aspecto del form de prueba:
Este es el c�digo que se usa para desplazar los elementos, si quieres puedes descargar el ejemplo completo pulsando en el link que hay al final de la p�gina.
Private Sub cmdMover_Click(Index As Integer) 'Acci�n con los botones Dim j As Long Dim sTmp As String j = List1.ListCount - 1 'Si no hay elementos en la lista, salir 'Corregido, antes pon�a If j = 0 y no era correcto If j < 0 Then Exit Sub 'El elemento seleccionado j = List1.ListIndex 'Si no hay elementos seleccionados, se usar� el primero If j < 0 Then j = 0 Select Case Index Case 0 'Subir 'Si es el primero, nada que hacer If j = 0 Then Exit Sub 'Intercambiar los elementos sTmp = List1.List(j) List1.List(j) = List1.List(j - 1) List1.List(j - 1) = sTmp 'marcar el nuevo elemento seleccionado List1.ListIndex = j - 1 Case 1 'Bajar 'Si es el �ltimo, nada que hacer If j = List1.ListCount - 1 Then Exit Sub 'intercambiar los elementos sTmp = List1.List(j) List1.List(j) = List1.List(j + 1) List1.List(j + 1) = sTmp 'marcar el nuevo elemento List1.ListIndex = j + 1 End Select End SubEspero que este sencillo truco te sirva para dar m�s funcionalidad a tus listbox.
NOTA 19-May-98: Gracias a Alvaro Manera por indicarme esto que te pongo a continuaci�n y un "fallillo" a la hora de comprobar si no hay elementos, este �ltimo detalle est� corregido en el listado anterior.
Si usas un ListBox con la propiedad MultiSelect distinta de cero, tendr�s que quitar/poner el elemento seleccionado, para que se "desplace" visualmente...
A�ade esta l�nea antes del List1.ListIndex = j - 1, incluso puedes quitar esta l�nea aunque el ListBox no sea MultiSelect, ya que de esta forma tambi�n se seleccionaList1.Selected(j) = False List1.Selected(j - 1) = TrueY d�nde est� List1.ListIndex = j + 1, a�ade estas otras, por supuesto que esto tambi�n puedes quitarlo y dejar s�lo las nuevas l�neas que te muestro a continuaci�n:
List1.Selected(j) = False List1.Selected(j + 1) = True
Si quieres ver los listados para probar esto, pulsa en este link (lst_mover.zip 1.58 KB)