Macro para bloquear una celda

Buenas Noches, necesito ayuda con una macro que me bloquee una celda, según el valor de otra celda. Ejemplo: Si en c6 tengo el valor 2001, d30 debe estar desprotegido, de lo contrario debe estar bloqueada.
De antemano, gracias por su ayuda
(xxxxxx)

1 Respuesta

Respuesta
1
Pega este código en la hoja y realizara lo que pides
Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False
    If [C6] <> "2001" Then
ActiveSheet.Unprotect
Range("D30").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
   Range("C6").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If [C6] = "2001" Then
ActiveSheet.Unprotect
Application.ScreenUpdating = True
End If
End Sub
Si no sabes como hacerlo coméntalo y te explico como
Buenas noches, disculpa no haberme conectado antes, pero en este momento estoy probando la macro que me escribiste y no funciona.
Te explico mejor. Tengo una planilla en un libro, donde introduzco en c6 una serie de códigos dependiendo del trabajador, estos tienen asignados códigos desde el 2001 al 2020, cuando introduzco 2001, debe activarse la celda d30 para introducir un comentario, de lo contrario si no es ese código la celda d30 debe estar protegida. Sin embargo no logro que eso suceda.
Gracias por tu colaboración, la agradezco infinitamente.
Espero cualquier otra sugerencia.
Ami si me funciona aun así cambiala por esta otra pues código te envía siempre a la celda C6
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$6" And Target.Value <> 2001 Then
   Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("D30").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
  Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If [C6] = "2001" Then
ActiveSheet.Unprotect
Application.ScreenUpdating = True
End If
End Sub
Pero como te dige lo has de pegar en el código de la hoja no en un modulo
pruébalas y ya me cuentas
Disculpa tanta molestia, se me olvidó comentarte que funciona protegiendo y desprotegiendo la página completa, sin embargo lo que quiero es que solamente desproteja la celda d30 si se cumple que el valor de c6 sea 2001, de lo contrario permanezca protegida esa celda. No quiero que desproteja la página completa, solo esa celda es la que debe variar según el valor que introduzca en c6.
Mil gracias por tu preocupación
Haber si te entendí bien copia este otro código este te quita y pone el bloqueo en D30 y deja siempre la hoja protegida
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$6" And Target.Value <> 2001 Then
   Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("D30").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
  Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If [C6] = "2001" Then
ActiveSheet.Unprotect
Range("D30").Select
  Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End If
End Sub
Ya me cuentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas