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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 hilde
13/04/2011 - 20:21 | Informe spam
hilde escribió el 13/04/2011 09:59 :
¡ 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


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

Hola Juan Alejandro, gracias por contestarme.
Te cuento que hice lo me dijiste y funciona para ocultar, pero al hacer click en el boton Mostrar se pone en amarillo:
Range("k1:k101").EntireRow.Hidden = False

Adicionalmente, no sé cómo hacer el código para Imprimir la hoja protegida, una vez ocultas las filas con valor cero, y luego volverlas a mostrar para seguir trabajando en esa hoja, volver a ocultar filas - Imprimir - mostrar filas y así sucesivamente.
Mil gracias por tu colaboración
Respuesta Responder a este mensaje
#3 hilde
13/04/2011 - 22:31 | Informe spam
hilde escribió el 13/04/2011 20:21 :
hilde escribió el 13/04/2011 09:59 :
¡ 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



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

Hola Juan Alejandro, gracias por contestarme.
Te cuento que hice lo me dijiste y funciona para ocultar, pero al hacer click
en el boton Mostrar se pone en amarillo:
Range("k1:k101").EntireRow.Hidden = False

Adicionalmente, no sé cómo hacer el código para Imprimir
la hoja protegida, una vez ocultas las filas con valor cero, y luego volverlas
a mostrar para seguir trabajando en esa hoja, volver a ocultar filas - Imprimir
- mostrar filas y así sucesivamente.
Mil gracias por tu colaboración


Hola Juan Alejandro, modifique el código Mostrarfilas y me dió resultado.
El código quedó así:

Sub MostrarFilas()
Application.ScreenUpdating = False
ActiveSheet.Unprotect "123"
Range("k1:k101").EntireRow.Hidden = False
ActiveSheet.Protect "123"
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida