Selected Answer
Good effort! You are really close but you need to reverse your IF statement check.
You had it like this:
If Intersect(Target, Range("BJ5:BL10000")) Is Nothing Then Exit Sub
but you need it like this:
If Not Intersect(Target, Range("BJ5:BL10000")) Is Nothing Then
' Do stuff
End If
Use this as a framework for creating code chunks that run when things happen to certain ranges.
Your new code section would probably be this:
If Not Intersect(Target, Range("BJ5:BL10000")) Is Nothing Then
If Target.Value = "" Then
If r = "" Then Exit Sub
x = Application.Index(Sheets("Key").Range("C1:C20"), Application.Match(r, Sheets("Key").Range("B1:B20"), 0))
If x >= 1 Then Cells(Target.Row, x + 47).ClearContents
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
Exit Sub
End If
x = Application.Index(Sheets("Key").Range("C1:C20"), Application.Match(Target.Value, Sheets("Key").Range("B1:B20"), 0))
If x >= 1 Then Cells(Target.Row, x + 47) = Date
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
End If
The big change is to put Not in the IF statement so it reverses the check and then surround the code to run with the IF statement instead of putting an Exit Sub there.
Side note, you should not just throw out Exit Sub statements all over the place, it makes it harder for you to control the code and maintain it - just encapsulate the code you don't want to run within the IF statement and reverse whatever is the current check with a Not or some other logical condition change.
Update
Here is your second chunk of code updated based on what I said in my answer.
If NOT Intersect(Target, Range("M5:M10000")) Is Nothing Then
If Target.Value = "" Then Exit Sub
Cells(Target.Row, 61) = Application.UserName & " - " & Date
End If
Put both of these chunks of code in the change event. Do this and if it still doesn't work then edit your question with an updated workbook.
Also, stop using Exit Sub's in the middle of the macros, it makes life tougher than needed ;P