title: Calling a private VBA subroutine with Parameter
body: <p>I have a VBA Add-In which is supposed to add functionality to several worksheets. I have a class to listen for worksheet events and trigger macros. This works but I can't seem to call private macros with parameters from it.</p>
  
  <p>My event listener is in a class module and is this:</p>
  
  <pre><code>Option Explicit
  Private WithEvents App As Application
  
  Private Sub Class_Initialize()
      Set App = Application
  End Sub
  
  Private Sub App_SheetChange(ByVal Sh As Object, ByVal Source As Range)
      On Error GoTo Finish
      App.EnableEvents = False
      Call Application.Run("Worksheet_Change", "Source")
   Finish:
      App.EnableEvents = True
  End Sub
  </code></pre>
  
  <p>It is initialized on opening the workbook in a module like so:</p>
  
  <pre><code>Sub Auto_Open()
      Set clsAppEvents = New clsApplicationEvents
  End Sub
  </code></pre>
  
  <p>And the macro I'm trying to call is in a separate module again and takes the form:</p>
  
  <pre><code>Private Sub Worksheet_Change(ByVal Target As Range)
      'Do some work on range
  End Sub
  </code></pre>
  
  <p>I've tried the following ways of calling the macro and none have worked so far:</p>
  
  <pre><code>Call Application.Run("Worksheet_Change", "Source")
  Application.Run "Worksheet_Change", "Source"
  Application.Run "Worksheet_Change" "Source"
  </code></pre>