Como bloquear ciertas celdas en excel

Tengo un archivo de excel y quiero que cuando el usuario elija anulación se bloquee ciertas celdas pertenientes a refacturación y cuando elija refacturación se bloquien las celdas de anulación.

Ejemplo.:

En A2 tengo una lista desplegable para que elijas "ANULACION" O "REFACTURACION"

Cuando eliga "Anulacion" esten activadas las celdas C2, H2, N2, O2R2, S2, U2, W2 y bloqueadas las celdas D2, E2, F2, K2, P2, T2, V2.

Y cuando Elija "refacturación" esten activas las celdas D2, E2, F2, K2, P2, T2, V2 y bloqueadas las celdas

C2,H2,N2,O2R2,S2,U2,W2.

Intente el siguiente código, pero no obtuve éxito. Lo encontré en una página y modifique a lo que según necesitaba

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Isect As Range

    Set Isect = Application.Intersect(Target, Range("A3:A2000"))

    If Not Isect Is Nothing Then

        If Isect = "ANULACION" Then

            ActiveSheet.Unprotect "123"

            Isect.Offset(0, 2).Locked = False

            Isect.Offset(0, 7).Locked = False

            Isect.Offset(0, 13).Locked = False

            Isect.Offset(0, 14).Locked = False

            Isect.Offset(0, 17).Locked = False

            Isect.Offset(0, 18).Locked = False

            Isect.Offset(0, 20).Locked = False

            Isect.Offset(0, 22).Locked = False

            Isect.Offset(0, 3).Locked = True

            Isect.Offset(0, 4).Locked = True

            Isect.Offset(0, 5).Locked = True

            Isect.Offset(0, 10).Locked = True

            Isect.Offset(0, 15).Locked = True

            Isect.Offset(0, 19).Locked = True

            Isect.Offset(0, 21).Locked = True

            Call ProtejeHoja

        ElseIf Isect = "REFACTURACION" Then

        ActiveSheet.Unprotect "123"

            Isect.Offset(0, 2).Locked = True elegir

            Isect.Offset(0, 7).Locked = True

            Isect.Offset(0, 13).Locked = True

            Isect.Offset(0, 14).Locked = True

            Isect.Offset(0, 17).Locked = True

            Isect.Offset(0, 18).Locked = True

            Isect.Offset(0, 20).Locked = True

            Isect.Offset(0, 22).Locked = True

            Isect.Offset(0, 3).Locked = False

            Isect.Offset(0, 4).Locked = False

            Isect.Offset(0, 5).Locked = False

            Isect.Offset(0, 10).Locked = False

            Isect.Offset(0, 15).Locked = False

            Isect.Offset(0, 19).Locked = False

            Isect.Offset(0, 21).Locked = False

            Call ProtejeHoja

        Else

            MsgBox "Solo puede indicar ANULACION O REFACTURACION"

        End If

    End If

End Sub

y este es el codigo de la funcion ProtegeHoja

Sub ProtejeHoja()
    ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True,      AllowFormattingCells:=True, _
    AllowFormattingColumns:=True, AllowFormattingRows:=True
End Sub

Respuesta
1

Tu código en apariencia se ve correcto... pero al volcarlo al Editor se observa una línea de error (en rojo):

Quita el texto 'elegir' o colocale una comilla delante para transformarlo en comentario.

Sdos y no olvides valorar las respuestas desde el botón que encontrarás al pie de esta entrada.

Sigue sin hacer efecto la fórmula amiga.

Me pudieras ayudar por favor.

Te adjunto Imagen: Las celdas que tiene las letras negras son las que deben de estar habilitadas para cuando escriban ANULACIÓN, las blancas cuando escriban REFACTURACIÓN y las de color Naranja para ambos.

Gracias

La macro está bien (quitándole ese texto que te marqué en respuesta anterior).

No comentaste en esa oportunidad nada de una tercera opción ni se observan col de naranja en tu imagen.

Entonces, como la macro menciona el rango ("A3:A2000"), la hoja previamente tendrá todas las celdas bloquedas menos las de la col A, a partir de fila 3.

Es decir, que no se ejecuta en fila 2 (C2, H2, ...) sino recién en fila 3. Salvo que ajustes la instrucción del Set Isect

Y revisa también que tengas la macro colocada en el objeto HOJA donde tengas tu tabla.

Sdos y comenta si aún necesitas alguna aclaración.

¡Gracias! por el apoyo y unas disculpas por no responder

Elsa. Disculpa que te moleste.

Ahora me piden que en este archivo mis compañeras puedan poner el filtro común y corriente. Cómo puedo habilitarlo si lo bloqueé con la función de bloqueo. Gracias

Debes comprender que no es lo mismo el bloqueo que la protección.

Tu tabla ahora tiene algunas celdas bloqueadas... que solo se nota ese bloqueo si se encuentra protegida la hoja.

Para poder filtrarla, debes (por única vez) realizar los siguientes pasos:

- Desproteger la hoja,

- Colocar el autofiltro,

- Volver a proteger tildando la opción de Autofiltro. Aquí también lo recomendable sería permitir ajustes de formatos (ancho de col, etc)

De este modo siempre se permitirá filtrar así estén bloqueadas o no las celdas.

PD) Cuando tengas alguna otra consulta, así sea de un tema ya tratado, por favor inicia nuevas consultas titulando cada una con el tema en cuestión para que sirva a otros usuarios también. Aquí hubiese sido 'Filtrar hoja protegida o bloqueada'.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas