Cómo bloquear todas las hojas de excel a excepción de una?

Tengo una macro que bloquea todo el libro de excel (las celdas que yo he puesto para ser bloqueadas), oculta las hojas, quita la vista de cuadricula, barra de formulas y los títulos.

Me gustaría que este código me bloqueara todas las hojas a excepción de dos hojas que se llaman "Registro" y "Tabla Dinámica". Es decir, que pueda hacer cambio en éstas hojas (agregar, modificar, escribir, cambiar celdas) pero que estas hojas no se puedan eliminar.

Anexo el codigo que tengo:

Sub User_Mode()
Pass = "12345"
For Each sht In ActiveWorkbook.Sheets
sht.Select
sht.Protect Password:=Pass
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHeadings = False
Next sht

ActiveWindow.DisplayWorkbookTabs = False
ThisWorkbook.Protect Password:=Pass
Sheets("Inicio").Select
End Sub

1 respuesta

Respuesta
1

Este sería el ajuste (en negrita)

For Each sht In ActiveWorkbook.Sheets

if sh.name <> "Registro" and sh.name <> "Tabla Dinámica" then 
sht.Select
sht.Protect Password:=Pass
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHeadings = False

End if
Next sht

Sdos!

Veo que utilizas 'sht' como variable, ajusta en mi línea este detalle.

Sdos!

No entiendo muy bien como ajustarlo. Copie el código pero me da error. Soy muy novato en esto

Dejame escrito el código tal como te quedó. Y cuando te aparece la ventanita con el mensaje de error presiona el botón Depurar y me índicas también la línea del error. Seguramente tenes errores en el nombre de las hojas (revisa el acento, mayúsculas, etc).

La macro completa sería así:

Sub User_Mode()
Pass = "12345"
For Each sht In ActiveWorkbook.Sheets

if sht.name <> "Registro" and sht.name <> "Tabla Dinámica" then

sht.Select
sht.Protect Password:=Pass
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHeadings = False
Next sht

End If

ActiveWindow.DisplayWorkbookTabs = False
ThisWorkbook.Protect Password:=Pass
Sheets("Inicio").Select
End Sub

Sdos!

Al dar ejecutar, me dice Error de compilación: Next sin for

A continuación me sombre con amarillo ésta linea: Sub User_Mode()

Revise el nombre de las hojas, me falta la s en registro: Registros. Acentos, mayúsculas, espacios y demás lo veo bien. Aún con esa corrección, me sigue dando el error.

Gracias!

Es cierto, la línea End If va antes de la que dice Next sht.

Sdos!

¿Quedó resuelto? No olvides valorarla entonces para darla por cerrada. Sino comenta nuevamente.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas