List box seleccion multiple excel vba

En un formulario de excel(userform) tengo un cuadro de lista o list box donde me muestra varios productos(tomados de un rango); quiero que al seleccionar varios productos, estos se guarden en una celda separado por "coma", pero que a su vez cuando seleccione dicha celda o abra el listbox, queden resaltados los productos que acabe de colocar en dicha celda, al igual deseo colocar un botón en dicho formulario para que me seleccione todos los productos o elementos del list box.

1 respuesta

Respuesta
1

La primera parte, pasar los productos seleccionados a la celda "D3":

Private Sub CommandButton1_Click()
'---
'   Por.Dante Amor
'---
    '
    cad = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            cad = cad & ListBox1.List(i) & ", "
        End If
    Next
    If cad = "" Then
        MsgBox "No hay productos seleccionados"
    Else
        cad = Left(cad, Len(cad) - 2)
        Range("D3") = cad
    End If
End Sub

La segunda parte, leer la celda "D3" y marcar los productos en el listbox:

Private Sub CommandButton2_Click()
'---
'   Por.Dante Amor
'---
    '
    lista = Split(Range("D3"), ",")
    For i = 0 To ListBox1.ListCount - 1
        valor = ListBox1.List(i)
        ListBox1.Selected(i) = False
        For j = LBound(lista) To UBound(lista)
            If valor = WorksheetFunction.Trim(lista(j)) Then
                ListBox1.Selected(i) = True
            End If
        Next
    Next
End Sub

La tercera parte, seleccionar todos los productos del listbox

Private Sub CommandButton3_Click()
'---
'   Por.Dante Amor
'---
    '
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola Dante buen dia;  se Genera el error "no se encuentra la variable lista" para la segunda parte de tu código requiero que se ejecute en la celda activa, no solo en "D3"; ej: si me posiciono o hay datos en "x3" que se resalten los productos en el listbox de esa celda.

Gracias

Te anexo el código para la parte2

Private Sub CommandButton2_Click()
'---
'   Por.Dante Amor
'---
    '
    'lista = Split(Range("D3"), ",")
    lista = Split(ActiveCell.Value, ",")
    If UBound(lista) = -1 Then Exit Sub
    For i = 0 To ListBox1.ListCount - 1
        valor = ListBox1.List(i)
        ListBox1.Selected(i) = False
        For j = LBound(lista) To UBound(lista)
            If valor = WorksheetFunction.Trim(lista(j)) Then
                ListBox1.Selected(i) = True
            End If
        Next
    Next
End Sub

Si tienes problemas dime qué mensaje de error completo te aparece, en qué fila de la macro se detiene, qué dato tienes en la celda, entre más información y ejemplos reales me indiques, más práctico será entregar las soluciones.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas