Bloqueo automático de celdas al cerrar libro

Hola amigos tengo un formato de historias clínicas en excel, y programe una macro para que cuando digite un dato en una celda y salga de ella esta se bloquee automáticamente después de introducir un dato. Tengo el siguiente código
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect "abc"
    Target.Locked = True
    Target.FormulaHidden = True
    ActiveSheet.Protect "abc"
End Sub
Lo que quiero hacer es cambiar es código para que no cambie al momento de cambiar de celda. Si no al cerrar el libro, para que me da espera al momento de corregir un dato y la celda no se me bloquee de una vez.
Agradezco por la respuesta.

1 Respuesta

Respuesta
1
Vale tenemos un problema y es que al cerrar el libro desconocemos que celda se ha escrito y por lo tanto te bloqueará toda la hoja, cuando lo abras tendrás que quitar la protección de la hoja para poder escribir, tan solo quitas la primera linea:
Private Sub Worksheet_Change(ByVal Target As Range)
Y la cambias por esta:
Sub Auto_Close()
Te quedaría así:
    Sub Auto_Close()
    Sheets("Hoja1").Select
   Range("B5").Select
    ActiveCell.FormulaHidden = True
    ActiveCell.Locked = True
    ActiveSheet.Protect "abc"
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    End Sub
Suponiendo que la celda en la que tienes interés sea la B5 la cambias a tu necesidad, al cerrar el libro se ejecutará la macro haciendo lo que hacías en la hoja.
Gracias amigo, pero es que esto es precisamente lo que no quiero hacer. Porque los datos de la historia clínica son importantes y no quiero tener que darle la clave a cada uno de los que la utilizan para que desbloquen la hoja y puedan hacer cambios.. Con el código que envíe anteriormente logro hacer esto, que solo introduzcan datos pero que no la puedan cerrar. Lo que quiero es hacer retrasar es macro para que no se ejecute de una vez al salir de la celda o pueda programar el tiempo para que esta se ejecute. Gracias.
Vale disculpa pero desconocía que el archivo era compartido con más personas (tampoco lo habías dicho), pensé que era tuyo y si lo abrían que no pudiesen tocarlo.
Tu has puesto esto:
"Lo que quiero hacer es cambiar es código para que no cambie al momento de cambiar de celda. si no al cerrar el libro, para que me da espera al momento de corregir un dato y la celda no se me bloquee de una vez."
La macro hace eso al cerrar el Libro se bloquea, pero solo las celdas que tu has elegido, si antes de proteger la hoja seleccionas todas las celdas pulsando en el cuadradito que hay encima de fila1 y Col A y después pulsas en cualquier celda con el derecho y eliges la pestaña Proteger y desbloqueas todas, ahora vas pulsando en todas las celdas que quieres bloquear con el botón Control pulsado y eliges en la pestaña proteger Bloqueada, ahora al salir del libro se protegerá la hoja con contraseña, (aunque para que no la sepan debes de bloquear también el proyecto de VBA en VBA>Herramientas>Propiedades de VBAProyect >Protección contraseña y repites.
De esta forma quedará la historia protegida las celdas que quieras pero podrán introducir datos en las que tu les permitas.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas