The problem with your question is you never really told use how you want this to work. After reading over everything here I think you want to call a macro from the list of macros. I assume you will always be sorting Sheet1. I think you want this in a standard module (like Module1):
You can now call this from the list of macros, or add a button on your worksheet to call it. (Personally, I would use Autofilter on the worksheet and not even write a macro for this.)
Here's why your other attempts did not work:
Your original attempt used Worksheet_Change which is automatically called when the user changes the content of any cell. Target is the current range that the user has selected. Since you are not using that, I don't know why you would be using this sub. That is what hampered everything else you tried.
Worksheet_SelectionChange is an event handler. It is automatically called by VBA anytime that the user changes the cell selection. It can be called from another sub but that is not the intent and I don't recommend it. Same idea.