Bloquear celda en excel de acuerdo al dato que tenga otra celda y aplicarlo a toda la columna

Quisiera pedirles ayuda para poder tener una macro en la cual, tengo la columna F14 con un valor POR, quiero que el campo G14 se bloquee, si el F14 es POR, si es Y este desbloqueado la celda G14 pero bloqueado H14 e I14, y así aplicarlo a toda la columna F, G, H, I espero puedan ayudarme... Estaba leyendo otras preguntas para tener la macro pero ninguna tiene el tratamiento que necesito.

1 Respuesta

Respuesta
1

Realiza los siguientes pasos

- Selecciona todas las celdas de tu hoja. Entra al menú Inicio, formato, Formato de celdas, Proteger, y desmarca la casilla "Bloqueada", presiona Aceptar

- Ahora selecciona las columnas G, H, I. Entra al menú Inicio, formato, Formato de celdas, Proteger, y Marca la casilla "Bloqueada", presiona Aceptar.

- Protege la hoja, entra al menú Revisar, Proteger hoja, escribe la contraseña, Aceptar, vuelve a escribir la contraseña, Aceptar.

- Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("F:F")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        pass = "abc"
        Select Case Target.Value
            Case "X"    'si el valor es X se bloquean
                ActiveSheet.Unprotect pass
                Range("G" & Target.Row & ":I" & Target.Row).Locked = True
                ActiveSheet.Protect pass
            Case "Y"    'si el valor es Y se desbloquear
                ActiveSheet.Unprotect pass
                Range("G" & Target.Row & ":I" & Target.Row).Locked = False
                ActiveSheet.Protect pass
        End Select
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

- Cambia en la macro "abc" por el password que le hayas puesto a tu hoja

- Cambia en la macro "X" y "Y" por el texto que bloquea y desbloquea celdas.

Listo, las columnas G, H, I están bloqueadas, si por ejemplo en la celda F14 escribes Y, las celdas G14, H14 I14 se desbloquean. Si vuelves a escribir X en la celda F14, las celdas se vuelven a bloquear.


.

.

Muchas gracias Dante...

Entiendo un poco mejor pero lo estoy ejecutando y no me funciona como espero, le modifique con lo que necesito... si F14 tiene valor de RC bloquea la celda G14, si F15 tiene valor de AB desbloquea G15 pero bloquea H15 y I15... y asi sucesivamente...

No es necesario que sea con contraseña, sino que simplemente el campo no permita editar, al tener estos valores... me explique mejor... jejeje pero muchas gracias por tu atención y soporte... si puedes ayudarme nuevamente sería excelente... 

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("F:F")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        pass = "abc"
        Select Case Target.Value
            Case "RC"    'si el valor es X se bloquean
                ActiveSheet.Unprotect pass
                Range("G" & Target.Row).Locked = True
                ActiveSheet.Protect pass
            Case "AB"    'si el valor es Y se desbloquear
                ActiveSheet.Unprotect pass
                Range("H" & Target.Row & ":I" & Target.Row).Locked = False
                ActiveSheet.Protect pass
        End Select
    End If
End Sub

Sigo sin entender muy bien lo que necesitas.

Explica tu ejemplo con datos reales, eso de manejar "x" o "y", no te compliques.

Realiza una secuencia de pasos:

1. Abro excel y voy a la hoja1,

2. La celda F14, al inicio está en blanco

3. La celda G14, cómo va a estar la celda, ¿bloqueada o desbloqueada?

4. Capturas el dato en la celda F14

Si el dato = "" (aquí pones un dato real) la celda G14, se bloquea o se desbloquea

Si el dato = "" (aquí pones el otro dato real), entonces la celda G14, ¿qué?

Y así te sigues con la secuencia de pasos

Hola Dante... 

Claro que sí, aqui te mando la secuencia de lo que debe pasar...

1. Abro excel y voy a la hoja1,
2. La celda F14, F15, F16, F17....etc, al inicio tiene una lista de datos en donde se puede escoger los siguientes valores:
AB
RC
RD
BB

3. La celda G14, esta vacía y desbloqueada al inicio, si el campo F14 aun no se escoge un valor, asi mismo G15, G16.....
de acuerdo a lo que se llene las celdas de F15 y F16

4. las celdas H14 e I14, van a estar al inicio la H14 vacía y desbloqueada la I14 con el valor de 70 fijo, asi mismo H15 e I15...

5. Si yo en la celda F14, escogo la opción AB, las celdas G14 queda desbloqueada y las celdas H14 bloqueada y I14 debe borrar el valor de 70 y bloquearse,
asi mismo si yo escogo la celda F15 o F16 el valor de AB, debe quedar desbloqueado G15 y G16 respectivamente y
bloquear H15 y H16 junto con la I15 y I16 borrando el valor de 70.

6. Si yo en la celda F14, escogo la opción RC, las celdas G14 queda bloqueada y las celdas H14 desbloqueada y I14 quedarse con el valor de 70,
asi mismo si yo escogo la celda F15 o F16 el valor de RC, debe quedar bloqueado G15 y G16 respectivamente dejando vacío la celda si hay algo y
desbloquear H15 y H16 junto con la I15 y I16 sin borrar el valor de 70.

Y asi con el resto de filas F17, F18... mismo tratamiento con G17,G18 etc...
Podemos tratarlo sin password para que no me pida ingresar el password para cambiar desbloquear la celdas, únicamente que estas filas tengan este tratamiento.

Espero me puedas ayudar, muchas gracias

Te anexo el código para cuando escribes AB o RC

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("F:F")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case Target.Value
            Case "AB"    'si el valor es AB se bloquean
                ActiveSheet.Unprotect
                Range("G" & Target.Row).Locked = False
                Range("H" & Target.Row).Locked = True
                Range("I" & Target.Row).Locked = True
                Range("I" & Target.Row).Value = ""
                ActiveSheet.Protect
            Case "RC"    'si el valor es RC se desbloquear
                ActiveSheet.Unprotect
                Range("G" & Target.Row).Locked = True
                Range("H" & Target.Row).Locked = False
                Range("I" & Target.Row).Locked = False
                Range("I" & Target.Row).Value = 70
                ActiveSheet.Protect
        End Select
    End If
End Sub

Ya no utiliza password, pero la hoja tiene que estar protegida para que funcione el bloqueo de celdas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas