Protección de multiples hojas

27/12/2005 - 01:20 por Racso | Informe spam
Tengo un libro con 17 hojas y en cada pagina tengo iguales columnas que se
ocultan y se muestran con botones de mi barra de herramientas personalizada.
Cuando le doy protección a las hojas (que incluye una contraseña y
deshabilitación de'seleccionar celdas protegidas') mi boton-macro-mostrar
columnas me pide la contraseña (que es lógico) pero al ocultar las columnas
con mi boton-macro ocultarcolumnas se deshabilita la contarseña y se vuelve a
habilitar 'selección de celdas protegidas' aunque la hoja actual (celdas)
queda protegida.

Mis macros de ocultar y mostrar las columnas son :

Sub MostrarColumnasAreas()
ActiveSheet.Unprotect
Columns("E:AD").Select
Selection.EntireColumn.Hidden = False
ActiveCell.CurrentRegion.Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True _
, AllowFormattingColumns:=True
End Sub

Sub MostrarColumnasAreas()
ActiveSheet.Protect
Columns("E:AD").Select
Selection.EntireColumn.Hidden = False
ActiveCell.CurrentRegion.Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True _
, AllowFormattingColumns:=True
End Sub
Como puedo hacer mediante codigo en mis macros para que cada vez que uso mis
botones de ocultar o mostrar no se 'pierda' la contraseña y quede
deshabilitado 'seleccion de celdas protegidas' ?

Preguntas similare

Leer las respuestas

#11 KL
30/12/2005 - 01:48 | Informe spam
Hola Racso,

En las hojas 2 al 16 de la plantilla hay tablas iguales y en igual posición
que constan de 11 columnas y 15 filas. En cada fila de estas tablas el
usuario debe llenar ciertas celdas (desprotegidas) y las demás celdas
(protegidas) tienen fórmulas que llenan por si mismas el resto de las filas .



Tal como te decia antes, es preferible no confiar en el usuario la tarea de determinar el rango usado. Si como dices tanto la
posicion como las dimensiones maximas del rango en cada una de las 15 hojas son constantes (solo te has olvidado de indicar el rango
concreto donde se encuentra la tabla), podrias usar un macro como el siguiente ahorrandote el dolor de cabeza al tratar de predecir
los posibles errores y al usuario quitandole una tarea de encima (solo cambia el rango al que corresponda):

'--
Sub Ordenar0101()
Range("BZ18:CJ32").Sort _
Key1:=Range("CJ18"), _
Order1:=xlDescending
End Sub
'--

o incluso

'--
Sub Ordenar0101()
[BZ18:CJ32].Sort [CJ18], xlDescending
End Sub
'--

Saludos,
KL
Respuesta Responder a este mensaje
#12 KL
30/12/2005 - 02:01 | Informe spam
Hola de nuevo,

Nos quedaba la ultima cuestion.

grupo de mis macros 'funcionen' solo en la 'hoja1' de mi plantilla y el resto
en las 'hojas 2 al 16' ?



Una opcion podria ser incluyendo en el codigo algo como:

1) Para los macros que deben ejecutarse solo en la hoja1

Sub Test()
If ActiveSheet.Name="Hoja1" Then
'el resto de tu codigo
End If
End Sub

Sub Test()
Select Case ActiveSheet.Name
Case "Hoja1"
'el resto de tu codigo
End Select
End Sub

2) Para los macros que deben ejecutarse solo en las hojas 2 a 16

Sub Test()
If ActiveSheet.Name="Hoja1" Then Exit Sub
'el resto de tu codigo
End Sub

o

Sub Test()
If ActiveSheet.Name<> "Hoja1" Then
'el resto de tu codigo
End If
End Sub

o

Sub Test()
Select Case ActiveSheet.Name
Case "Hoja1"
Case Else
'el resto de tu codigo
End Select
End Sub

Saludos,
KL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida