Activar autofiltros en excel vba

Estimada comunidad, estoy haciendo un código con filtro automático y al momento que la celda queda vacía, me tira error porque no es capaz de limpiar los filtros activados. Les dejo el código agradeciendo su ayuda.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim maquina As String

maquina1 = Range("maquina")

If maquina1 <> Empty Then
' ActiveSheet.ListObjects("tabla").Range.AutoFilter field:=4 'resetea cantidad de la columna 4
Range("tabla").AutoFilter Field:=4, Criteria1:="=" & maquina1
End If

If Range("maquina").Value = Empty Then

ActiveSheet.ListObjects("tabla").Range.AutoFilter Field:=4 'error se produce en esta línea 
End If

End Sub

1 Respuesta

Respuesta
2

H o l a:

Antes de realizar el filtro, hay que seleccionar la tabla o el rango, preguntar si existe filtro o autofiltro y entonces quitar el filtro con "ShowAllData"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim maquina As String
    maquina1 = Range("maquina")
    If maquina1 <> Empty Then
        ' ActiveSheet.ListObjects("tabla").Range.AutoFilter field:=4 'resetea cantidad de la columna 4
        Range("tabla").Select
        If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
        If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
        Range("tabla").AutoFilter Field:=4, Criteria1:="=" & maquina1
    End If
    If Range("maquina").Value = Empty Then
        Range("tabla").Select
        If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
        If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
        ActiveSheet.ListObjects("tabla").Range.AutoFilter Field:=4 'error se produce en esta línea
    End If
End Sub

':)
':)

Estimado, gracias por su respuesta pero me marca error en la línea

If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData

Me marca ActiveSheet.ShowAllData en amarillo.

Gracias

Estoy algo confundido con el código que tienes, no sé si tienes una tabla o un nombre de tabla o un rango como nombre de tabla:

Range("tabla")

ActiveSheet. ListObjects("tabla")

Envíame tu archivo para revisarlo, explícame con comentarios y con colores qué es lo que necesitas hacer.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Christian Acuña” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas