Bloquear rango (cambiante) de un fila de acuerdo a un valor

Quisiera me ayudaran con lo siguiente

Tengo una tabla que se va llenando de acuerdo a unos valores en forma de filas.

Cuando finalice de llenar los datos correctos de una fila.. Pensaba poner una celda con un SI, NO para que al ser ese valor si se bloque ese rango de la fila... Pero la idea es que pueda copiar para que mientras vaya aumentando la tabla se vaya actualizando el rango de la fila y no lo tenga que hacer manual..

1 respuesta

Respuesta
2

Entrá al Editor, seleccioná con doble clic el objeto HOJA donde vayas a trabajar y allí copiá esta macro. Debes ajustar los límites como te lo indico en el código.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde

'solo controla contenido en col M a partir de fila 3 (AJUSTAR)
If Target.Column <> 13 Or Target.Row < 3 Then Exit Sub
'solo se ejecuta si el valor ingresado es "SI"
If UCase(Target.Value) = "SI" Then
'bloquea un rango de la fila activa  -- AJUSTAR RANGO
ActiveSheet.Unprotect    'COLOCAR CLAVE
Range("A" & Target.Row & ":J" & Target.Row).Locked = True
ActiveSheet.Protect
End If
End Sub

Si tu hoja tendrá clave las instrucciones de protección debe incluirla:

ActiveSheet. Unprotect "tu_clave" 'esto en las 2 líneas

Hola Elsa ante todo mil gracias por la ayuda... pero la idea es que me bloquee solo la fila en la que estoy entrando datos y que este el "SI" porque si por ej: estoy en la fila 3 y lleno los datos y le pongo "SI" me bloquee esa fila 3 y por eje si bajo la fila 4 me permita seguir entrando datos... y así sucesivamente con la 5,6,7,8 etc... además la columna donde va el "SI" no se debe bloquear por si necesito hacer un cambio pueda ponerle "NO" y hacerlo... todo esto es más para evitar eliminación accidental de los datos en ciertas filas que son muy importantes en mi tabla y como lo abren varias personas a veces accidentalmente me cambian valores ya digitados días antes.

Y eso es exactamente lo que hace la macro.

Quizás no sepas cómo trabaja Excel el bloqueo. De modo predeterminado todas las celdas van bloqueadas, que se hace efectivo cuando proteges la hoja.

Por lo tanto si aún no estás trabajando con hoja protegida quizás no te diste cuenta que todas tus celdas ya están bloqueadas.

Lo primero que debes hacer entonces (con hoja desprotegida) es seleccionar el rango donde quieras permitir el ingreso de datos. Supongamos que sea col A:J y la col M para ingresar el criterio, a partir de fila 3. Con esta selección vas al menú Formato de Celdas y desde la pestaña Protección le quitas el tilde a la opción de bloqueo.

Ahora debes proteger la hoja.

Y ahora ya podrás trabajar en ese rango hasta que en col M ingreses un SI.

NOTA: Como no comentas nada acerca de cuál será tu col donde coloques el SI te comenté que debes ajustar estas referencias. Donde digo M, J o fila 3 debes ajustar a tu caso o aclararlo.

PD) La instrucción de bloqueo respeta la fila de la celda donde colocaste SI

Range("A" & Target.Row & ":J" & Target.Row).Locked = True

No mencionaste nada acerca del NO ... pero si necesitas que se desbloquee, entonces tu macro quedaría así (PARA LAS REFERENCIAS DE MI EJEMPLO):

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'solo controla contenido en col M a partir de fila 3 (AJUSTAR)
If Target.Column <> 13 Or Target.Row < 3 Then Exit Sub
'solo se ejecuta si el valor ingresado es "SI"
If UCase(Target.Value) = "SI" Then
    'bloquea un rango de la fila activa  -- AJUSTAR RANGO
    ActiveSheet.Unprotect    'COLOCAR CLAVE
    Range("A" & Target.Row & ":J" & Target.Row).Locked = True
    ActiveSheet.Protect
ElseIf UCase(Target.Value) = "NO" Then
    ActiveSheet.Unprotect    'COLOCAR CLAVE
    Range("A" & Target.Row & ":J" & Target.Row).Locked = False
    ActiveSheet.Protect
End If
End Sub

Sirve para cualquier modo en que ingreses el texto (si, SI, sI, Si)

Sdos y si el tema quedó resuelto no olvides valorar la respuesta.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas