BLOQUEAR celdas modificadas al cerrar el libro

Tengo un libro de excel con varias hojas, y es utilizado por varias personas.

Necesito que los cambios que realicen los usuarios queden guardados y bloqueados al cerrar el libro

Tengo bloqueadas solo las celdas de los títulos de cada columna.

2 respuestas

Respuesta
1

Pon la siguiente macro en los eventos de tu libro, cambia "abc" por el password que desees que tengan las hojas.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Por.Dante Amor
    For Each h In Sheets
        h.Unprotect "abc"
        h.Cells.Locked = False
        h.UsedRange.SpecialCells(xlCellTypeConstants, 23).Locked = True
        h.Protect "abc", DrawingObjects:=False, Contents:=True, Scenarios:=False, _
            AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
            AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, _
            AllowDeletingColumns:=True, AllowDeletingRows:=True, AllowSorting:=True, _
            AllowFiltering:=True, AllowUsingPivotTables:=True
    Next
    ThisWorkbook.Save
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
  4. Del lado derecho copia la macro

Cuando cierren el libro las celdas de cada hoja quedarán bloqueadas y el archivo se guardará.


Saludos. Dante Amor

No olvides valorar la respuesta.

Respuesta

En el editor de Visual Basic en la parte izquierda selecciona específicamente la hoja donde está el formulario que tus compañeros tienen que rellenar. En ese espacio en blanco escribe:

Private Sub Worksheet_Change(ByVal Target As Range)
    Selection.Locked = True
End Sub

Cada vez que modifiquen una celda esta va a quedar bloqueada (se supone que las desbloqueaste antes).

Por cierto esto funciona si la hoja no está protegida en el momento de modificarla. Si la quieres mantener protegida hay que añadir algo así:

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect
   Selection.Locked = True   
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas