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

    • Saludos Estimados, tengo una función que al imprimir me guarda información y datos de algunas celdas de un formulario abierto, en un archivo (dato2.txt), este archivo contiene mucha información que se ha almacenado desde hace mucho tiempo, este archivo de texto es abierto de vez en cuando para verificar la información allí guardada, pero en algunas ocasiones se ha visto modificado por las personas que lo abren, por lo que se me ocurre generar uno nuevo con la misma información, es decir tener dos archivos idénticos pero que la información se cargue idéntica, no hago copia y paste del archivo ya creado porque aunque la información guardada esta guardada, necesito el otro de respaldo, o si me dan otra idea de como crear este doble respaldo estaré gustoso de aceptar sus opiniones. adjunto las instrucciones que me generan el respaldo permanente Private Sub Workbook_BeforePrint(Cancel As Boolean)Dim Archivotxt As StringSet fs = CreateObject("Scripting.FileSystemObject")Archivotxt = "C:\Varios Excel\dato2.txt" '<---Ruta y nombre del Txt  creadoIf Len(Dir(Archivotxt)) = 0 ThenSet a = fs.CreateTextFile(Archivotxt, True)a.CloseEnd IfSet a = fs.OpenTextFile(Archivotxt, 😎texto = Range("T17").Value & " ; " & ActiveWorkbook.Name & " ; " & ActiveSheet.Name & " ; " & Range("f15").Value & " ; " & Format(Range("F17").Value, "dd/mm/yyyy") & " ; " & Format(Range("j17").Value, "h:mm:ss AM/PM")a.WriteLine (texto) '<-----celda que se escribe en el Txt, se escribe en un renglon del txta.CloseSet fs = NothingSet Archivo = Nothing    gracias de antemano  
    • Expertos saludos a todo de esta comunidad informática, mi duda es que no logro ubicar si fuera un error o desbordamientos de código, lo que pasa es que me funciona muy bien la macro realizar los reportes por cada alumno, el detalle es que cuando en algunos reportes los criterio evaluación no coinciden cada criterio no lo esta tomando bien  para sacar el total, tengo mas de 30 alumnos por cada archivo, me tomado el afán de revisar cada reporte en algunos reportes del alumno lo cuadra muy bien la sumatoria pero en algunos reportes no los toma bien el total sale mas a en otros casos menos  no lo generando la sumatoria de acuerdo a los criterios eso es el único detalle que me sale en mi registro de correspondencia....Adjunto el archivo por favor. muchas gracias a la comunidad.      Rubricas 1 A 1 Primaria V2.xlsm
    • Checa el archivo   Saludos, Copia de PonerContraseñaBoton.xlsm
    • ¡Hola a todos! @Cristian 1985:  Debes tener en cuenta que en la función INDICE, el argumento 0 hace que la función devuelva TODOS los valores de la columna a analizar (puedes probar con una función en modo edición, y presionar F9 para que lo constates). @victorjavega:  Cristian si escribió bien mi nombre (eso hizo que me fijara en el tema).  Tu llamaste a un "tocayo"... 😂 Para la propuesta, no necesitas ningún tipo de macros.  Simplemente un control de formulario (control número), vinculado con la celda donde está el mes. Mejoré la fórmula que tenías en la selección del mes, además de la fórmula original, donde combino INDICE - COINCIDIR - INDICE.  Revisa el adjunto.  ¡Bendiciones! Calendario_aulas.xlsx
    • Gracias por millones Toni, muy amable.
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy