I just (re)discovered something pretty cool.

If you have a macro that takes an argument, like
[VBA]Sub Test(aNum As Double)
MsgBox aNum + 1
End Sub[/VBA]
You can call it, and pass an argument to it, from the Macro dialog box.

Invoke the Macros dialog. (you won't see Test in the list of macros)
Type 'Test 12' (including the apostrophes) into the Macro Name text box
A MsgBox with 13 will appear.

Similarly, you can assign a (forms) button to the macro 'Test 4'.
Pressing the button will cause a MsgBox to show 5.

You can pass arguments to a sub with a button, but only a "hard coded" argument.