I've moved the code you had in the exit event of the grade dropdown to the calculate event of the subforms containing the drop downs you want to populate, SubformFour and SubformFourTwo. This code will be executed whenever the subject or grade fields are changed and also when during the initialization, which also happens when you add a row. (so it's not needed in the exit event).
I needed to change you script objects to pass in the particular instance of the dropdown to populate, as the way it was it was only working with the first occurrence.
I've only done this change for General Music, but hope you can see what needs doing for the others.
You should look in the calculate event of the subforms SubformFour and SubformFourTwo, you don't need the code in the click event of add button or exit of grade level.
What you will need to do is make the changes to look at the General Music script object and change the other ones to match, which is to pass in the subform they are working on, so the code can be reused on the subsequent subforms.
Well yes in the initialize event you can browse through the first drop down list's items to retrieve them all and repopulate the list based on that. Make sure that it populates the data only if the drop down list's instance is greater than 1