Bloquear celdas con parámetro de ingreso

Tengo un archivo en excel en el cual necesito bloquear unas celdas especificas de aceurdo a un parámetro ingresado, por ejemplo si la celda B5 es igual a Directo la celda B4 debe bloquearse automáticamente, si la celda B5 es igual a Indirecto, la celda B4 mantendrá una lista de validación de datos.
Necesito realizar esto automáticamente, es decir con programación

1 Respuesta

Respuesta
1
Este código hace lo que pides
Private Sub Worksheet_Change(ByVal Target As Range)
    If [B5] = "DIRECTO" Then
Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("B4").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    Range("B5").Select
   End If
   If [B5] = "INDIRECTO" Then
ActiveSheet.Unprotect
End If
End Sub
Debes insertarlo en el código de la hoja
Si necesitas alguna aclaración dímelo
Gracias por tu respuesta.
Pero no me funciona no se que estoy haciendo mal, he copiado el código igual en la hoja necesaria y en la función change
Conprueba si te funciona con mayúsculas
Si es así y quieres minúsculas solo cambia DIRECTO INDIRECTO por directo indirecto
Ya me cuentas
Me sale el siguiente error:
Se ha producido el error '1004' de ejecución:
No se puede asignar la propiedad Locked de la clase Range
Saludos,
Xime
Disculpa tienes razón pon este otro código
Private Sub Worksheet_Change(ByVal Target As Range)
    datos = "b5"
    If Not Application.Intersect(Target, Range(datos)) Is Nothing Then
    If [b5] = "DIRECTO" Then
Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("B4").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    Range("B5").Select
   End If
   If [b5] = "INDIRECTO" Then
ActiveSheet.Unprotect
End If
Application.ScreenUpdating = True
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas