Применительно к Вашему примеру у меня получилось вот так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count > 1 Then Exit Sub
If .Column = 3 And .Row >= 43 And .Row <= Cells(Rows.Count, 4).End(xlUp).Row Then
If Cells(.Row, 2).Value = "" And .Value <> "" Then Cells(.Row, 2).Value = Date
End If
End With
End Sub