Modificar "Field" con textbox de un filtro

Tengo un problema que no puedo solucionar, no puedo cambiar el Field de un filtro de Excel con una textbox en un userform, aquí les envío la macro:

Sub Filtro()
Dim r As Boolean
Application.ScreenUpdating = False
Hoja2.Activate
r = TextBox3
Range("A1").Select 'Selecciona la celda donde empieza a buscar
Ufila = Hoja2.Range("A1").End(xlDown).Row ' cuentar la filas de la base
Selection.AutoFilter
ActiveSheet.Range("$A$2:$O" & Ufila).AutoFilter Field:=r.Text, Criteria1:="<>"
Range("A1").Select
End Sub

1 respuesta

Respuesta
1

No es correcto esto que pusiste:

r.Text

En esta linea:

ActiveSheet.Range("$A$2:$O" & Ufila).AutoFilter Field:=r.Text, Criteria1:="<>"

'

En en este dato Field:= debe de ir un número, si quieres filtrar por la columna "A", debe ir el número 1, si quieres filtrar por la columna "B" debe ir el número 2, si es por la "C" el 3, la "D" el 4, etc.


No sé por cuál columna quieras filtrar, tampoco sé qué dato estás poniendo en el textbox3.

Si quieres filtrar la columna "A" con el dato que tienes en el texbox entonces debe ser así:

Sub Filtro()
'Act.Por.Dante Amor
    Hoja2.Activate
    If Hoja2.AutoFilterMode Then Hoja2.AutoFilterMode = False
    u = Hoja2.Range("A" & Rows.Count).End(xlUp).Row ' cuentar la filas de la base
    Hoja2.Range("A2:O" & u).AutoFilter Field:=1, Criteria1:=TextBox3
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

Hola dante; gracias por responder, veamos: Tengo un userform con un textbox3 donde se escribe el nombre de la semana, entonces, según el día que sale en el texbox3, debe filtrar con el criterio "<>" (ocultar celdas vacías) todo el rango, y subir ese resultado a un listbox1 del mismo userform con un botón.

Te anexo la macro

Sub Filtro()
'Por.Dante Amor
    Select Case UCase(TextBox3)
        Case "LUNES": col = 2
        Case "MARTES": col = 3
        Case "MIERCOLES": col = 4
        Case "JUEVES": col = 5
        Case "VIERNES": col = 6
        Case "SABADO": col = 7
        Case "DOMINGO": col = 8
        Case Else
            MsgBox "El día en el textbox no es correcto", vbExclamation
            Exit Sub
    End Select
    Hoja2.Activate
    If Hoja2.AutoFilterMode Then Hoja2.AutoFilterMode = False
    u = Hoja2.Range("A" & Rows.Count).End(xlUp).Row ' cuentar la filas de la base
    Hoja2.Range("A1:O" & u).AutoFilter Field:=col, Criteria1:="<>"
End Sub

Si necesitas que te ayude para subir los datos en el listbox, crea una nueva pregunta y me explicas si quieres que se carguen los encabezados? y cuántas columnas quieres cargar, de cuál a cuál columna?


Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas