Filtrado de columnas en vba

Dante he visto que eres muy experto en VBA y quería saber si me puedes ayudar en el siguite tema, yo tengo una hoja con datos de 10 columnas y que al abrir mi formulario se cargan en un listbox, la consulta es que me gustaría que de algún modo se pueda filtrar esa información pero no con un solo criterio sino con la posibilidad que sea con la mayoría de las columnas de ser posible espero poder ser claro y también espero que me puedas aatender

1 Respuesta

Respuesta
2

Envíame tu archivo y me explicas con cuáles columnas quieres filtrar, incluso puede ser con todas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jose Flores” y el título de esta pregunta.

¡Gracias! correo enviado

Te anexo la macro para filtrar por cualquier encabezado y por fechas

Private Sub CommandButton5_Click()
'Act.Por.Dante Amor
    Me.ListBox1.Clear
    If Me.cmbEncabezado.ListIndex = -1 Then
        MsgBox "Selecciona un encabezado"
        Me.cmbEncabezado.SetFocus
        Exit Sub
    End If
    If txtFiltro1.Value = "" Then
        MsgBox "Captura un dato"
        Me.txtFiltro1.SetFocus
        Exit Sub
    End If
    '
    col = Me.cmbEncabezado.ListIndex + 1
    filas = Range("a1").CurrentRegion.Rows.Count
    porfecha = False
    If InStr(1, LCase(cmbEncabezado), "fecha") > 0 Then
        porfecha = True
        If IsDate(txtFiltro1) Then
            fini = CDate(txtFiltro1)
        Else
            MsgBox "La fecha inicial no es correcta"
            txtFiltro1.SetFocus
            Exit Sub
        End If
        If TextBox1 = "" Then
            ffin = CDate(txtFiltro1)
        Else
            If IsDate(TextBox1) Then
                ffin = CDate(TextBox1)
            Else
                MsgBox "La fecha final no es correcta"
                TextBox1.SetFocus
                Exit Sub
            End If
        End If
    End If
    For i = 2 To filas
        agregar = False
        If porfecha Then
            If Cells(i, col) >= fini And Cells(i, col) <= ffin Then
                agregar = True
            End If
        Else
            If LCase(Cells(i, col).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
                agregar = True
            End If
        End If
        If agregar Then
            Me.ListBox1.AddItem Cells(i, "A")
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, "B")
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, "C")
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, "D")
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, "E")
        End If
    Next
End Sub

.

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

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas