loop for ejemplos code excel vba excel-vba

for - vba excel 2016



Filtro activo transparente Excel 2013 VBA (3)

Necesito borrar cualquier filtro activo de una hoja antes de ejecutar una macro determinada, esta línea funciona bien SI hay un filtro activo en

If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData

Sin embargo, si no se seleccionan filtros, devuelve el error

Runtime error ''1004''; ShowAllData method of Worksheet class failed

Obtuve el código de una respuesta a esta pregunta Excel 2013 VBA Borrar todos los filtros macro

Sin embargo, esa pregunta no explica cómo ignorar la línea si no hay filtros activos.

¿Cómo ignoro esta línea si no hay filtros activos actualmente aplicados?

EDITAR

Por ejemplo, todos los encabezados de columna se filtraron automáticamente, por lo que si mi hoja está filtrada por ''Mujer'', por ejemplo, necesito eliminar ese filtro antes de ejecutar la macro; sin embargo, si no se han aplicado filtros, simplemente ejecute la macro como siempre.


Sinceramente admiro su deseo de programar para circunstancias específicas, pero tengo que admitir que la forma más rápida de lograr esto es mediante On Error Resume Next .

On Error Resume Next ActiveSheet.ShowAllData On Error GoTo 0

No debería tener que romper algo para comprobar si existe, pero en VBA que ocasionalmente es el mejor recurso. Personalmente, clasifico On Error Resume Next junto con SendKeys como método de programación.

El método anterior no requiere que compruebe si. .AutoFilterMode es verdadero .


Use FilterMode en lugar de AutoFilterMode. He tratado con filtros con frecuencia y este código funciona bien.

If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If

Asegúrese de que la hoja de cálculo no esté protegida, ya que esto también genera el error 1004.


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í :)

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

** Posible duplicado de hilo: Excel 2013 VBA Borrar todos los filtros Macro