|I believe the reason that your code is crashing is (at least) two-fold.|
You are using the WorksheetChange event to change the worksheet and the change you are making is causing an error in the spreadsheet.
Allow me to explain:
First, the user makes a change (choosing an item from the drop down) which triggers the Change event. Then the code makes a change (writing the formula to the cell) which once again triggers the Change event. The code then writes the formula again which triggers the Change event and so on and so on. In the best of cases, the Worksheet_Change event fires twice and then stops once the "second" change is made and the user doesn't even notice that the code fired twice. In the worst of cases, the code goes into a loop of change/fire/change/fire which sometimes it recovers from and other times it doesn't. In your case, it appears that the code is going into an infinite loop and eventually crashing.
The way to eliminate the "multiple fireing" issue is to disable events, allow the code to make the change and then enable events again:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 12 Then
Application.EnableEvents = False
'Code to change worksheet goes here
Application.EnableEvents = True
Now, the thing to be aware of when using this technique is that if your code stops after executing the Application.EnableEvents = False instruction but before executing Application.EnableEvents = True, Events will be disabled until you either enable them within VBA for that session or close Excel and re-open it.
Many of us have been "caught" by that situation during code debugging sessions and have spent way too much time trying to figure out why our Event codes weren't working. We think that there is something wrong with the code when in reality it simply is not firing because Events were disabled and never enabled again.
OK, with that situation taken care of, let's look at your actual code. First, I'm not quite sure why you are using:
If Selection.Row >= 12 Then
If Target.Row >= 12 Then
You will note that the declaration in the first line of the code is:
ByVal Target As Range
I don't think I've ever seen Selection.Row used in a WorksheetChange event, but I'm certainly willing to learn why it might be used.
Now, as for the formula that you are trying to put in the cell...
Since you have enclosed entire formula is quotes, VBA is writing the cells(target.row,7) string in the cell as part of the formula. It is not converting cells(target.row,7) to a cell reference. You will note that VBA does not capitalize the cells(target.row,7) because it sees it as a text string. Once you eliminate the crash (by eliminating the multiple firing of the event code), I believe that you will see a #NAME error in the cell where the formula is being written.
I think that you want to use this:
=VLOOKUP(RC[-1],'Pathfinder All Cat Types'!C[-6]:C[-2],2,0)
So, to wrap up the crash issue, I think what is happening is that the code is going into an infinite loop by trying to continually write an invalid formula into the cell and eventually gives up in a very messy manner.
Two other comments about your code, one minor, one major (I think)
Major: Your code is checking the Row where the change is made, but not the Column. This means that it will fire and insert the formula into Column H when a change is made in any Column, not just a change to your Column G drop downs. Unless you have restricted data entry into all other columns, you may end up with Column H formulas when you don't want them. Since I don't know the layout or operation of your worksheet, I don't know if that is an issue or not.
Minor: I don't know why you are using this instruction:
Is there a reason you are selecting a cell 2 Rows down from where the change was made?
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.