Macro para desbloquear hoja no funciona

He grabado una macro en la que desbloquea una hoja protegida con contraseña, selecciona la fila de los títulos y le pone un filtro. Le he asignado un botón. La macro funciona bien, el problema es que si le doy una vez al botón hace la función para la que está creada, pero si le doy una segunda vez, quita los filtros. Lo que necesito es que al darle una segunda vez no haga nada. Para volver a bloquear la hoja, he creado otro botón con su macro.

Las dos macros serían las siguientes:

-La primero desprotege la hoja y pone filtro y la segunda quita el filtro y protege la hoja con contraseña.

Sub DESBLOQUEARREGISTRODEFACTURAYPONERFILTRO()
'
' DESBLOQUEARREGISTRODEFACTURAYPONERFILTRO Macro
' DESBLOQUEA FILTRO DE FACTURA Y PONE FILTRO
'

'
Application.ScreenUpdating = False
Sheets("Registro factura").Unprotect Password:="XXXXXXXX"
Range("A4").Select
Application.Goto Reference:="R4C1:R4C15"
Selection.AutoFilter
Range("A5").Select
MsgBox " NO OLVIDES BLOQUEAR CUANDO HAYAS FINALIZADO"
Application.ScreenUpdating = True
End Sub

---------------------------------------------------------------------------------------------------------------------------------------------------
Sub BLOQUEAHOJAFACTURAYQUITAFILTRO()
'
' BLOQUEAHOJAFACTURAYQUITAFILTRO Macro
' BLOQUEA HOJA REGISTRO FACTURA Y QUITA FILTRO
'

'
Application.ScreenUpdating = False
Application.Goto Reference:="R3C1:R3C15"
Selection.AutoFilter
Application.Goto Reference:="R3C1"
Range("K4").Select
Sheets("Registro factura").Protect Password:="XXXXXXXX"
Application.ScreenUpdating = True
End Sub

Respuesta
3

Modificando tus dos macros queda así, los select no tiene caso que los pongas

Sub filtra()
Application.ScreenUpdating = False
With Sheets("Registro factura")
    .Unprotect Password:="XXXXXXXX"
    Range("a3:o3").AutoFilter
    Range("K4").Select
    .Protect Password:="XXXXXXXX"
End With
Application.ScreenUpdating = True
End Sub
'
Sub filtra2()
Application.ScreenUpdating = False
Sheets("Registro factura").Unprotect Password:="XXXXXXXX"
Range("a4:o15").AutoFilter
MsgBox " NO OLVIDES BLOQUEAR CUANDO HAYAS FINALIZADO"
Application.ScreenUpdating = True
End Sub

2 respuestas más de otros expertos

Respuesta
2

Prueba este código que modifiqué:

Sub bloquear_hoja()
'Por Vico
Application.ScreenUpdating = False
If Sheets("Registro factura").AutoFilterMode = False Then
    Range("A4:O4").AutoFilter
End If
If Sheets("Registro factura").ProtectContents = True Then
    Sheets("Registro factura").Unprotect "XXXXXXXX"
    Range("A5").Select
    MsgBox "NO OLVIDES BLOQUEAR CUANDO HAYAS FINALIZADO", vbInformation, "Aviso Importante..."
ElseIf Sheets("Registro factura").ProtectContents = False Then
    Range("A5").Select
    Sheets("Registro factura").Protect "XXXXXXXX", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End If
Application.ScreenUpdating = True
End Sub

Espero te funcione,  si es así comenta y finaliza tu consulta.

Me falto comentar que esta macro hace ambas cosas, bloquea si esta desbloqueada o viceversa

Respuesta
2

[Hola. La modifiqué un poco, la pruebas y comentas

Sub DESBLOQUEARREGISTRODEFACTURAYPONERFILTRO()
Application.ScreenUpdating = False
Sheets("Registro factura").Unprotect Password:="XXXXXXXX"
Range("A4").Select
Application.Goto Reference:="R4C1:R4C15"
Selection.AutoFilter
Range("A5").Select
'MsgBox " NO OLVIDES BLOQUEAR CUANDO HAYAS FINALIZADO"
Sheets("Registro factura").Protect Password:="XXXXXXXX"
MsgBox " La hoja Registro Factura esta protegida"
Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas