Worksheet_Change macros are triggered when a cell value is changed on the sheet. If the macro itself then writes a change onto the sheet, it triggers the macro again. Oops.
So it is typical that you turn off other macros until the ws_change macro is done with its work, then turn them back on. This avoids issues.
Also, typically ws_change macros need some code to first test that the correct cells were changed before it does anything else.
Lastly, you need to insure the macro performs properly if a bunch of cells are changed at the same time. Most people who are only watching one cell exit the sub if that happens, I like to loop through all the cells and see if one of them was actually the watched cell.
Having said that, here's how I would write your ws_change macro:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim cell As Range
For Each cell In Target
If cell.Address = "$C$9" Then
Application.EnableEvents = False
Select Case cell.Value
Case "AIR"
Range("D8").Value = "AIRPLANE"
Case "BLC"
Range("D8").Value = "BUILDING"
End Select
GoTo Done
End If
Next cell
Done:
Application.EnableEvents = True
End Sub
Bookmarks