hola, Waldear !
prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:
-> la proteccion a solo la interfase con el usuario
-> el permiso para usar los autofiltros (y esquemas) los cuales YA deberan estar presentes en tu hoja
segun las versiones a las que tengas pensado dar "soporte" para el uso de tu archivo
(recuerda que el uso de caracteristicas nuevas no tienen soporte en las versiones anteriores)...
a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect UserInterfaceOnly:=True
.EnableAutoFilter = True
End With
End Sub
b) a partir de excel 2002/xp SI es requisito repetir el password:
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
.EnableAutoFilter = True
End With
End Sub
(practicamente) TODO lo que hagas por codigo... pasara sin problemas
(excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)
OJO: si llegaras a necesitar que el usuario defina sobre que listado aplica los autofiltros...
copia/pega las siguientes lineas en un modulo de codigo 'general' y asignas la macro a algun boton/atajo/...
Option Private Module
Sub AutoFiltrosPorMacro()
With ActiveCell.CurrentRegion
If .Count > 1 Then
If .Parent.AutoFilterMode Then
If .Parent.AutoFilter.Range.Address <> .Address Then .AutoFilter
End If
.AutoFilter
Else
MsgBox """Activa"" por favor (alg)una celda" & vbCr & _
"""dentro"" (o... ""cerca"") de la lista ""a filtrar"".", _
vbInformation, "AutoFiltros por macros"
End If
End With
End Sub
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.