I don't know why your code isn't doing what you want, at a casual glance,
but I recommend you take a different approach to handling your worksheets.
Relying on "active sheet" is not a good idea. And in fact you have a
mixture of "active sheet" and "object" accesses to your sheets.
What I believe you should do is define as many WorkSheet variables as you
have worksheets. Right at the beginning, set each of these to be a
reference to their respective worksheets. (If you like, you could even
create an array of WorkSheet references, aligned with the MultiPage1.Value
values. Then you can just use the page number as an index into the
WorkSheet references array.)
Then, use these WorkSheet variables in dot notation for each reference to
Range, Cells, etc. For subroutines, pass the particular WorkSheet variable
as a parameter. Or possibly store it in a global "ws" variable.
Don't forget the With phrase, which you can use to avoid repeating the
WorkSheet reference over and over again.
Just scanning your code again, I can't see where you initialise RowNumber
when you change pages.