Puedes usar la protección de la hoja para realizar esta acción...
* Selecciona toda la hoja, desmarca la casilla de "Bloqueada" para que todas las celdas queden libres
* Coloca el siguiente código en vba, dentro de la hoja que usaras
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
c = ActiveCell.Row
CRef = 3 ' <<<Referencia para bloquear
Cbloq = 1 ' <<<Celda a bloquear
ActiveSheet.Unprotect ""
If Cells(c, CRef) <> "" Then
Cells(c, Cbloq).Locked = True
Else
Cells(c, Cbloq).Locked = False
End If
ActiveSheet.Protect ""
End Sub
Cambia las columnas.... CRef es la celda la cual haras referencia para bloquear o desbloquear la cual escribes, Cbloq será la celda que bloquearas
* Una vez echo esto, bloquea tu hoja y agrega la contraseña en tu código dentro de las comillas
Listo! Cada vez que hayan modificaciones en tu hoja podras o no escribir dependiendo si en tu celda de referencia hay algún dato...
Esta puesto para que si la celda no esta en blanco se bloquee... si deseas agregar algo especifico cambia esta linea:
If Cells(c, CRef) <> "" Then
Por esta:
If Cells(c, CRef) = "TU CONDICION" Then