Your code seems rather complicated but I don't completely understand what you're trying to do. You have many, many Subs that do similar but not quite the same things, and I think it is tangling you up a bit.
Let's take a case study where the user updates the data in N11, and enters a 0. When ChangeEvent4 is called, it finds that Target is in the range N3:R313 so continues. The Target value is something other than "No Data", so then it selects Target and calls ChangeData1. See my note below.
Also, in ChangeEvent4, you have this inexplicable line of code, which might be part of the problem:
This condition will never be true, because 1 = 0 will never be true. I can't figure out what you intended to do here. If you are trying to test for an odd column then you want
I see a few problems in the code structure. The first thing I will suggest is you nearly never use Select and act on Selection. It is more reliable to act directly on the desired range, for two reasons. First, changes in code that change what is selected and where it is selected can cause unpredictable bugs that are hard to trace. Second, selection causes activity visible to the user and slows down execution. So for example, I would recode the code above as
Bookmarks