¿Cómo puedo desbloquear celdas de una hoja dependiendo del valor de otra celda?

Estoy creando una macro para desbloquear las celdas de una fila dependiendo el valor de una celda especifica: la macro es la siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("$N$16").Value <> "PERSONALIZADO" Then

ActiveSheet. Unprotect "1234"
Range("S16, V16, Y16, AB16, AE16, AH16, AK16, AN16, AG16, AQ16, AT16, AW16, AZ16, BC16, BF16, BI16, BL16, BN16, BO16, BR16, BU16, BX16, CA16, CD16, CG16, CJ16, CM16, CP16, CS16, CV16, CY16, DB16, DE16, DH16, DK16, DN16, DQ16, DT16, DW16, DZ16, EC16, EF16, EI16, EL16, EO16, ER16, EU16, EX16, FA16, FD16, FG16").Locked = True
ActiveSheet. Protect "1234"
Exit Sub

ElseIf Range("$N$16").Value = "PERSONALIZADO" Then
ActiveSheet. Unprotect "1234"
Range("S16, V16, Y16, AB16, AE16, AH16, AK16, AN16, AG16, AQ16, AT16, AW16, AZ16, BC16, BF16, BI16, BL16, BN16, BO16, BR16, BU16, BX16, CA16, CD16, CG16, CJ16, CM16, CP16, CS16, CV16, CY16, DB16, DE16, DH16, DK16, DN16, DQ16, DT16, DW16, DZ16, EC16, EF16, EI16, EL16, EO16, ER16, EU16, EX16, FA16, FD16, FG16").Locked = False
ActiveSheet. Protect "1234"
Exit Sub

End If

End Sub

Sin embargo no se como agregar las demas filas, es decir que si yo modifico el valor de la celda N17 me debloquee las celdas especificas de la fila 17, y cuando le de el valor personalizado a la celda N18 ocurra lo mismo con esa fila sin necesidad de oprimir botones, sino que solo al colocar el valor de la cel "Personalizado" ya me desbloquee el rango de celdas de la misma fila. Tambien cuando la celda tenga un valor distinto a "Personalizado" mantenga la fila bloqueada.

1 Respuesta

Respuesta
2

Te paso la idea para que ajustes tu macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'solo se controla col N a partir de fila 16 - Ajustar rango
If Intersect(Target, Range("N16:N200")) Is Nothing Then Exit Sub
'si se limpia un rango de celdas en col N tampoco se ejecuta
If Target.Count > 1 Then Exit Sub
'guardo la fila
x = Target.Row
'evalua qué se ingreso en Nx
If Target.Value <> "PERSONALIZADO" Then
    Range("S" & x & ",V" & x & ",Y" & x).Locked = False
    'completar con el resto de las celdas
Else
End If
End Sub

Hay muchas celdas,  quizás debas separar la instrucción en 2 o 3 

Sdos y no olvides valorar la respuesta cuando el tema quede resuelto.,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas