Como Evitar borrar hoja

28/12/2005 - 07:40 por Gabriel Raigosa | Informe spam
Saludos:

Normalmente al proteger un libro se protege la estructura, de esta manera no
se pueden insertar hojas y tampoco eliminar.

Pero si necesito insertar hojas, y lo que quiero es proteger una hoja en
particular contra eliminación ¿como se podria hacer?, la hoja no se puede
ocultar por que es una base de de datos en la cual se agregan datos, y
ocasionalmente se agregan otras hojas y se eliminan (aquellas que aparecen
al dar doble click en un campo de tabla dinamica y luego de imprimir un
reporte se eliminan)

TKS...
Gabriel Raigosa
Medellín - Colombia
GabrielRaigosa@hot.mail.com

Preguntas similare

Leer las respuestas

#11 Héctor Miguel
31/12/2005 - 22:42 | Informe spam
hola, chicos !

KL escribio en el mensaje ...
Para esta parte existe una forma como mas natural que es:
If ActiveWindow.SelectedSheets.Count>1 Then
ActiveSheet.Select
End If
For Each hoja in ActiveWindow.SelectedSheets
Select Case hoja.Name
Case "Hoja1", "Hoja5", "Hoja22"
Case Else
ActiveSheet.Select
End Select
Next hoja
El problema creo que aparte de un procedimiento programado para ejecutarse cada x-momento de tiempo
no hay forma humana de interceptar el proceso de seleccion de multiples hojas ni el clic derecho sobre la pestana, digo yo.



[primero]: estoy totalmente de acuerdo en que no existe 'forma humana' para detectar 'clicks' sobre las etiquetas da las hojas :-(
por lo mismo comentaba que ' ... la unica 'alternativa' [que veo] para detectar una seleccion multiple de hojas... [etc. etc. etc.] '

[segundo]: las propuestas que haces para -> 'evitar' una seleccion multiple de hojas, son perfectamente validas
... aunque de acuerdo con algunos comentarios de Gabriel, parece que SI desea 'permitir' una seleccion multiple de hojas -?-
... cuando menciona 'detalles' como...
... hojas... parcialmente protegidas, si seleciona alguna... desaparece la opcion borrar
... sucedio... que un usuario... al borrar varias hojas de un libro nunca debio borrar la base de datos hoja1
... por ejemplo hoja5, hoja4, hoja1 (y lo hace con la tecla control presionada), estando activa la hoja5
... no detecta la hoja1 como hoja activa ya que se seleciono desde otra hoja activa
... luego con click derecho elimino las hojas inecesarias incluida la hoja1 (pero estando en la hoja5)...
He buscado en la ayuda del VBA un evento que se pudiera poner en "ThisWorkbook" que detectara la selecion de la hoja1...



[tercero]: la 'idea en concreto' que planteaba en la propuesta anterior, programando eventos OnTime [y sus 'inconvenientes']...
la expongo al final del presente con el 'unico' objetivo de 'proteger' la eliminacion de la 'hoja1' del libro -> que tiene el codigo ;)
[dentro de los inconvenientes, estaria el 'tiempo programado' para cada evento OnTime, asi como 'algunos otros' [que ya 'saldran'] :))

si cualquier duda... comentarios ?
saludos,
hector.

en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_Open()
IniciaMonitor
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenMonitor
End Sub

en un modulo de codigo 'normal' ==Option Private Module
Public HojaEnGrupo As Boolean, Siguiente As Date, Hoja
Public Const Cada As String = "0:00:05"
Sub IniciaMonitor(): Siguiente = Now + TimeValue(Cada)
Application.OnTime Siguiente, "IniciaMonitor"
If ActiveWorkbook.Name <> ThisWorkbook.Name _
Then HojaEnGrupo = False Else HojaEnGrupo = NuevoEstado
ActivarComandos
End Sub
Sub DetenMonitor(): On Error Resume Next
Application.OnTime Siguiente, "IniciaMonitor", Schedule:=False
HojaEnGrupo = False: ActivarComandos
End Sub
Function NuevoEstado() As Boolean
If Application.CommandBars("Ply").Controls(1).Visible Then
For Each Hoja In ActiveWindow.SelectedSheets
If Hoja.Name = "Hoja1" Then NuevoEstado = True: Exit For
Next
Else: NuevoEstado = ActiveSheet.Name = "Hoja1"
End If
End Function
Function ActivarComandos()
Dim Barra As CommandBar: On Error Resume Next
For Each Barra In Application.CommandBars
Barra.FindControl(Id:„7, Recursive:=True).Enabled = Not HojaEnGrupo
Barra.FindControl(Id:„8, Recursive:=True).Enabled = Not HojaEnGrupo
Next
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida