Hi there,

I realize your request is some weeks back (was away) below is an updated code which should do what you require.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WorkRng As Range, roww As Long
    Dim rng As Range
    
    Set WorkRng = Intersect(Range("B4:B3000"), Target)
    If Not WorkRng Is Nothing Then
        Application.EnableEvents = False
            For Each rng In WorkRng
                roww = rng.Row
                If Not rng.Value = "" Then
                    Cells(roww, "D").Value = 200  ' <- this is the value to show in column D
                    Cells(roww, "H").Value = "No"  ' <- this is the value to show in column H
                Else
                    Cells(roww, "D").ClearContents ' <- Clear column D if column B is cleared
                    Cells(roww, "H").ClearContents ' <- Clear column H if column B is cleared
                End If
            Next
        Application.EnableEvents = True
    End If
End Sub