Jump to content

Filtrar listbox utilizando un combo box dinámico


Go to solution Solved by JSDJSD,

Recommended Posts

Estimados, esperando que todos se encuentren muy bien en estos días dificiles, les escribo para que puedan ayudarme con vuestro conocimiento respecto al tema del título: Requiero realizar un filtro en un combo box en base a un list box, el cual debe actualizarse cada vez que se ingresa nueva información a la plantilla.

He estado trabajando en base a unos códigos que un canal de excel ha colgado en internet. El tema es han explicado como filtrar un listbox en base a un text box y se me ha ocurrido la idea de hacerlo a través de un combo box. Resultado: No he podido imaginarme como.

Mi primera duda es: Como puedo asignar un RowSource a una columna que va aumentando la cantidad de datos que incluye pero que tampoco se repitan

Mi Segunda duda: Como enlazar el listbox con el combo box, escasamente lo he intentado en el archivo que les adjunto, sin ningún resultado. Lo que busco es filtrar por el número de licitación al cual está asignado cada grupo de limpieza.

Espero puedan ayudarme con la tarea que intento llevar a cabo. Estaré atento a las dudas que aparezcan y a aclarar si es que consideran que mi punto no se entiende.

 

Agradecido de vuestra ayuda,

Saludos desde Chile.

Felipe.

 

 

listbox-combobox.xlsm

Link to post
Share on other sites

Estimado @JSDJSD, agradezco mucho tu colaboración!

En parte, soluciona una de mis dudas, ya que me has ayudado a lograr que se enlace el filtro por combo box y se filtre en el list box, y que además el combo box sea dinámico cada vez que se agregan nuevos datos.

Me falta otra duda por solucionar: Es muy probable que el nombre de la persona se vuelva a repetir, y solo cambiará la fecha, licitación y programa. En ese caso, he notado que el filtro comienza a repetir los nombres cada vez que vuelven a incluirse en la columna B.

Conoces de algún método en el que se puedan quitar los duplicados para garantizar una búsqueda eficaz? 

Te adjunto el archivo en donde he repetido los mismos nombres.

PS: Noté además, que en el listado del combo box aparece "Persona" como un nombre. Eso lo quitamos con un Offset, verdad? Voy a ver si lo voy solucionando mientras.

Gracias!listbox-comboboxPrueba(1).xlsm

Link to post
Share on other sites
En 19/7/2020 at 1:04 , JSDJSD dijo:

No olvides agradecer a quien te ayuda o intenta ayudar, y en este foro es mediante el corazoncito que hay en la parte inferior derecha

 

JSDJSD intentand adaptar tu aporte a una necesidad

Private Sub ComboBox1_Change()
Dim Filas, i, ii As Integer

With Hoja2
    Filas = .Range("C" & Rows.Count).End(xlUp).Row
    ListBox1.RowSource = ""
    If ComboBox1.Value = "" Then Exit Sub
    ListBox1.AddItem
    For i = 6 To Filas
        If .Cells(i, 6) = ComboBox1 Then
            Me.ListBox1.AddItem .Cells(i, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(i, 1).Offset(0, 1) ' Aqui hay que configurar la columa (Columna 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(i, 1).Offset(0, 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(i, 1).Offset(0, 3)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = .Cells(i, 1).Offset(0, 4)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = .Cells(i, 1).Offset(0, 5)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = .Cells(i, 1).Offset(0, 6)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = .Cells(i, 1).Offset(0, 7)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = .Cells(i, 1).Offset(0, 8)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = .Cells(i, 1).Offset(0, 9)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 10) = .Cells(i, 1).Offset(0, 10)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 11) = .Cells(i, 1).Offset(0, 11)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 12) = .Cells(i, 1).Offset(0, 12)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 13) = .Cells(i, 1).Offset(0, 13)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 14) = .Cells(i, 1).Offset(0, 14)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 15) = .Cells(i, 1).Offset(0, 15)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 16) = .Cells(i, 1).Offset(0, 16)
        Else
        'No hacer nada
        End If
    Next i

    For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii

End With

End Sub


Private Sub UserForm_Initialize()


With Me.ListBox1
    .ColumnCount = 16
    .ColumnWidths = "20 pt; 120 pt; 50 pt; 60 pt"
    .RowSource = "'" & Hoja2.Name & "'!A5:P" & Hoja2.Range("A" & Rows.Count).End(xlUp).Row
End With

 ComboBox1.RowSource = "'" & Hoja2.Name & "'!C5:C" & Hoja2.Range("C" & Rows.Count).End(xlUp).Row



End Sub

No he sido capaz de comprender esta parte:

For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii

Podrías corregir mis errores.

 

Saludos

JB

Link to post
Share on other sites
Hace 6 horas, Jose BN dijo:

No he sido capaz de comprender esta parte:


For ii = 0 To 4
        ListBox1.List(0, ii) = .Cells(1, ii + 1)
    Next ii

Este ciclo es simplemente para poner el encabezado en el listbox.

con respecto a lo de adaptar sube tu archivo y comenta lo que necesitas.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hola @Greysi! Pude armar este listado en base a la información contenida en esta página. El Listado parece bastante completo (47.940 ciudades), al margen de ciertas excepciones (como Argentina que solo tiene 38 ciudades jajajaja) y contiene muchos nombres en inglés. Espero te sirva! Abrazo! Paises-Estados-Ciudades.xlsx
    • el inconveniente es , que deseo ingresar los datos en los textbox con separador de miles y que me ejecute los cálculos correspondientes 
    • gracias por la atención prestada. ingreso un valor en un textboxt (credito), y en otro le coloco los dias en que se va a demorar en devolverlo calculando asi +PRUEBA1.xlsm un interes de el 10% 
    • Saludos BigPetroman, te comento, el archivo que bajaste no tiene la modificacion, ya que cuando lo subi no tenia idea de como hacerlo. Despues de subir el archivo, busque informacion sobre el siguiente comentario que realizaste. Y logre hacer que funcionara, asi que puse el codigo de lo que habia hecho para que me dieran su opinion. Aunque el codigo realiza la validacion, no funciona del todo como yo queria. Ya que lo logico seria que al capturar el serial, haga la validacion y muestre un mensaje indicando que el serial ya esta auditado. Pero, la validacion, o aviso de serial ya auditado, lo muestra despues de apretar el boton "Anotar Entrada" De todos modos, anexo el archivo para que veas lo que logre. Los seriales los tomo de la Hoja "Laptop", asi que si el serial esta en esa hoja, no deja ingresar el valor en la Hoja "Reg. N_Auditados". Es decir, hace bien el trabajo... Agradecido de antemano, y pido disculpas si mi comentario genero confusion. Equipos No Auditados.xlsm
    • Hola de nuevo bigpetroman, el código es perfecto y rápido, pero necesito que en las Hojas 2 y 3, se peguen a partir de la fila 6 y no desde la fila 1, intento modificar el código pero me salta el depurador. Gracias de nuevo
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy