title: global click event handler (WithEvents)
body: <p>I am trying to create a class module that will act as a global handler for when ever someone clicks one of the sixty textboxes I have in my form.  Th textboxes represent a timecard for the week displaying information as clock in, clock out, lunch start,end,duration, total daily hours under each fo the seven days of the week.  When someone clicks anyone of the boxes under a day all the boxes will unlock and enable so that the user can edit the information in them.  </p>
  
  <p>After scouring the web for a solutio of a global click event I found that I could create a class module that would handle the event without create a click event for every single text box that calls a seperate function to handle the event.  The problem I am having is that my class module doesn't seem to be handling my event and was wondering if someone could suggest a solution to my problem.  FYI, All my textboxes and locked and disabled to prevent data corruption.  Below is my code:</p>
  
  <pre><code>''# Class module    
      Option Compare Database
      Option Explicit
  
      Public WithEvents TC_txtbox As TextBox
      ''# Set the textbox so that its events will be handled
      Public Property Set TextBox(ByVal m_tcTxtBox As TextBox)
          TC_txtbox = m_tcTxtBox
      End Property
  
  
      ''# Handle and onClick event of the
      Private Sub TC_txtbox_Click()
          ''# Find out the controls that where clikck
          Debug.Print Form_TimeCard.ActiveControl.Name
          Dim ctl As Control
          For Each ctl In access.Forms.Controls
              Debug.Print ctl.Name
          Next ctl
      End Sub
  </code></pre>
  
  <p>Form Code</p>
  
  <pre><code>Option Compare Database
  Option Explicit
  ''# Global Variables
  Public clk_inout As Boolean
  Public settings
  Public weekDict
  Public weekOf As Variant
  Public curDay As Variant
  Public txtBxCollection As Collection
  ''# Event Handler for when the form opens
  Private Sub Form_Open(Cancel As Integer)
      ''# Configure varaibles
      Me.TimerInterval = 60000 ''# 10 sec Interval
      weekOf = getFirstDayofWeek(Date)
      curDay = Date
      Set weekDict = CreateObject("Scripting.Dictionary")
      Set settings = CreateObject("Scripting.Dictionary")
      Set txtBxCollection = New Collection
  
      ''# Load Time Card Data
      Call initSettings
      ''# Debug.Print "Work Day Goal " &amp; settings.Item("Work_day_goal_hrs")
      Call initDict
      Call initTextBoxEventHandler
      Debug.Print "Collection count " &amp; txtBxCollection.Count
      Call loadDates(Date)
      Call clearDay
      Call selectDay(Date)
      Call loadWeeksData(weekOf)
  
      Dim ctl As Control
      Set ctl = weekDict.Item(Weekday(curDay)).Item("In")
  
      If IsDate(ctl.Value) And (Not ctl.Value = "") Then
          Me.but_clk_inout.Caption = "Clock Out"
          Me.but_lunch.Visible = True
          clk_inout = False
      Else
          Me.but_clk_inout.Caption = "Clock In"
          Me.but_lunch.Visible = False
          clk_inout = True
      End If
      ''# Debug.Print "Work Day Goal " &amp; settings.Item("Salary")
  End Sub
  
  Public Sub initTextBoxEventHandler()
      Dim eventHandler As TextBoxEventHandler
      Set eventHandler = New TextBoxEventHandler
      Debug.Print "Collection count " &amp; txtBxCollection.Count
      Set eventHandler.TextBox = Me.txt_F_in
      txtBxCollection.Add eventHandler
  
      Debug.Print "Collection count " &amp; txtBxCollection.Count
  End Sub
  </code></pre>