¿Como cargar varios Combobox para filtrar datos en listbox?

Hola Dante Amor!

Aquí, la nueva pregunta.

De antemano le agradezco el gran apoyo que sirva prestar a mi solicitud.

1 Respuesta

Respuesta
1

Te envié el archivo con la carga en los combos.

Se me ocurrió otra idea para hacerlo más rápido, realizar un filtro avanzado en cada columna y enviar a otra hoja los valores únicos, ya con los valores únicos hacer la carga de los combos con rowsource.

Falta que me digas cuál combo va con cual columna.

¡Gracias maestro! 

Pues bien estoy agregando el resto de lo combos con lo datos de las columnas correspondientes, en cuanto termine te lo regreso para su análisis.

Y por supuesto que si conoces una forma más ágil, eficaz y confiable, es bienvenida.

Mientras tanto, aprovecho la oportunidad para reiterarte mi admiración y respeto por tu enorme compromiso y entrega, así como el tiempo y la dedicación que compartes con tus semejantes.

Mil gracias por compartir tu conocimiento!

Recibe un abrazo cordial.

Jhonatan G.

Con este código cargas en el form PGO de 20 a 25 segundos

Private Sub UserForm_Activate()
'Por.Dante Amor
    cols = Array("C", "AB", "AA", "Z", "AC", "A", "E", "D", "F", "H", "G", "J")
    For i = 3 To ActiveSheet.UsedRange.SpecialCells(11).Row
        c = 0
        For j = 13 To 24
            agregar Me.Controls("ComboBox" & j), Cells(i, cols(c)).Text
            c = c + 1
        Next
    Next
End Sub
Sub agregar(combo As ComboBox, dato As String)
'por.Dante Amor agrega los item únicos y en orden alfabético
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
            Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub

Con este otro código, igual se cargan en el form PGO pero tarda 5 segundos.

Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h1 = Sheets("OBRAS")
    Set h2 = Sheets("temp")
    u = h1.UsedRange.SpecialCells(11).Row
    h2.Cells.Clear
    cols = Array("C", "AB", "AA", "Z", "AC", "A", "E", "D", "F", "H", "G", "J")
    j = 13
    For i = LBound(cols) To UBound(cols)
        h1.Range(cols(i) & "3:" & cols(i) & u).Copy h2.[A1]
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        h2.Range("A1:A" & u2).RemoveDuplicates Columns:=1, Header:=xlNo
        With h2.Sort
            .SortFields.Clear
            .SortFields.Add Key:=h2.Range("A1"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, _
                DataOption:=xlSortTextAsNumbers
            .SetRange h2.Range("A1:A" & u2)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        'Set rango = h2.Range("A1:A" & u2)
        Me.Controls("ComboBox" & j).List = h2.Range("A1:A" & u2).Cells.Value
        j = j + 1
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas