This will give you some idea of what is needed. It has to be placed in the Workbook code area.
Private Sub EntryControl()
Dim LastRow As Long
Dim rngColI, c, rngUsed As Range
Set rngUsed = Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell))
rngUsed.Locked = False
LastRow = .Cells(.Rows.Count, "I").End(xlUp).Row
Set rngColI = Range("I1:I" & LastRow)
For Each c In rngColI
If c.Value = "" Then
c.Offset(0, 3).Locked = True
Also for the block to be effective the relevant sheet has to be protected. This also only works for the sheet that opens first when the file is opened. If you want it to work on a specific sheet or multiple sheets you will have to modify it to suit. It also only protects down to the last entry in columnI and not to the possible bottom of data in your spreadsheet. That will need a little more work that I cannot do at the moment but you could fix that yourself.