¿Por qué al proteger hoja la macro ejecutada no cumple las condiciones para bloqueo y desbloqueo según condiciones de Si o NO ?

Tengo una macro que cuando la hoja esta desprotegida funciona bien, pero cuando procedo a protegerla, la macro no funciona como debe ser. Me explico, tengo 3 celdas que cambian a si o no, según referencia, los casos son NO NO NO, SI NO NO, SI SI NO, y SI SI SI, y cuando la celda sea SI el rango debajo de ésta sea editable, pero si cambia a NO, la bloquee. La macro que me suministraron funciona bien, pero cuando la hoja no está protegida, caso contrario, la macro bloquea en celda con NO, pero al cambiar esta celda a SI, el rango sigue bloqueado, cuando debería desbloquearse. Además, que cada vez que las celdas tomen valor NO, borren el contenido del rango. Anexo la macro. Espero su ayuda. Gracias de antemano.

Private Sub Worksheet_Calculate()
    ActiveSheet.Unprotect "1234"
    Range("I12:k43").Locked = False
    If [I11] = "0" Then Range("I12:I43").Locked = True
    If [J11] = "0" Then Range("J12:J43").Locked = True
    If [K11] = "0" Then Range("K12:K43").Locked = True
    Range("I65:K96").Locked = False
    If [I11] = "0" Then Range("I65:I96").Locked = True
    If [J11] = "0" Then Range("J65:J96").Locked = True
    If [K11] = "0" Then Range("K65:K96").Locked = True
    Range("I118:k149").Locked = False
    If [I11] = "0" Then Range("I118:I149").Locked = True
    If [J11] = "0" Then Range("J118:J149").Locked = True
    If [K11] = "0" Then Range("K118:K149").Locked = True
    Range("I171:k202").Locked = False
    If [I11] = "0" Then Range("I171:I202").Locked = True
    If [J11] = "0" Then Range("J171:J202").Locked = True
    If [K11] = "0" Then Range("K171:K202").Locked = True
    ActiveSheet.Protect "1234", DrawingObjects:=False, Contents:=True, _
        Scenarios:=False, AllowFormattingCells:=True, _
        AllowFormattingColumns:=True, AllowFormattingRows:=True, _
        AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
End Sub

Añade tu respuesta

Haz clic para o