FIltro avanzado elimina autofiltro

Caliche

Active Member
Joined
Mar 26, 2002
Messages
339
Ya he colocado esta pregunta en el foro en inglés, pero desafortunadamente no he obtenido respuesta aún. Acá va:

Este es un pedazo de mi código:

MsgBox ("Antes de filtro avanzado" & Worksheets("Datos").AutoFilterMode)

Range("'Coaching.xls'!Datos").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("'Coaching.xls'!Crit_Filtro"), _
CopyToRange:=Selection, Unique:=True

MsgBox ("Después del filtro avanzado" & Worksheets("Datos").AutoFilterMode)

Antes del filtro avanzado, la hoja Datos muestra "Verdadero" ó sea que está activo el auto filtro (Nota: esta hoja está protegida) ; después de que ejecuto el filtro avanzado, los botones del autofiltro ya no aparecen (se desactiva el autofiltro): el msgbox muestra "Falso".

No hay mas instrucciones entre el msgbox "antes" del filtro avanzado y el msgbox "después" del filtro avanzado.

Tener en cuenta que :

- El rango "Datos" es un rango dinámico en la hoja "Datos";
- El rango de criterios, "Crit_filtro" esta en otra hoja diferente a la hoja
donde está el rango (fuente) de datos del filtro avanzado y
- El rango "Copy to" también está en una hoja diferente a las dos
anteriores.

Lo anterior significa que intervienen tres hojas diferentes en el filtro avanzado.

Alguna idea de por qué se está desactivando el autofiltro en la hoja fuente de datos para el filtro avanzado?.

Muchas gracias por su ayuda.

Caliche
 

Excel Facts

How to calculate loan payments in Excel?
Use the PMT function: =PMT(5%/12,60,-25000) is for a $25,000 loan, 5% annual interest, 60 month loan.
Juan,

Porque así funciona Excel :-) . No, en serio... así como no se pueden tener dos autofiltros en una misma hoja, no se puede tener un autofiltro y un filtro avanzado. Lo que me imagino que tocaría hacer, para no tener que guardar toda la información del filtro actual, sería hacer una copia temporal de los datos, y hacer el filtro avanzado sobre esa copia, así el filtro original no se modifica.
 
Upvote 0
Juan:

Lo que yo pretendo es hacer un filtro avanzado con los datos de una hoja que está protegida y que en su fila de encabezados tiene activo un autofiltro, el cual debo conservar para que los usuarios lo puedan utilizar.

Ensayé lo siguiente:

Manualmente, es decir, desde el menu Datos, Filtro, Filtro Avanzado, teniendo activo el autofiltro, pero sin haber filtrado nada, es decir con TODAS las filas de dato visibles, pude hacer lo que estoy intentando hacer en la macro y se conservan los botones del autofiltro.

Con algún campo filtrado, es decir, con algunas filas ocultas, repetí el filtro avanzado, y permite hacerlo, pero cuando termina, desactiva el autofiltro y muestra todos los registros de mi base de datos.

Que será entonces lo que debo hacer en la macro para evitar esto?. porque en la macro, ya vemos que el msgbox muestra que el autofiltro está activo y estoy seguro que no tengo ningún campo filtrado, que sería la condición que me desactiva el autofiltro, según sucedió cuando lo hice manualmente. Talvez un "Mostrar todo" antes del filtro avanzado, por seguridad?.

Mil gracias por su ayuda.

Si entiendo bien su respuesta, obviamente uno no puede intentar hacer al mismo tiempo
 
Upvote 0
Hola Juan,

Excel 2000 me "apaga" el autofiltro al hacer un filtro avanzado, así no tenga nada filtrado. No traté con las otras versiones.

Lo que propongo es algo así. Con este ejemplo:
Book1
ABCDEF
1Field1Field2Field3Field1
22220
3000
4111
5222
6000
7111
8222
9000
10111
Sheet1


Al correr el siguiente macro, el filtro se me apaga:<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> Test()
   Range("A1").CurrentRegion.AutoFilter
  
   Debug.Print Sheet1.AutoFilterMode
  
   Range("A1").CurrentRegion.AdvancedFilter xlFilterCopy, Range("F1:F2"), Range("I1")

   Debug.Print Sheet1.AutoFilterMode<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">Sub</SPAN></FONT>

lo que digo es crear una hoja temporal, y filtrar ahí:<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> Test2()<SPAN style="color:#00007F">Dim</SPAN> TempWS<SPAN style="color:#00007F">As</SPAN> Worksheet<SPAN style="color:#00007F">Dim</SPAN> ActWS<SPAN style="color:#00007F">As</SPAN> Worksheet<SPAN style="color:#00007F">Set</SPAN> ActWS = Sheet1

Range("A1").CurrentRegion.AutoFilter

Debug.Print Sheet1.AutoFilterMode<SPAN style="color:#00007F">Set</SPAN> TempWS = Workbooks.Add(xlWorksheet).Worksheets(1)

ActWS.Range("A1").CurrentRegion.Copy TempWS.Range("A1")

TempWS.Range("A1").CurrentRegion.AdvancedFilter xlFilterCopy, _
ActWS.Range("F1:F2"), _
ActWS.Range("I1")

Debug.Print Sheet1.AutoFilterMode

TempWS.Parent.Close<SPAN style="color:#00007F">False</SPAN><SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">Sub</SPAN></FONT>
 
Upvote 0
Juan: muchas gracias. esta solución me puede servir. Creo que la conclusión importante de este problema es saber que el autofiltro "se apaga" después del filtro avanzado, y entonces una solución alterna a su propuesta, sería que la macro lo restaurara después del filtro avanzado.

De nuevo, muchísimas gracias por su ayuda.

Caliche.
 
Upvote 0

Forum statistics

Threads
1,223,948
Messages
6,175,571
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top