For version 2000 and later, with the VBE separated from the Access db
window, you can not add custom commands that run your code to menus or
toolbars in the module window. That is why you have to use code. The
manual methods you use for a form or report toolbar do not work in the
VBE environment.
Sure they do. My menu code that worked in a97 now works just fine in a2003..
I would say that 90% of my custom menu bars call, and run my VBA code.
All you need to do is make the code (a function) public, and then simply
place the function name in the buttons on-action event code.
Further, likely often you will have specific code to a particular form, and
once again, you simply declare those functions (in that form) as public.
The syntax to call the code then is:
=YourFunctionName()
The above is placed in the on-action setting. I done this for years, and I
don't
know of any other way to have menus call/run code. The split of the ide
never changed the above, and what I done for years in 97, now works
just fine in a2003
Often, (if not most of the time), you code you call will need to pick up
some information about he current screen etc. So, my code most of the time
starts out, and grabs the current screen name. I use:
Public Function AskInvoicePrint()
Dim tblgroupid As Long
Dim frmActive As Form
Set frmActive = Screen.ActiveForm
tblgroupid = frmActive.frmMainClientB.Form!ID
If frmActive.InvoiceNumber = 0 Then
frmActive.InvoiceNumber = nextinvoice
frmActive.Refresh
End If
DoCmd.OpenForm "guiInvoicePrint", , , "id = " & tblgroupid
End Function
The above is code that the invoice print button runs. note how I right away
pick up the active form. After that, I can easily ref the forms object as if
the code was running much like the code would if put behind a button on the
form. In the above example, I also check if a invoice number has been
generated before printing. And, the Refresh forces a disk write if in fact I
do change the invoice number. And, in addition the above clip also passes
the currently selected sub-form item that the invoice print form needs.
Also, if the code you write is for the particular form, then as mentioned,
you can simply place the code into the forms module code. There is no need
to pick up the active screen...and you can use me. as you
always used.