ADG
Sorry misunderstood question. I have a start of an answer. You need to add some variables at a module level
Public LastRange As Range
Public Warned As Boolean
The add the below code to your worksheet, then save and close. I think it should work when you re open the worksheet.
Private Sub Worksheet_Activate()
Set LastRange = ActiveCell
Warned = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Range("C:C"), Target) Is Nothing Then
If Target.Value = "No" Then
Range("D" & Target.Row).Select
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim rsp
If Warned = True Then
Warned = False
Else
If LastRange.Column = 4 Then
If Range("C" & LastRange.Row).Value = "No" Then
If Len(LastRange.Value) = 0 Then
Warned = True
Range("D" & LastRange.Row).Select
rsp = MsgBox("Please enter reason", vbOKOnly)
End If
Else
Set LastRange = Target
End If
Else
Set LastRange = Target
End If
End If
End Sub
I hope the above puts you on the right path