Desproteger dos hojas con VBA

Tengo dos hojas que quiero desproteger cuando abro un libro, para que me oculte una fila en función de una formula, y después me las vuelva a proteger (al iniciar el libro, están protegidas). Como podéis observar, actualmente solo me desprotege la hoja activa (hoja1), pero no la hoja 2. ¿Me podéis ayudar? ¡Gracias!

 ActiveSheet. Unprotect
    If Range("P2").Value = "NO OCULTAR" Then
    Rows("368:368").EntireRow.Hidden = False ' Si pone None oculta
    Sheets("Hoja2").Rows("367:367").EntireRow.Hidden = False ' Si pone None oculta
    End If
    If Range("P2").Value = "OCULTAR" Then
    Rows("368:368").EntireRow.Hidden = True ' Si pone None oculta
    Sheets("Hoja2").Rows("367:367").EntireRow.Hidden = False ' Si pone None oculta
    End If

1 Respuesta

Respuesta
1

Hazlo así:

WorkSheets("Hoja1"). Unprotect

WorkSheets("Hoja2"). Unprotect

Solo reemplaza por el nombre correcto de tus hojas. Si tienen clave colócalo así:

WorkSheets("Hoja1"). Unprotect "clave"

Para, al final, volverlas a proteger:

WorkSheets("Hoja1"). Protect "clave"

Salu2

Abraham Valencia

Muchas gracias, pero no me funciona. Creo que debe haber interrelación que hace que no funcione. Te paso el Excel para que veas el código. Está en la ThisWorkbook, inactivo.

Excel

No me queda claro tu objetivo pero en lo relacionado a proteger/desproteger, tal cual comenté, dado que está en el evento "Open" del libro, cuando lo abres protege y desprotege. Si te refiera a ocultar, o no, si ves tu código le indicas, a través del "If", que busque un valor en "P2" (dos veces y OJO sin indicar de que hoja) pero en esa celda no hay nada en ninguna de las dos hojas.

Abraham Valencia

¡Gracias! Lo he solucionado con este código:

Worksheets("Hoja1").Unprotect
Worksheets("Hoja2").Unprotect
If Worksheets("Hoja1").Range("Q2").Value = "NO OCULTAR" Then
Rows("368:368").EntireRow.Hidden = False
Worksheets("Hoja2").Rows("367:367").EntireRow.Hidden = False
Else
Rows("368:368").EntireRow.Hidden = True
Worksheets("Hoja2").Rows("367:367").EntireRow.Hidden = True
End If
Worksheets("Hoja1").Protect
Worksheets("Hoja2").Protect

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas