Macro para desproteger una celda según texto en otra c
Estimad@
He tratado de llevar a cabo una macro principalmente extrayendo información de este portal pero no he podido aplicarla a mi problemática, ojala me pudieras ayudar, te lo agradecería infinitamente.
Resulta que tengo ciertas celdas de mi hoja protegidas, pero quiero poder crear un formato condicional en el cual, si el texto de la celda C8 es "no", que la celda D8 se pueda desproteger y modificar. Si el valor de C8 es "si", que la D8 se mantenga protegida. Todo esto para 8 filas, y el detalle más importante, es que tengo filas agrupadas, las cuales quiero poder abrir y manejar los datos, ya que normalmente cuando la hoja esta protegida no te permite abrir las celdas agrupadas.
Estuve intentando con este código que mezcle de dos foros anteriores que visite, pero no me permite realizarlo. Seguro que tiene muchos errores porque la verdad que no me manejo casi nada en los fundamentos de visual basic:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("c8").String = no Then
Range("d8").Select
'primero se debe desproteger la hoja , agrega el pass
ActiveSheet.Unprotect "extend"
Selection.Locked = True
'vuelve a proteger la hoja
ActiveSheet.Protect "extend"
.EnableOutlining = True
End If
End Sub
He tratado de llevar a cabo una macro principalmente extrayendo información de este portal pero no he podido aplicarla a mi problemática, ojala me pudieras ayudar, te lo agradecería infinitamente.
Resulta que tengo ciertas celdas de mi hoja protegidas, pero quiero poder crear un formato condicional en el cual, si el texto de la celda C8 es "no", que la celda D8 se pueda desproteger y modificar. Si el valor de C8 es "si", que la D8 se mantenga protegida. Todo esto para 8 filas, y el detalle más importante, es que tengo filas agrupadas, las cuales quiero poder abrir y manejar los datos, ya que normalmente cuando la hoja esta protegida no te permite abrir las celdas agrupadas.
Estuve intentando con este código que mezcle de dos foros anteriores que visite, pero no me permite realizarlo. Seguro que tiene muchos errores porque la verdad que no me manejo casi nada en los fundamentos de visual basic:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("c8").String = no Then
Range("d8").Select
'primero se debe desproteger la hoja , agrega el pass
ActiveSheet.Unprotect "extend"
Selection.Locked = True
'vuelve a proteger la hoja
ActiveSheet.Protect "extend"
.EnableOutlining = True
End If
End Sub
2 Respuestas
Respuesta de parmijo
1
Respuesta de Abraham Valencia
1
Quiero compartir mi código resultante después de validar y probar todo el dia varias de las respuesta de los foros.Con el puedo proteger o desproteger varios rangos, cada uno dependiendo del contenido de una celta especifica.Aqui tienen:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$E$5" ThenIf Target = "NIT" ThenActiveSheet.Unprotect Range("H5:I5").Locked = TrueActiveSheet.ProtectExit SubElse 'If Target = "NO" ThenActiveSheet.Unprotect Range("H4:I5").Locked = FalseActiveSheet.Protect 'End IfEnd If'...... - felix e. campos s.