Macro para hoja protegida

Hace poco me hiciste una macro estupenda que eliminaba filas con celdas vacías en una columna, si se habilitaba una casilla determinada (concretamente si la celda k38="X"). La macro recalculaba para que si la K38 volviera a estar vacía se mostrasen de nuevo las filas eliminadas anteriormente. La macro era:
Código de hoja 5
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Cells(38, 11) = "X" Then
ocultaFilas2 "Cta.Justificativa"
Else
Rows("50:77").EntireRow.Hidden = False
End If
Application.EnableEvents = True
End Sub
CÓDIGO DE MÓDULO 1
Sub ocultaFilas2(queHoja As String)
Dim it As Long
Sheets(queHoja).Select
For it = 50 To 77
If Cells(it, 2) = "" Then Cells(it, 1).EntireRow.Hidden = True
Next it
End Sub
El problema surge cuando se protege la hoja. Necesito protegerla para que se puedan utilizar sólo las celdas en las que hay que meter datos, y me da el mensaje de error: Se ha producido el error '1004' en tiempo de ejecución: no se puede asignar la propiedad Hidden de la clase Range.
Te lo comento por si se puede hacer algo o tengo que renunciar a la protección.

2 Respuestas

Respuesta
1
Disculpas por la demora, te recomiendo que al inicio y al final de la macro en cuestión le agregues
'para desproteger la hoja
ActiveSheet.Unprotect Password:="tuContraseña"
'al final vuelves a proteger
ActiveSheet.Protect Password:="tuContraseña"
Perdóname tú a mí por el retraso en finalizar, pues el tema era urgente y como vi que no aparecías en activo en ese momento, pedí ayuda por otro lado y, efectivamente me indicaron lo mismo. Sólo que para que me funcionase tuve que situar la activación y desactivación de esta manera:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
ActiveSheet.Unprotect Password:="contraseña"
If Cells(38, 11) = "X" Then
ocultaFilas2 "Cta.Justificativa"
Else
Rows("50:77").EntireRow.Hidden = False
End If
ActiveSheet.Protect Password:="contraseña"
Application.EnableEvents = True
End Sub
Muchas gracias gfellay por contestar, porque la macro que me hiciste funciona de maravilla y le estamos sacando un gran rendimiento.
Respuesta
1
Tines que modificar el módulo 1 y poner este. (Esto es para una protección con contraseña, donde pone palabra tienes que poner tu contraseña, si lo quieres sin contraseña, elimina PASSWORD:="palabra"
Sub ocultaFilas2(queHoja As String)
Dim it As Long
Sheets(queHoja).Select
ActiveSheet.Unprotect Password:="palabra"
For it = 50 To 77
If Cells(it, 2) = "" Then Cells(it, 1).EntireRow.Hidden = True
Next it
ActiveSheet.Protect Password:="palabra"
End Sub
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas