Para bloquear celdas dependiendo de dos variantes

Manejo base de datos, con dos variantes "CON Y SIN CARPETA" por lo que al seleccionar una de ellas se refiera a celdas especificas a cada criterio, como bloquear las celdas con carpeta si he seleccionado sin carpeta y viceversa. De igual forma que se cambie su color más obscuro.

Además si es posible que se maneje en una sola celda con lista desplegable " CON Y SIN CARPETA" y al seleccionarla se cumpla lo antes expuesto. Gracias de antemano

2 Respuestas

Respuesta
1

GRACIAS ES DE MUCHA AYUDA PERO LA PRIMERA PARTE ESPERO Y PUEDA SER CLARO EN ESTA IMAGEN SALUDOShttps://www.dropbox.com/s/vrkunm6g6qbnxh6/Nueva%20imagen%20de%20mapa%20de%20bits.bmp?dl=0 

Respuesta
1

Empiezo por responderte la 2da parte de tu consulta: En una sola celda tener las 2 opciones. Debes seleccionar la celda donde quieras mostrar el desplegable y desde menú Datos, Validación optá por 'Lista' (en campo 'Permitir') y en 'Origen' escribí esta cadena:

CON CARPETA; SIN CARPETA

Para desarrollar la macro, necesitaré que me confirmes en qué celda tendrás el desplegable, el rango de datos en tu y en qué col se encontrará el valor que indique si es con o sin carpeta.

¡Gracias! 

Entrá al Editor de macros (con ALT y F11), selecciona con doble clic el objeto HOJA Basededatos... (del panel a tu izquierda) y allí copiá esto.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'no se ejecuta si se seleccionan varias celdas al mismo tiempo
If Target.Count > 1 Then Exit Sub
'si se borra el contenido de la celda .....FALTA evaluar
If Target.Value = "" Then Exit Sub
'solo se ejecuta al cambio en celdas del rango E7:F12
If Intersect(Target, Range("E7:F12")) Is Nothing Then Exit Sub
'se trata de cambios en el rango-desprotejo la hoja
ActiveSheet.Unprotect
If Target.Column = 5 Then
    'corresponde a 'con carpetas', desbloquea la fila entre col AJ:AW
    Range("AJ" & Target.Row & ":AW" & Target.Row).Locked = False
Else
    'se trata de 'sin carpetas', desbloquea la fila entre col AX:AZ ---FALTA AJUSTAR
    Range("AX" & Target.Row & ":AZ" & Target.Row).Locked = False
End If
'vuelve a proteger la hoja
ActiveSheet.Protect
End Sub

Aquí lo dejé en el evento Change, es decir que cuando ingreses un valor en alguna de las celdas E7:F12 se ejecutará.

Si lo necesitas solo al 'seleccionar la celda), cambiá la primer línea de la macro por esta otra:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dejo explicaciones en cada línea para que puedas ajustar los detalles que faltan ... o me avisas y te envío la línea ajustada. Por ej, hasta dónde llega el rango 'sin carpetas' (en la imagen no se aprecia)

Si tu hoja está protegida con clave las instrucciones tanto para Unprotect como Protect serían:

ActiveSheet.Unprotect "tu_clave"

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas