ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Er...tell me again why I can't pass ParamArray to a Function? (https://www.excelbanter.com/excel-programming/424289-er-tell-me-again-why-i-cant-pass-paramarray-function.html)

[email protected]

Er...tell me again why I can't pass ParamArray to a Function?
 
Y'all set me straight a year ago on how to "pass" ParamArray to a
another Function (sorry about the Google; don't live in the real
world):

http://groups.google.com/group/micro...f9ce718998a088

Since then, this works:

Function Foo(ParamArray VParams()) As String
Dim V() As Variant
V = VParams
Foo = Bar(V)
End Function

Function Bar(VParams) As String
Dim VParam As Variant
For Each VParam In VParams
FlogSelfForInvestingIn(VParam)
Next
Bar = "Dow go bye-bye."
End Function

***

What I don't understand is why you must use an intermediate var. in
Foo. Why can't you do the more intuitive:

Function Foo(ParamArray VParams()) As String
Foo = Bar(VParams())
End Function

Function Bar(ParamArray VParams()) As String

etc.

Thanks much.

***

[email protected]

Er...tell me again why I can't pass ParamArray to a Function?
 
Aw, damn it.

My Q was prompted by several hours' worth of trouble today in trying
to remember & reconstruct the syntax I just told you works for me.

Turns out, it appears intermediate var V() is NOT necessary. This
seems to work:

Function Foo(ParamArray VParams()) As String
Foo = Bar(VParams)
End Function

Function Bar(VParams) As String

etc.

So my only Q now is why Bar's parameter can't be parallel to Foo's.

Thanks again.

***

Bob Phillips[_3_]

Er...tell me again why I can't pass ParamArray to a Function?
 
Because when VParams hits Foo, it is many different parameters, VBA collects
it into an array for ease of use, so you are passing the array on, not each
separate parameter.

--
__________________________________
HTH

Bob

wrote in message
...
Aw, damn it.

My Q was prompted by several hours' worth of trouble today in trying
to remember & reconstruct the syntax I just told you works for me.

Turns out, it appears intermediate var V() is NOT necessary. This
seems to work:

Function Foo(ParamArray VParams()) As String
Foo = Bar(VParams)
End Function

Function Bar(VParams) As String

etc.

So my only Q now is why Bar's parameter can't be parallel to Foo's.

Thanks again.

***




[email protected]

Er...tell me again why I can't pass ParamArray to a Function?
 
Bob:

OK, thanks very much for answering. I think that sets me straight.

***

Charles Williams

Er...tell me again why I can't pass ParamArray to a Function?
 
I can't get that to work unless I use ByVal as in

Function Bar(Byval VParams) As String

Which is doing a copy anyway, even if its not explicit.

If I don't use ByVal I get a compile error 'Invalid use of ParamArray'

(The reason I don't want to do a copy is for performance reasons when the
parameter is a formula creating a large result set)

Charles
___________________________________
The Excel Calculation Site
http://www.decisionmodels.com

wrote in message
...
Aw, damn it.

My Q was prompted by several hours' worth of trouble today in trying
to remember & reconstruct the syntax I just told you works for me.

Turns out, it appears intermediate var V() is NOT necessary. This
seems to work:

Function Foo(ParamArray VParams()) As String
Foo = Bar(VParams)
End Function

Function Bar(VParams) As String

etc.

So my only Q now is why Bar's parameter can't be parallel to Foo's.

Thanks again.

***





All times are GMT +1. The time now is 09:19 AM.

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