Hi,
I'm not quite sure why you email macro needs to repeat some of the lines, and no doubt that could be tidied up. However perhaps the most logical way would be to Dim a variable that says whether Sheet9 is present and then set the variable accordingly, i.e.
Dim sht9 As Boolean
Dim ws As Worksheet
Then in the second part of your emailing macro after you've set rng in the With Sheets("Sheet9") block use the following instead
Incidentally it's much better practice to use VBA code names for sheets rather than sheet tab names. Some day you'll come unstuck when a user decides to change a sheet tab name.
Bookmarks