title: How to record mouse clicks in Excel VBA?
body: <p>I am trying to make a macro that records what a user clicked, which then records the mouse coordinates and the delay between the clicks. This will then repeat after some other <code>SendKey</code> changes. How can I detect when I click the mouse when the macro is running? I already know how to get the coordinates and record the delay, but what is the best course of action for detecting the mouse click and also what would be the best way to save all this information? A text file? Here is a snippet of the mouse click events that I use:</p>
  
  <pre><code>Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
  Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  Public Type POINTAPI
  x As Long
  y As Long
  End Type
  Public pos As POINTAPI ' Declare variable
  
  Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
  Public Const MOUSEEVENTF_LEFTDOWN = &amp;H2
  Public Const MOUSEEVENTF_LEFTUP = &amp;H4
  Public Const MOUSEEVENTF_RIGHTDOWN As Long = &amp;H8
  Public Const MOUSEEVENTF_RIGHTUP As Long = &amp;H10
  
  Public Sub SingleClick()
  Dim xval, yval
  xval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM X")
  yval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM Y")
  Select Case xval
  Case Is = "" 'Runs calibrate if it can't find an xval
      Call CALIBRATE
      End
  End Select
    SetCursorPos xval, yval  'x and y position
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  End Sub
  </code></pre>
  
  <p>There is another macro that calls <code>SingleClick</code> where it moves to a constant x and y, clicks, does some magic, and returns to the position before the macro started. So to reiterate, is there a simple or easy to understand method to record multiple clicks and delays between clicks and replay them through Excel VBA?</p>