Macro para mostrar y ocultar filas

14/05/2005 - 03:40 por Rene Palacios | Informe spam
tengo estas dos macro :

Sub EsconderFilas()
Application.ScreenUpdating = False
Dim Rango As Range, c As Range

Set Rango = Range("C8:C42")
For Each c In Rango
c.EntireRow.Hidden = _
(c.Value = 0 Or c.Value = "")
Next c
Application.ScreenUpdating = True
End Sub
Sub MostrarFilas()
Application.ScreenUpdating = False
Dim Rango As Range, c As Range

Set Rango = Range("C8:C42")
For Each c In Rango
c.EntireRow.Hidden = False
Next c
Application.ScreenUpdating = True
End Sub


Funciona bien cuando la hoja del libro no esa protegida pero yo necesito q
este protegida cuando corro la macro me sale error :

No se puede asinar la propiedad Hidden de la clase Range

y esta resaltado en amarillo:
c.EntireRow.Hidden = _
(c.Value = 0 Or c.Value = "")
si es esconder y si es mostrar esta resaltado en amarillo:
c.EntireRow.Hidden = False

me pueden ayudar a q funcione bien estando la hoja protegida con una clave q
yo le asigne espero su ayuda gracias de antemano
 

Leer las respuestas

#1 Héctor Miguel
14/05/2005 - 04:13 | Informe spam
hola, Rene !

tengo estas dos macro [...]
... la hoja... necesito q este protegida cuando corro la macro me sale error [...]



si necesitas que la proteccion NO 'afecte' a tus macros ->SIN tener que [des/re]proteger la hoja<-
puedes usar la instruccion de 'solo interfase de usuario' [p.e.]
=> en excel 97 y 2000 NO necesitas 'repetir' el password <= es 'suficiente' con poner:
en el modulo de codigo del libro ==Private Sub Workbook_Open()
Worksheets("Hoja1").Protect UserInterfaceOnly:=True
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨
=> a partir de excel 2002 [xp] SI es requisito 'repetir' el password :-( < en el modulo de codigo del libro ==Private Sub Workbook_Open()
Worksheets("Hoja1").Protect _
PassWord:="la MISMA cOntRaSeÑa qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨
[practicamente] TODO lo que 'hagas por codigo'... pasara 'sin problemas?

saludos,
hector.

p.d. puedes 'adelgazar' el codigo de las macros +/- como sigue...
Sub EsconderFilas()
Application.ScreenUpdating = False
Dim Celda As Range
For Each Celda In Range("c8:c42")
Celda.EntireRow.Hidden = (Celda = 0 Or Celda = "")
Next
End Sub
Sub MostrarFilas()
Range("c8:c42").EntireRow.Hidden = False
End Sub

Preguntas similares