title: Excel VBA - always show worksheet on open
body: <p>How can the following conditions be met with VBA code?</p>
  
  <ol>
  <li>A particular worksheet is always displayed on open, even if the worbook is opened without enabling macros.</li>
  <li>A workbook user may save the workbook while working on any worksheet.</li>
  <li>The save must not interfere with the user - no navigating away to a different sheet, no messageboxes, etc.</li>
  <li>The regular save functions (<kbd>Ctrl</kbd>-<kbd>S</kbd>, clicking Save) must remain available and when used must obey the criteria above.</li>
  </ol>
  
  <p>I'd like to avoid the attempted solutions I've listed at the bottom of this question.</p>
  
  <p><strong>Details:</strong><br>
  The workbook is created using Office 2007 on a Windows 7 machine. It is an .xlsm workbook with 2 worksheets, "Scheduler" and "Info." Sheet tabs are not visible. Not all users will enabled macros when the workbook is opened.</p>
  
  <p>Upon opening the workbook, a user will only be exposed to one sheet as follows:</p>
  
  <ul>
  <li>"Info" shows up if macros are disabled, and basically tells anyone who opens the workbook that macros need to be enabled for full workbook functionality. If macros are enabled at this point, "Scheduler" is activated.</li>
  <li>"Scheduler" is where data is stored and edited, and is automatically shown if macros are enabled. It is not presented to the user when the workbook is opened without macros enabled.</li>
  </ul>
  
  <p>"Info" must show up first thing if the workbook is opened and macros are disabled.</p>
  
  <p><strong>Attempted Solutions</strong> (I'm looking for better solutions!):</p>
  
  <ul>
  <li><em>Placing code in the <code>Workbook.BeforeSave</code> event.</em> This saves with "Info" activated so it shows up when the workbook is opened. However, if the user is in "Scheduler" and not done, I cannot find a way in this event to re-activate "Scheduler" after the save.</li>
  <li><em>Using <code>Application.OnKey</code> to remap the <kbd>Ctrl</kbd>-<kbd>s</kbd> and <kbd>Ctrl</kbd>-<kbd>S</kbd> keystrokes.</em> Unfortunately this leaves out the user who saves using the mouse (clicking File...Save or Office Button...Save).</li>
  <li><em>Checking during every action and if needed activating "Scheduler".</em> In other words, inserting code in something like the <code>Workbook.SheetActivate</code> or <code>.SheetChange</code> events to put "Scheduler" back into focus after a save with "Info" activated. This runs VBA code constantly and strikes me as a good way to get the other code in the workbook into trouble.</li>
  <li><em>Placing code in the <code>Worksheet("Info").Activate</code> event</em>, to change focus back to "Scheduler". This leads to the result of "Scheduler", not "Info", showing when the workbook is opened, even with macros disabled.</li>
  </ul>