You don't really need this check in the StudentAssign function:
I disagree I think you need this check to tell whether the change is done on a cell in column B or column C because the output is different depending on which cell is changed.
I agree that if more than one cell is changed at once then it would be better to loop through them all.