Macro para mostrar datos de varios items de listbox

-------------------------------

Hola
Necesito que me ayuden a completar un codigo que debe hacer lo siguiente
1. Tengo un combobox de donde selecciono cualquier dato
2. El dato seleccionado me muestra una lista en un listbox1
3. Con la opcion frmMultiSelectMulti selecciono varios items del listbox1
4. En el listbox2 se muestra los resultado del listbox1 pero solo se muestra de un solo item seleccionado
quiero que si selecciono dos, tres o cinco item (la cantidad que sea) se muestren los resultados de todos esos items al mismo tiempo en el listbox2
este es el codigo que uso

Private Sub ComboBox1_Change()
fi = 1
Me.ListBox1.Clear
If Me.ComboBox1.Value = Empty Then Exit Sub
'
Me.ListBox1.Clear
For i = 3 To Hoja19.Range("A" & Rows.Count).End(xlUp).Row
If LCase(Hoja19.Cells(i, 4).Value) Like "*" & LCase(Me.ComboBox1.Value) & "*" Then
existe = False
For j = 0 To ListBox1.ListCount - 1
If Hoja19.Cells(i, 3) = ListBox1.List(j, 0) Then
existe = True
Exit For
End If
Next
If existe = False Then
Me.ListBox1.AddItem Hoja19.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja19.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = fi
fi = fi + 1
End If
End If
Next i
Me.ListBox2.Clear
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Me.ListBox2.ColumnCount = 3
Me.ListBox2.ColumnWidths = "20 pt;275 pt;30 pt"

'Le digo cuántas columnas
ListBox1.ColumnCount = 3
'Asigno el ancho a cada columna
Me.ListBox1.ColumnWidths = "100 pt;50 pt;15 pt"
Dim LR&

Set ws1 = Sheets("Salidas")

Application.ScreenUpdating = False
With ws1
Set ws2 = Sheets("base")
Application.GoTo ws1.[a1]
LR = .Cells(Rows.Count, "a").End(xlUp).Row
ws2.[a1] = .[d2].Value
.Range("d2:d" & LR).AdvancedFilter 2, "", ws2.[a1], True
ws2.[a1].CurrentRegion.Sort ws2.[a1], xlAscending, Header:=xlYes
ComboBox1.List = ws2.[a1].CurrentRegion.Value
ComboBox1.RemoveItem 0

ws2.[e1] = ws2.[a1].Value
End With
Application.ScreenUpdating = True
Range("A3").Activate

End Sub
'
Private Sub ListBox1_Change()
Me.ListBox2.Clear
On Error Resume Next
f = 1

num = frm_Requi.ListBox1.List(frm_Requi.ListBox1.ListIndex, 0)
Set r = Hoja19.Columns("C")
Set b = r.Find(num, lookat:=xlWhole)
If Not b Is Nothing Then
celda = b.Address
Do
ListBox2.AddItem
ListBox2.List(ListBox2.ListCount - 1, 1) = Hoja19.Cells(b.Row, "A")
ListBox2.List(ListBox2.ListCount - 1, 2) = Hoja19.Cells(b.Row, "E")
ListBox2.List(ListBox2.ListCount - 1, 0) = f
f = f + 1
Set b = r.FindNext(b)
Loop While Not b Is Nothing And b.Address <> celda
End If

End Sub

Sub ajustar()
Sheets("Salidas").Select
Range("A1:H1").Select 'Indicar el rango deseado
ActiveWindow.Zoom = True
End Sub

1 Respuesta

Respuesta
1

Vastaria con que la instruction que dice limpia listbox2 la elimines

Private Sub ListBox1_Change()
' Me.ListBox2.Clear
On Error Resume Next
f = 1
    num = frm_Requi.ListBox1.List(frm_Requi.ListBox1.ListIndex, 0)
    Set r = Hoja19.Columns("C")
    Set b = r.Find(num, lookat:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address

 me.listbox2.clear

Esa parte le dice que borre el listbox ante de agregar los nuevos datos

Si te silves no olvides valora para cerrar la pregunta 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas