ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Avoiding verbose code (https://www.excelbanter.com/excel-programming/411755-avoiding-verbose-code.html)

Geoff

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



Gary''s Student

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



stefan onken

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



Geoff

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



Geoff

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





All times are GMT +1. The time now is 03:11 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com