Saltar al contenido

filtrar tabla a partir de opciones seleccionadas en un listbox


Recommended Posts

publicado

Tengo un listbox que tiene como opciones diferentes paises, y necesito que al seleccionar 1 o mas paises de ese listbox me aplique el filtro de esas selecciones en una tabla.

la tabla la tengo en la hoja 4 y la columna 7 es la correspondiente a ciudades. lo que necesito es que, si yo selecciono, Argentina, Argelia y Angola, me aplique dicho filtro en la tabla que tengo en mi hoja4

Private Sub GenerarInforme_Click()

Dim elementoLista As Long
Dim arreglo As Variant

With ListBox1
            
    For elementoLista = 0 To .ListCount - 1
        If .Selected(elementoLista) Then
            If ListBox1.Selected(elementoLista) = True Then
            seleccionados = seleccionados + 1
            End If
            
               Dim ary(1 To seleccionados) As String
                
            If seleccionados = 1 Then coma = "" Else coma = ","
            arreglo = arreglo & .List(elementoLista) & vbCrLf
            
            ary(seleccionados) = arreglo
        End If
    Next elementoLista
End With

If Len(arreglo) = 0 Then
    MsgBox "No hay elementos seleccionados"
End If

Hoja4.Range("rango").AutoFilter _
 Field:=7, _
 Criteria1:=Array(ary), _
 Operator:=xlFilterValues

End Sub

Este es el código que estoy utilizando pero siempre me filtra en blanco, es decir, no me selecciona ningún país. De antemano, muchas gracias.

publicado
Hace 3 minutos , wilmersaz dijo:

Este es el código que estoy utilizando pero siempre me filtra en blanco, es decir, no me selecciona ningún país

Sube tu fichero, si no es imposible ayudar sin saber dónde están los datos y porqué no te filtra

publicado

Ya lo solucione de la siguiente manera:

Private Sub GenerarInforme_Click()

Dim elementoLista As Long
Dim arreglo As Variant

With ListBox1

    For elementoLista = 0 To .ListCount - 1

            If .Selected(elementoLista) = True Then
            seleccionados = seleccionados + 1
            
            Dim ary(1 To 100) As String
            
            arreglo = .List(elementoLista)
            ary(seleccionados) = arreglo
        End If
    Next elementoLista
End With

If Len(arreglo) = 0 Then
    MsgBox "No hay elementos seleccionados"
End If
   
Hoja4.Range("BASE").AutoFilter _
 Field:=7, _
 Criteria1:=Array(ary), _
 Operator:=xlFilterValues

End Sub

cambié esta linea

Dim ary(1 To seleccionados) As String

por esta

Dim ary(1 To 100) As String

y esta linea

arreglo = arreglo & .List(elementoLista) & vbCrLf

por esta otra

arreglo = .List(elementoLista)

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.