Passing ParamArray to another function converts it to TWO dimensions.
If I set watch points for Params and SubParams below, I find that
Params has one dimension but SubParams has TWO: Function Func(ParamArray Params) as String ... = SubFunc(Params) End Function Function SubFunc(ParamArray SubParams) as String ... End Function The following (to me) ludicrous kludge fixes the problem, making SubParams the nice, obedient 1-dim array equivalent to Params that it should be: Function Func(ParamArray Params) ... = SubFunc(Params(0)) End Function What in HELL is this? String theory? *** |
Passing ParamArray to another function converts it to TWOdimensions.
Hi,
When you call Func, you would be passing in argument with comma seperated values. e.g. Func(1,2,3,4) ParamArray is intended for variable number of arguments, which will be treated as array internally (when inside method) In case of subfunc, you are passing only 1 argument (which is an array as converted by func) Looking at the code, you are passing the array entirely to SubFunc. So, subfunc will create an array & store your array (as you passed it to Func) - in 0th element HTH Kalpesh |
Passing ParamArray to another function converts it to TWO dimensions.
I think this is the recommended method for passing a paramarray argument to
a sub or function Option Explicit Function tester(arg1 As Variant, ParamArray arg2() As Variant) Dim vv As Variant vv = arg2 tester = test2(vv) End Function Function test2(varg As Variant) test2 = varg End Function regards Charles __________________________________________________ Outlines for my Sessions at the Australia Excel Users Group http://www.decisionmodels.com/OZEUC.htm wrote in message ... If I set watch points for Params and SubParams below, I find that Params has one dimension but SubParams has TWO: Function Func(ParamArray Params) as String ... = SubFunc(Params) End Function Function SubFunc(ParamArray SubParams) as String ... End Function The following (to me) ludicrous kludge fixes the problem, making SubParams the nice, obedient 1-dim array equivalent to Params that it should be: Function Func(ParamArray Params) ... = SubFunc(Params(0)) End Function What in HELL is this? String theory? *** |
Passing ParamArray to another function converts it to TWOdimensions.
Kalpesh & Charles:
Thanks very much for your replies. And you make me understand what's going on. Turns out, I was WRONG in saying that passing single element Params(0) fixed the problem. Params(0) was reduced to 1 dim all right, but it has only 1 element. I'll try your suggestion. Thanks again. *** |
Passing ParamArray to another function converts it to TWOdimensions.
Charles:
Your method works: namely, forget about 'ParamArray' in SubFunc, and just make the arg an array. I hadn't thought of that. Duh. Thanks again. *** |
All times are GMT +1. The time now is 05:12 AM. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com