First, you need to get a better understanding of the available modules and how they interact. The modules that are assigned to Sheet, Workbook and UserForm objects are, in fact, Class modules. This would not be a big deal, but over time I've discovered that the best way to code anything that will be shared (like little utilities and such) is in a standard Module, one that you add yourself or that is created by recording a macro. If you are going to use your own class, you must then create a reference to it either in an event or in a standard module. Once you code with Office for a few years, this will all make SO much more sense! I rarely use the Workbook or Sheet modules except when I have code that will ONLY use those objects (like Workbook_Open and such). The rest of the time I put any shared code in a standard module, or, if the project is big enough and warrants the extra effort, I'll create my own classes to get a little more object-oriented. If you've never had to use your own classes, this probably won't be of much use either. If the whole Class thing doesn't make a lot of sense now, it will later, but think about the fact that the only Macros you can use from the Excel Menus are the ones defined as Public Subs in standard Modules (well, they will show up preceded by ThisWorkbook! or something, but don't expect them to always work as intended)...
But, to get on with it, what I generally do is make a Module and put something like:
Code:
Public Sub DoSomethingCool(x as String)
Debug.Print "Here is your argument: " & x
End Sub
Then, in the Form or other event code something like:
Code:
Private Sub cmdDoSomething_Click()
DoSomethingCool "My String!"
End Sub
The situation you are describing would probably work best by using a static variable to keep track of how many clicks have been caught, then resetting it in the code that finally executes so that the count can start over again. Potentially, you could drive a user crazy by making them click the button a couple of dozen times before the static var reaches the count that eventually makes the code run. Right off, I can't recall how static variables act in a Form event, but I'm know they work well in a standard Module, where you can define Global variables, system dll calls, etc. that you can't with a Class Module (whether it's your class or one of Excel's). Again, I hope that makes sense, but you seem to know enough about it to figure it out from there.
Oh, and I still have a copy of my Lotto Generator workbook somewhere, which is quite old (Excel97 or 2000, I think), but does illustrate some of these things if you want a copy. Just let me know and I'll dig it up and zip it up for you. Bear in mind that I was still learning at the time, so it's a little messy in places, but is commented pretty good to help make up for it. There aren't any user-defined Classes in it, though in hindsight it probably would have been a good idea in some places.