That makes sense.
Sorry for being inappropriate.

What kind of selection did you do?
If I Ctrl+Click row 2 & Ctrl+Click row 3 then run the code, it works fine.

If I Ctrl+Click row 2 & Ctrl+Click row 4 then run the code, it does not work.

If I Click row 2 & Shift+Click row 6 & Ctrl+Click row 7 then run the code, it works fine.

If I Click row 2 & Shift+Click row 6 & Ctrl+Click row 8 then run the code, it does not work.

The problem seems to be happening here.
OldData = rng.Value 'the values of the selected range is stored in OldData
If I step through the code and look at the details of this array, it is only showing 5 rows of data even though I really selected 6 rows. (Click row 2 & Shift+Click row 6 & Ctrl+Click row 8)