Como paras de ListBox a ListBox

Me gustaría que al seleccionar una fila de 10 columnas en el listbox1 (en el evento ListBox1_Click) esta se añada en el listbox2. Esta operación se puede repetir varias veces. Digamos que es hacer una "lista de la compra" donde vas añadiendo artículos

Luego con un botón me cargue los datos de ese listbox2 en una hoja.

1 respuesta

Respuesta
6

Te paso la solución con un ejemplo. Estas son las macros necesarias para conseguirlo dentro de un formulario. Si quieres dime tu mail y te mando el archivo completo

Private Sub CommandButton1_Click()
ListBox2.Clear
End Sub
Private Sub ListBox1_Click()
posicion = ListBox1.ListIndex
ListBox2.AddItem ListBox1.List(posicion, 0)
e = ListBox2.ListCount - 1
ListBox2.List(e, 1) = ListBox1.List(posicion, 1)
ListBox2.List(e, 2) = ListBox1.List(posicion, 2)
ListBox2.List(e, 3) = ListBox1.List(posicion, 3)
ListBox2.List(e, 4) = ListBox1.List(posicion, 4)
End Sub
Private Sub UserForm_Initialize()
Sheets("hoja1").Select
Range("a2").Select
Do While ActiveCell.Value <> ""
ListBox1.AddItem ActiveCell
i = ListBox1.ListCount - 1
ListBox1.List(i, 1) = ActiveCell.Offset(0, 1)
ListBox1.List(i, 2) = ActiveCell.Offset(0, 2)
ListBox1.List(i, 3) = ActiveCell.Offset(0, 3)
ListBox1.List(i, 4) = ActiveCell.Offset(0, 4)
ActiveCell.Offset(1, 0).Select
Loop
End Sub

recuerda finalizar y puntuar la consulta

Perfecto!!!!!!!

Muchas gracias

Aprovechando tu generosidad quisiera hacerte 3 preguntas mas:

-Como puedo eliminar una fila de ese listbox2 después de seleccionarla y darle a un botón

-Como sumar todos los valores de una columna de ese listbox2

-Finalmente como pegar todos los datos del listbox2 en una hoja (Presupuesto)

Gracias y perdón por el abuso!!!

Te mando las soluciones cada una de ellas asociadas a un botón

Para borrar una línea seleccionada del listbox2:

Private Sub CommandButton2_Click()
For m = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(m) = True Then
ListBox2.RemoveItem m
End If
Next
End Sub

Para sumar una columna del listbox2 (en mi caso la 2)

Private Sub CommandButton3_Click()
For t = 0 To ListBox2.ListCount - 1
suma = suma + CDbl(ListBox2.List(t, 1))
Next
MsgBox "la suma de la columna 2 es de: " & suma
End Sub

Para crear un informe de todas las líneas del listbox2 en la hoja presupuesto

Private Sub CommandButton4_Click()
fila = 1
For r = 0 To ListBox2.ListCount - 1
Sheets("presupuesto"). Cells(fila, 1).Value = ListBox2.List(r, 0)
Sheets("presupuesto"). Cells(fila, 2).Value = ListBox2.List(r, 1)
Sheets("presupuesto"). Cells(fila, 3).Value = ListBox2.List(r, 2)
Sheets("presupuesto"). Cells(fila, 4).Value = ListBox2.List(r, 3)
Sheets("presupuesto"). Cells(fila, 5).Value = ListBox2.List(r, 4)
fila = fila + 1
Next
End Sub

recuerda finalizar y puntuar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas