title: Making sure public VBA methods don't show up in the list of Excel macros
body: <p>In Excel VBA (2003), I've noticed that any <strong>Public</strong> or <strong>Friend</strong>  <strong>Sub</strong> method in either a module or <em>ThisWorkbook</em> that doesn't have any arguments will show up as a Macro that can be run by the user. I.e. when the user goes to Tools --> Macro --> Macros... (or Alt+F8) the method will show up in the list that can be run.</p>
  
  <p>For sanity's sake (organization, maintenance, etc) I do need to separate the code into modules. I'm hoping to find a non-hacky way to hide some methods from the user, but still allow them to be visible to other code modules. Note that all the code is contained within the same <em>application</em>, so no external code is called.</p>
  
  <p>My current work-around is to use <strong>Function</strong>s that return a boolean instead of <strong>Sub</strong>s, and just ignore the return value. eJames suggested the option of using an optional argument in the <strong>Sub</strong>, which will also hide the method from the list of macros.</p>
  
  <p>Neither of these feel quite right, however, so any advice about how to structure a non-trivial Excel VBA application would be much appreciated.</p>