ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Passing a UDF as an argument to a UDF (https://www.excelbanter.com/excel-discussion-misc-queries/73570-passing-udf-argument-udf.html)

puff

Passing a UDF as an argument to a UDF
 
I'm a bit new to excel VBA and wondered if it is possible to pass a UDF
reference as an argument to a UDF as in:

Sub S1( subReference )
subRefrence()
End Sub

Sub S2()
End Sub

Call S1(S2)

If it can not be done cleanly, is there a workaround such as passing
the name of the function as an argument and then somehow evaluating it
inside the UDF?

Thanks for any clues.


Bob Phillips

Passing a UDF as an argument to a UDF
 
No, pass a key which is evaluated


Sub S1( idx)
Select Case idx
Case 1 : Call S2
Case 2: Call S3
etc.
End Select
End Sub

Sub S2()
End Sub

Call S1(num)

--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)

"puff" wrote in message
ups.com...
I'm a bit new to excel VBA and wondered if it is possible to pass a UDF
reference as an argument to a UDF as in:

Sub S1( subReference )
subRefrence()
End Sub

Sub S2()
End Sub

Call S1(S2)

If it can not be done cleanly, is there a workaround such as passing
the name of the function as an argument and then somehow evaluating it
inside the UDF?

Thanks for any clues.




Dave Peterson

Passing a UDF as an argument to a UDF
 
First, this sounds like it's gonna cause a debugging nightmare, but this worked
for me.

A sub or a function???

Option Explicit
Sub testme()

Dim myStr As String
Dim myVar As Variant

myStr = "myFunct"

myVar = Application.Run(myStr, 12)
MsgBox myVar

myStr = "mySub"
Application.Run myStr

End Sub
Function myFunct(myLong As Long) As Long
myFunct = myLong * 3
End Function
Sub mysub()
MsgBox "hi from mysub"
End Sub

I don't think I'd use it.


puff wrote:

I'm a bit new to excel VBA and wondered if it is possible to pass a UDF
reference as an argument to a UDF as in:

Sub S1( subReference )
subRefrence()
End Sub

Sub S2()
End Sub

Call S1(S2)

If it can not be done cleanly, is there a workaround such as passing
the name of the function as an argument and then somehow evaluating it
inside the UDF?

Thanks for any clues.


--

Dave Peterson

puff

Passing a UDF as an argument to a UDF
 
Thanks Dave, that is what I needed.

As to why, imagine a few hundred tables that must be build where the
code to build differs by only a few parameters AND a single function
that is unique to the table. One could make a general build routine
with a VERY LONG select or simply pass the function by name and run it
as you suggest. Coming from an environment where pointers and
references are generally available, I prefer the Run solution.

Thanks again.



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

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