this is how my sub looks like:
Sub InsertRowWithContent(rowNo As Long)
This is my .onAction:
.OnAction = "'InsertRowWithContent""" & C & """'"
C is a Long variable declared earlier.
It says macro not found. It worked fine before adding an argument!
I have sucessfully passed arguments with this syntax:
Considerations:
EDIT
My answer above has Access as background. Djikay's answer works fine with Excel. Yet after some digging, I am quiet sure that simply Word doesn't understand either of those syntaxes. Word VBA cannot pass a parameter to a sub in an
OnAction
statement. At least for the moment it's best to accept this.But here is what definitively runs with Word (2010):
Create your command bar and the button. For the
OnAction
, only pass the name of theSub
. But use the button'sParameter
property.Then, access the parameter by the
CommandBars.ActionControl.Parameter
expression:ActionControl
is very similar (if not the same) asActiveControl
under Access: it is the control that was clicked last.Source: http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_24982922.html
*phuu* :-)
You need to add a space after your Sub name, like this:
EDIT
Also, since you're passing a Long parameter, you shouldn't enclose it in quotes.
EDIT 2
OK, this will require some special sauce (code). I've been experimenting and I got the following to work.
In the Sheet1 Excel object:
In a new standard code module, add this:
If you run
MakeToolbar
, it will create a new toolbar in the "Add-ins" ribbon. To remove it, you can runDestroyToolbar
.Once the toolbar is in place, then clicking the button should display a messagebox with the value of
C
(in my example, 100).I've tested the above in Excel 2010 and it worked, in a brand new .xlsm file.