Avoiding verbose code

  • Thread starter Thread starter Geoff
  • Start date Start date
G

Geoff

Hi
Two custom menu buttons execute the same basic code but with one additional
function provided by the second button.
To avoid repeating the basic (lengthy) code in two modules it would be great
if I could detect which button was selected.
If this is possible then, noting the additional function is executed part
way through the basic code, the pseudo code would look like this:

Sub MenuSetUp()
btn1.OnAction = "MainProc"
btn2.OnAction = "MainProc"
End Sub

Sub MainProc()
basic code
If btn2 selected then do additional function
rest of basic code
End Sub

I'm guessing each button must have a click event to trigger its OnAction
statement but how do I trap this? I'd appreciate any help on this.

Geoff
 
You have pushed the unique actions too far down.

Sub Button1code()
Call Commonstuff
End Sub

Sub Button2code()
Call Commonstuff
do unique stuff
End Sub

There is no reason that Commonstuff must do actions that the specific button
code can perform.
 
hi Geoff,
you could use

Application.Caller(1) or
Application.CommandBars.ActionControl.Index

to get the Index of the pressed button.

Sub MainProc()
basic code
If Application.Caller(1) =2 then do additional function
rest of basic code
End Sub

stefan
 
If I follow you correctly you are suggesting there should be 3 procs so that:

Sub Button1code()
Call Commonstuff1
Call Commonstuff2
End Sub

and

Sub Button2code()
Call Commonstuff1
Uniquestuff
Call Commonstuff2
End Sub

I could do that but it would still be nice to know how to recognise which
button was clicked. <g>

Geoff
 
Hi Stefan

ActionControl.index was what I was looking for.

Thank you for that.

Geoff
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top