Macro para bloquear celdas escritas en Excel

Tengo la siguiente macro, pero yo quiero que solo se aplique a la Hoja1. ¿Es posible?

Private Sub Workbook_BeforePrint(Cancel As Boolean) 'Proteger celdas con información 'Por.Dam Application.ScreenUpdating = False ActiveSheet.Unprotect Password:="123" Set Rango = Range("A1:V1000") For Each celda In Rango.Cells celda.Select If celda = "" Then Selection.Locked = False Selection.FormulaHidden = False Else Selection.Locked = True Selection.FormulaHidden = False End If Next Application.ScreenUpdating = True ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

2 Respuestas

Respuesta

Yo necesito algo por el estilo no se si me pueden ayudar con un ejemplo

Respuesta
2

La macro menciona 'ActiveSheet', entonces previamente debieras preguntar si la hoja activa es Hoja1:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

'x Elsamatilde

If activeSheet.name <> "Hoja1" then exit sub

'Proteger celdas con información

'aquí sigue el resto

End Sub

gracias elsa tu macro me sirve parcial lo que pasa es que con esa instrucción solo guarda cuando antes de cerrar estoy en la hoja1 (DATOS) pero sino estoy en la hoja 2 (aunque haya modificado la hoja 1 )no me guarda y lo que yo necesito es que siempre me guarde y bloquee la hoja 1 cuando yo cierre el archivo.

En la macro que mande inicial la instrucción era después de imprimir pero después la cambie a después de cerrar. Te la envío completa con tu instrucción incorporada.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'x Elsamatilde If ActiveSheet.Name <> "DATOS" Then Exit Sub 'Proteger celdas con información Application.ScreenUpdating = False ActiveSheet.Unprotect Password:="123" Set Rango = Range("A1:V1000") For Each celda In Rango.Cells celda.Select If celda = "" Then Selection.Locked = False Selection.FormulaHidden = False Else Selection.Locked = True Selection.FormulaHidden = False End If Next Application.ScreenUpdating = True ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Son 2 cosas distintas.... Para antes de imprimir estaba bien lo que te envié, hacía justamente lo que solicitabas.

Si la idea ahora es controlar antes del cierre que siempre la hoja1 se guarde y bloquee sería así:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'x Elsamatilde

'Proteger celdas de hoja DATOS - Se posiciona en la hoja
Application.ScreenUpdating = False

Sheets("DATOS").select

ActiveSheet.Unprotect Password:="123"

Set Rango = Range("A1:V1000")

For Each celda In Rango.Cells celda.Select

If celda = "" Then

Selection.Locked = False
Selection.FormulaHidden = False

Else

Selection.Locked = True
Selection.FormulaHidden = False

End If

Next

ActiveSheet.Protect Password:="123", DrawingObjects:=True,
Contents:=True, Scenarios:=True

Application.ScreenUpdating =True
End Sub

Cambié el orden de algunas líneas. Lo que hará la mcro es pasar a la hoja DAtos y hacer la tarea antes de cerrar el libro.

Gracias Elsa, siempre había mirado tus respuestas y esperado que me contestaras tu alguna. Estoy muy agradecida.

Saludos desde Chile

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas