Passing a UDF as an argument to a UDF

P

puff

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.
 
B

Bob Phillips

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)
 
D

Dave Peterson

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.
 
P

puff

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.
 

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

Top