visual programar para mac insertar habilitar formularios for como boton abrir excel vba excel-vba excel-vba-mac

programar - Excel 2013 VBA Borrar todos los filtros macro



vba for mac (18)

Aquí está el delineador que uso. Comprueba si hay un filtro automático y, si lo encuentra, lo elimina.

A diferencia de algunas respuestas, este código no creará un filtro automático si se usa en una hoja de trabajo que no se filtra automáticamente en primer lugar.

Range("A1:Z1").Activate ActiveSheet.ShowAllData Range("R1:Y1").Activate ActiveSheet.ShowAllData

Parece que las macros antiguas no funcionan. Tengo la seguridad adecuada configurada para ejecutar macros de VBA, pero cuando he probado algunos métodos para borrar TODOS los filtros en una hoja de trabajo, obtengo un error de compilación.

Esto es lo que he intentado:

Sub Macro1() Cells.AutoFilter End Sub

Tengo botones en las hojas para borrar todos los filtros y facilitar su uso a los usuarios, ya que las hojas tienen muchas columnas con filtros.


Aquí hay un código para la fijación de filtros. Por ejemplo, si activa los filtros en su hoja, agrega una columna y luego desea que la nueva columna también esté cubierta por un filtro.

Sub ResetWSFilters(ws as worksheet) If ws.FilterMode Then ws.ShowAllData Else End If ''This gets rid of "normal" filters - but tables will remain filtered For Each listObj In ws.ListObjects If listObj.ShowHeaders Then listObj.AutoFilter.ShowAllData listObj.Sort.SortFields.Clear End If Next listObj ''And this gets rid of table filters End Sub


Encontré esta respuesta en una página web de Microsoft

Utiliza el AutoFilterMode como un booleano.

If Worksheets("Sheet1").AutoFilterMode Then Selection.AutoFilter


Encontré esta solución para que funcione de manera bastante efectiva. Básicamente, elimina el autofiltro de la tabla y luego vuelve a aplicarlo, eliminando así cualquier filtro anterior. Desde mi experiencia, esto no es propenso al manejo de errores requerido con los otros métodos mencionados aquí.

Sub AutoFilter_Remove() Sheet1.AutoFilterMode = False ''Change Sheet1 to the relevant sheet ''Alternatively: Worksheets("[Your Sheet Name]").AutoFilterMode = False End Sub


Eso es brillante, la única respuesta que encontré que satisfizo mi necesidad particular, ¡muchas gracias por soportarlo!

Hice solo una pequeña adición para que la pantalla no parpadeara y quita y, posteriormente, vuelve a aplicar la contraseña en cada hoja a medida que avanza [Tengo la misma contraseña para todas las hojas del libro de trabajo]. En el espíritu de su presentación, agrego esto para ayudar a otros ...

Sub ResetFilters() On Error Resume Next For Each wrksheet In ActiveWorkbook.Worksheets wrksheet.ShowAllData ''This works for filtered data not in a table For Each lstobj In wrksheet.ListObjects If lstobj.ShowAutoFilter Then lstobj.Range.AutoFilter ''Clear filters from a table lstobj.Range.AutoFilter ''Add the filters back to the table End If Next ''Check next worksheet in the workbook Next End Sub

Sé que esta es una publicación relativamente antigua y realmente no me gusta ser un nigromante ... Pero como tuve el mismo problema e intenté algunas de las opciones en este hilo sin éxito, combiné algunas de las respuestas para obtener una macro funcional. ..

Espero que esto ayude a alguien por ahí :)

For Each WS In ActiveWorkbook.Worksheets Select Case WS.Name Case "01", "02", "03", "04", "05" With WS If WS.AutoFilterMode Then If WS.FilterMode Then WS.ShowAllData End If '' Processing data End With Case Else '' Nothing to see here End Select Next


Este hilo es antiguo, pero no estaba contento con ninguna de las respuestas dadas, y terminé escribiendo el mío. Lo estoy compartiendo ahora:

Comenzamos con:

Sub ResetAllWBFilters(wb as workbook) Dim ws As Worksheet Dim wb As Workbook Dim listObj As ListObject For Each ws In wb.Worksheets If ws.FilterMode Then ws.ShowAllData Else End If ''This removes "normal" filters in the workbook - however, it doesn''t remove table filters For Each listObj In ws.ListObjects If listObj.ShowHeaders Then listObj.AutoFilter.ShowAllData listObj.Sort.SortFields.Clear End If Next listObj Next ''And this removes table filters. You need both aspects to make it work. End Sub

Podemos enviar una hoja de trabajo específica a esta macro que filtrará solo esa hoja de trabajo. Útil si necesita asegurarse de que solo una hoja de trabajo esté clara. Sin embargo, generalmente quiero hacer todo el libro de trabajo

Sub ExampleOpen() Set TestingWorkBook = Workbooks.Open("C:/Intel/......") ''The .open is assuming you need to open the workbook in question - different procedure if it''s already open Call ResetAllWBFilters(TestingWorkBook) End Sub

Puede usar esto, por ejemplo, abriendo un libro de trabajo que necesita para tratar y restablecer sus filtros antes de hacer algo con él:

Sub ResetFilters() Dim ws As Worksheet Dim wb As Workbook Dim listObj As ListObject Set wb = ThisWorkbook ''Set wb = ActiveWorkbook ''This is if you place the macro in your personal wb to be able to reset the filters on any wb you''re currently working on. Remove the set wb = thisworkbook if that''s what you need For Each ws In wb.Worksheets If ws.FilterMode Then ws.ShowAllData Else End If ''This removes "normal" filters in the workbook - however, it doesn''t remove table filters For Each listObj In ws.ListObjects If listObj.ShowHeaders Then listObj.AutoFilter.ShowAllData listObj.Sort.SortFields.Clear End If Next listObj Next ''And this removes table filters. You need both aspects to make it work. End Sub

El que uso más: restablecer todos los filtros en el libro en el que está almacenado el módulo:

If Worksheets("Sheet1").AutoFilterMode Then Selection.AutoFilter


Esto primero comprobará si AutoFilterMode está configurado (el filtrado es posible), luego verificará si FilterMode está activado (está filtrando algo) y luego desactivará el filtrado.

En cuanto a errores, es decir, protección - se otras respuestas

Contexto agregado (mi script se mueve en bucle sobre las hojas, que luego se guardan como CSV, de ahí la necesidad de eliminar filtros, pero mantenga AutoFilterMode activado, si está configurado:

Sub ClearDataFilters() ''Clears filters on the activesheet. Will not clear filters if the sheet is protected. On Error GoTo Protection If ActiveWorkbook.ActiveSheet.FilterMode Or _ ActiveWorkbook.ActiveSheet.AutoFilterMode Then _ ActiveWorkbook.ActiveSheet.ShowAllData Exit Sub Protection: If Err.Number = 1004 And Err.Description = _ "ShowAllData method of Worksheet class failed" Then MsgBox "Unable to Clear Filters. This could be due to protection on the sheet.", _ vbInformation End If End Sub


Esto también funcionará:

Sub ClearFilters() Application.ScreenUpdating = False On Error Resume Next For Each wrksheet In ActiveWorkbook.Worksheets ''Change the password to whatever is required wrksheet.Unprotect Password:="Albuterol1" wrksheet.ShowAllData ''This works for filtered data not in a table For Each lstobj In wrksheet.ListObjects If lstobj.ShowAutoFilter Then lstobj.Range.AutoFilter ''Clear filters from a table lstobj.Range.AutoFilter ''Add the filters back to the table End If ''Change the password to whatever is required wrksheet.Protect Password:="Albuterol1", _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True, _ AllowFiltering:=True Next ''Check next worksheet in the workbook Next Application.ScreenUpdating = True End Sub


Estoy usando .filtermode si el filtro está en él devuelve verdadero

Sub ResetFilters() Dim ws As Worksheet Dim wb As Workbook Dim listObj As ListObject For Each ws In ActiveWorkbook.Worksheets For Each listObj In ws.ListObjects If listObj.ShowHeaders Then listObj.AutoFilter.ShowAllData listObj.Sort.SortFields.Clear End If Next listObj Next ws End Sub


Para tablas intente esto para verificar si está encendido y apagado:

wrkSheetCodeName.ListObjects("TableName").Range.AutoFilter

Para volver a encender:

If ActiveSheet.AutoFilterMode Then Cells.AutoFilter


Prueba esto:

Private Sub AddOrFixFilters() ActiveSheet.UsedRange.Select '' turn off filters if on, which forces a reset in case some columns weren''t covered by the filter If ActiveSheet.AutoFilterMode Then Selection.AutoFilter End If '' turn filters back on, auto-calculating the new columns to filter Selection.AutoFilter End Sub

Este Código borra todos los filtros y elimina la clasificación.

Fuente: eliminación de filtros para cada tabla en un libro de trabajo, VBA


Prueba esto:

Sub ResetFilters() On Error Resume Next ActiveSheet.ShowAllData End Sub


Pruebe algo como esto:

If Cells.AutoFilter Then Cells.AutoFilter

.FilterMode devuelve verdadero si la hoja de cálculo está en modo de filtro. ( Consulte esto para obtener más información).
Consulte esto para obtener más información sobre .AutoFilter .
Y finalmente, this proporcionará más información sobre el método .ShowAllData .


ShowAllData arrojará un error si un filtro no se aplica actualmente. Esto funcionará:

If wrkSheetCodeName.ListObjects("TableName").ShowAutoFilter Then wrkSheetCodeName.ListObjects("TableName").Range.AutoFilter End if


Si la hoja ya tiene un filtro, entonces:

If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData

lo eliminará


Simplemente active los encabezados del filtro y ejecute showalldata, funciona al 100%. Algo como:

Dim returnValue As Boolean returnValue = worksheet1.FilterMode if returnValue Then worksheet1.ShowAllData End If

Si tiene los encabezados de campo en A1: Z1 y R1: Y1 respectivamente.


Usualmente uso este código

If ActiveSheet.FilterMode Then cells.AutoFilter End If


esto funciona bien.!

Set myTable = YOUR_SHEET.ListObjects("YourTableName") myTable.ShowAutoFilter = False myTable.ShowAutoFilter = True