Macro para ocultar y mostrar filas en varias hojas protegidas

13/04/2011 - 09:59 por hilde | Informe spam
¡ Hola !
Soy nueva en este foro y estoy aprendiendo a golpes VB.
Tengo un trabajo en Excel, que tiene 20 hojas, de las cuales 12 contiene información de cada mes. En cada una de ellas hay filas con valores iguales a cero. Bien, la hoja la tengo protegida para que no sean modificadas ciertas celdas por el usuario que ingresa datos, y lo que quiero es que al imprimir la hoja se oculten las filas con valor cero y luego se vuelvan a mostrar.
Vi una respuesta que dió Héctor Miguel a René, en Mayo de 2005, pero a mi no me ha funcionado.
Por favor, me pueden ayudar a descubrir dónde está el error, porque ya estoy verde.
Gracias
Mis códigos son:

Private Sub Workbook_Open()
Dim Hoja As Worksheet
For Each Hoja In Worksheets
Hoja.Protect _
Password:="123", UserInterfaceOnly:=True
End Sub

Sub OcultarFilas()
Application.ScreenUpdating = False
Dim Celda As Range
For Each Celda In Range("k1:k101")
Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")
Next
End Sub

Sub MostrarFilas()
Range("k1:k101").EntireRow.Hidden = False
End Sub

Si la hoja no está protegida funciona, aunque se tarda al ocultar las filas y al mostrarla.
Cuando la protejo y darle click al botón ocultar, se pone en amarillo :
Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")

Al darle click al botón Mostrar se pone en amarillo:

Range("k1:k101").EntireRow.Hidden = False

Podrían decirme el código para imprimir (?)
Mil gracias por su atención
 

Leer las respuestas

#1 jalejop
13/04/2011 - 16:07 | Informe spam
Hola Hilde,

Según veo, cada que abres el libro se protegen todas las hojas,
si el proceso le funciona cuando las hojas no están bloqueadas,
intenta desproteger la hoja antes de ocultar las filas y una vez estén
ocultas la vuelves a proteger, es decir,

Sub OcultarFilas()
Application.ScreenUpdating = False
Dim Celda As Range

ActiveSheet.Unprotect "contraseña"

For Each Celda In Range("k1:k101")
Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")
Next

ActiveSheet.Protect "contraseña"


End Sub

Saludos

Juan Alejandro


On 13 abr, 02:59, hilde wrote:
Hola !
 Soy nueva en este foro y estoy aprendiendo a golpes VB.
 Tengo un trabajo en Excel, que tiene 20 hojas, de las cuales 12 contiene
 informaci n de cada mes. En cada una de ellas hay filas con valores
 iguales a cero. Bien, la hoja la tengo protegida para que  no sean modificadas
 ciertas celdas por el usuario que ingresa datos, y lo que quiero es que al
 imprimir la hoja se oculten las filas con valor cero y luego se vuelvan a
 mostrar.
 Vi una respuesta que di H ctor Miguel a Ren , en Mayo de
 2005, pero a mi no me ha funcionado.
 Por favor, me pueden ayudar a descubrir d nde est el error,
 porque ya estoy verde.
 Gracias
 Mis c digos son:

 Private Sub Workbook_Open()
 Dim Hoja As Worksheet
 For Each Hoja In Worksheets
 Hoja.Protect _
 Password:="123", UserInterfaceOnly:=True
 End Sub

 Sub OcultarFilas()
 Application.ScreenUpdating = False
 Dim Celda As Range
 For Each Celda In Range("k1:k101")
 Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")
 Next
 End Sub

 Sub MostrarFilas()
 Range("k1:k101").EntireRow.Hidden = False
 End Sub

 Si la hoja no est protegida funciona, aunque se tarda al ocultar las
 filas y al mostrarla.
 Cuando la protejo y darle click al bot n ocultar, se pone en amarillo :
 Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")

 Al darle click al bot n Mostrar se pone en amarillo:

 Range("k1:k101").EntireRow.Hidden = False

 Podr an decirme el c digo para imprimir (?)
 Mil gracias por su atenci

Preguntas similares