You could use the "passed parm" technique.
But unless the macro is something that I want to use quickly and repetitively,
I'll stay away from the shortcut key (my memory ain't what it used to be).
I use a version of John Walkenbach's MenuMaker program in my personal.xla file:
It looks very nice and is easy to update.
http://j-walk.com/ss/excel/tips/tip53.htm
For those macros that are associated with a single workbook, I'll create a
toolbar when the workbook opens and assign the macro to an icon on that toolbar.
If you're interested, here's a shell that I keep when I want to add a custom
menubar:
In a general module:
Option Explicit
Sub create_menubar()
Dim i As Long
Dim mac_names As Variant
Dim cap_names As Variant
Dim tip_text As Variant
Call remove_menubar
mac_names = Array("mac1", _
"mac2", _
"mac3")
cap_names = Array("caption 1", _
"caption 2", _
"caption 3")
tip_text = Array("tip 1", _
"tip 2", _
"tip 3")
With Application.CommandBars.Add
.Name = "Test99"
.Left = 200
.Top = 200
.Protection = msoBarNoProtection
.Visible = True
.Position = msoBarFloating
For i = LBound(mac_names) To UBound(mac_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & mac_names(i)
.Caption = cap_names(i)
.Style = msoButtonIconAndCaption
.FaceId = 71 + i
.TooltipText = tip_text(i)
End With
Next i
End With
End Sub
Sub remove_menubar()
On Error Resume Next
Application.CommandBars("Test99").Delete
On Error GoTo 0
End Sub
Under Thisworkbook:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call remove_menubar
End Sub
Private Sub Workbook_Open()
Call create_menubar
End Sub
====
The Mac_names, cap_names, and tip_text are set up for 3 elements. But just
delete/add from each of these and the code will loop through them (even if
there's just one) to add buttons to a temporary toolbar.
(make sure you have the same number of elements for each array.)