Checking message text to determine if there are still boxes to be filled in is a bit clumsy and may not be totally reliable. It would be much better to directly check the boxes themselves. It would also help if you format your code according to the control structure. It is a bit difficult to read.
You have a problem with your Sub naming. You have sub
Private Sub Worksheet_Change(ByVal Target As Range)
and also
Private Sub Workshet_Change(ByVal Target As Range)
The second one will never run because the name is misspelled. Even if it were spelled correctly, you cannot have two Subs with the same name. So you have to combine these.
I cannot test this without your file. Please attach your file for a more thorough answer.
Bookmarks