Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Avoiding verbose code
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 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Avoiding verbose code
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. -- Gary''s Student - gsnu200789 "Geoff" wrote: 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 |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Avoiding verbose code
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 On 30 Mai, 11:13, Geoff wrote: 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 |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Avoiding verbose code
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 "Gary''s Student" wrote: 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. -- Gary''s Student - gsnu200789 "Geoff" wrote: 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 |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Avoiding verbose code
Hi Stefan
ActionControl.index was what I was looking for. Thank you for that. Geoff "stefan onken" wrote: 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 On 30 Mai, 11:13, Geoff wrote: 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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Avoiding #N/A | Excel Discussion (Misc queries) | |||
Avoiding #N/A | Excel Discussion (Misc queries) | |||
Avoiding page breaks across merged cells - Code not working as expected | Excel Programming | |||
Avoiding #NUM! | Excel Worksheet Functions | |||
Avoiding 400 Error code | Excel Programming |