Ícono del sitio Formulas Excel

El arte de bloquear celdas en excel

Síguenos y dale Like:
20k
7400
1k

Esta vez les mostrare una forma de bloquear celdas según condición en excel, Ocasionalmente al diseñar tus Aplicaciones Excel es necesario asegurarse que algunas celdas estén bloqueadas para edición, esto con el fin de asegurarse que no se eliminen formulas o para evitar que se ingresen datos donde no se debe.

Bloquear celda según texto ingresado en otra celda

La idea básica es que al ingresar cierto texto en una columna determinada en la celda de la misma fila pero en otra columna sea bloqueada.

En este caso particular al ingresar el texto “Entrada”, la celda en la misma fila pero de la columna Cant. Salida sea bloqueada y “Cant. Entrada” quede libre para editar.



 

Desbloquear todas las celdas de la hoja

Para que el bloqueo y desbloqueo de celdas funcione de manera automática con una macro, primero es necesario desbloquear todas las celdas de la hoja, esto es porque en el proceso se protegerá la hoja, de manera predeterminada todas las celdas están bloqueadas, es por eso que cuando se protege la hoja todas las celdas quedan sin acceso para edición.

Para desbloquear todas las celdas siga este procedimiento.

1.- seleccionar todas las celdas de la hoja.

2.- Click derecho dentro de la selección / Formato de celdas / Proteger … Desactivar la casilla “bloqueada” / Aceptar

Macro para proteger celdas según condición en Excel

Una vez que se han desbloqueado todas las celdas, procedemos a escribir el código de la macro que realizara el trabajo.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Isect As Range

    Set Isect = Application.Intersect(Target, Range("RangoTipo"))

    If Not Isect Is Nothing Then
        If Isect = "Entrada" Then
            ActiveSheet.Unprotect "123"
            Isect.Offset(0, 1).Locked = False
            Isect.Offset(0, 2).Locked = True
            Call ProtejeHoja
            ElseIf Isect = "Salida" Then
            ActiveSheet.Unprotect "123"
            Isect.Offset(0, 1).Locked = True
            Isect.Offset(0, 2).Locked = False
            Call ProtejeHoja
        Else
            MsgBox "Solo puede indicar Entrada o Salida"
        End If
    End If
    End Sub

Para insertar esta macro de evento en la hoja, solo de click derecho en la pestaña con el nombre de la hoja y luego click en ver código.

Al ser una macro de evento, esta se desencadena cuando algo sucede, en este caso es cuando se hace algún cambio en las celdas de la hoja, la macro comprobara primero si el cambio fue realizado en la columna B a partir de la fila 2, luego comprueba si el texto ingresado es “Entrada” o “Salida”, en cuyo caso bloqueara o desbloqueara las celdas que correspondan.

Proteger hoja

Cuando se ingresa ya sea el texto Entrada o Salida, se procede a bloquear y desbloquear las celdas que correspondan, pero también es necesario proteger la hoja para el bloqueo de las celdas tenga efecto real.

En la macro de evento se llama a la función ProtejeHoja, esta función la vamos a poner en un modulo normal.

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

Esa funciones protege la hoja activa con la contraseña “123”, pero deja algunas opciones disponibles como es dar formato a las celdas.

Como se ha podido observar, la macro no es muy complicada, ademas, al ser tan sencilla no debería ser problema para que la adaptes a tus necesidades particulares.

Espero tus comentarios y nos vemos en el próximo post.

Síguenos y dale Like:
20k
7400
1k
Salir de la versión móvil