> Como se puede proteger una hoja de Excel sin que se deshabiliten los filtros?
si usas excel xp o 2003, puedes indicarle que 'permita' el uso del autofiltro [al tiempo de 'proteger']
si usas una version 'anterior' ... con ayuda de codigo en el modulo del libro [ThisWorkbook]
[si deseas que funcione desde ya, sin 'tener que' cerrar y abrir de nuevo el libro]...
... 'te paras' en la macro =>Private Sub Workbook_Open<= y presionas {F5}
_________
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect UserInterfaceOnly:=True
.EnableAutoFilter = True
End With
End Sub
la condicion para que funcione es ... que el AutoFiltro debe 'estar presente' ANTES.
['EnableAutoFilter = True' SOLO 'permite' al usuario su uso [en hojas protegidas], NO su 'creacion']
si la hoja 'en cuestion' NO tiene 'presente' el Autofiltro y lo quieres 'crear' [por codigo] ... [p.e.]
_________
Private Sub Workbook_Open()
With Worksheets("Hoja1")
.Protect UserInterfaceOnly:=True
If Not .AutoFilterMode Then .Range("a1").AutoFilter
.EnableAutoFilter = True
End With
End Sub
saludos,
hector.
Gracias por tu ayuda la macro que enviaste funciono muy
bien. Tengo otra pregunta ¿Como le puedo hacer para que
esta macro corra en todas las hojas del libro?
Saludos,
Jorge.
>-----Mensaje original-----
>hola, Jorge !
>
>> Como se puede proteger una hoja de Excel sin que se
deshabiliten los filtros?
>
>si usas excel xp o 2003, puedes indicarle que 'permita'
el uso del autofiltro [al tiempo de 'proteger']
>si usas una version 'anterior' ... con ayuda de codigo en
el modulo del libro [ThisWorkbook]
>[si deseas que funcione desde ya, sin 'tener que' cerrar
y abrir de nuevo el libro]...
>.... 'te paras' en la macro =>Private Sub Workbook_Open<=
y presionas {F5}
>_________
>Private Sub Workbook_Open()
> With Worksheets("Hoja1")
> .Protect UserInterfaceOnly:=True
> .EnableAutoFilter = True
> End With
>End Sub
>
>la condicion para que funcione es ... que el AutoFiltro
debe 'estar presente' ANTES.
>['EnableAutoFilter = True' SOLO 'permite' al usuario su
uso [en hojas protegidas], NO su 'creacion']
>
>si la hoja 'en cuestion' NO tiene 'presente' el
Autofiltro y lo quieres 'crear' [por codigo] ... [p.e.]
>_________
>Private Sub Workbook_Open()
> With Worksheets("Hoja1")
> .Protect UserInterfaceOnly:=True
> If Not .AutoFilterMode Then .Range("a1").AutoFilter
> .EnableAutoFilter = True
> End With
>End Sub
>
>saludos,
>hector.
>.
>
> ... la macro ... funciono ... otra pregunta ¿... que ... corra en todas las hojas del libro?
si se han de aplicar a todas las hojas de calculo del libro, modifica a lo siguiente:
Private Sub Workbook_Open()
Dim Hoja As Worksheet
For Each Hoja In ActiveWorkbook.Worksheets
Hoja.Protect UserInterfaceOnly:=True
Hoja.EnableAutoFilter:=True
Next
End Sub
si se trata de [solamente] 'ciertas' hojas, puedes modificar a lo siguiente:
For Each Hoja In Worksheets(Array("Hoja1", "Hoja3"))
saludos,
hector.
Gracias por tu respuesta y una pregunta más ¿Si comparto
el libro sigue operando la macro con los demás usuarios?,
ya que estoy trabajando con Excel 2000.
Jorge.