Updated code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Target.Column > 4 Then Exit Sub
On Error GoTo ErrHandler
Application.EnableEvents = False
If Target.Column = 3 Then
If Target.Offset(0, -1) = "" Then Target.Offset(0, -1) = 0
Else
If Target.Column = 4 Then
If Target.Offset(0, -2) = "" Then Target.Offset(0, -2) = 0
If Target.Offset(0, -1) = "" Then Target.Offset(0, -1) = 0
End If
End If
' Fill any blank rows with 0s ....
Row = Target.Row - 1
For c = 2 To 4
For r = 2 To Row
If Cells(r, c) = "" Then Cells(r, c) = 0
Next r
Next c
ErrHandler:
Application.EnableEvents = True
End Sub
Bookmarks