Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro para ocultar y mostrar filas en varias hojas protegidas

846 views
Skip to first unread message

hilde

unread,
Apr 13, 2011, 3:59:17 AM4/13/11
to
¡ 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

jalejop

unread,
Apr 13, 2011, 10:07:46 AM4/13/11
to
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 <hi...@domain-xyz.in> 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 (?)

hilde

unread,
Apr 13, 2011, 4:31:31 PM4/13/11
to
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
0 new messages