ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Function return by reference (https://www.excelbanter.com/excel-programming/306555-function-return-reference.html)

R Avery

Function return by reference
 
I have a class that contains a variant array. I have a public property
that allows access to the variant array. However, the public property
returns the variant array by value. How can I force a function to
return the variant array by reference?


private m_vntData as variant

Bob Phillips[_6_]

Function return by reference
 
Sub test()
Dim myARy
Dim i As Long

myARy = [{1,2,3}]
For i = LBound(myARy, 1) To UBound(myARy, 1)
Debug.Print myARy(i)
Next i

ByRefCall myARy

For i = LBound(myARy, 1) To UBound(myARy, 1)
Debug.Print myARy(i)
Next i

End Sub

Function ByRefCall(ByRef ary)
Dim i As Long

For i = LBound(ary, 1) To UBound(ary, 1)
ary(i) = ary(i) * 2
Next i

End Function

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"R Avery" wrote in message
...
I have a class that contains a variant array. I have a public property
that allows access to the variant array. However, the public property
returns the variant array by value. How can I force a function to
return the variant array by reference?


private m_vntData as variant




R Avery

Function return by reference
 
Sorry if i was not more clear. I wish the function to actually RETURN
the reference, not just set an argument that is passed in as reference.
I want to be able to do things like myClass.myData(1,2) = 3.14..... if
possible, that is. I don't want to have to declare a separate array,
set that array equal to the array in the class, and then set individual
items in the array.

Of course, if this is not possible, then I'll have to turn to solutions
like the one you presented.

Tom Ogilvy

Function return by reference
 
in Bob's example, ary and myary are the same memory space - there is no
duplication. If the array was duplicated, then you would get

1 2 3 1 2 3

rather than

1 2 3 4 5 6

--
Regards,
Tom Ogilvy



"R Avery" wrote in message
...
Sorry if i was not more clear. I wish the function to actually RETURN
the reference, not just set an argument that is passed in as reference.
I want to be able to do things like myClass.myData(1,2) = 3.14..... if
possible, that is. I don't want to have to declare a separate array,
set that array equal to the array in the class, and then set individual
items in the array.

Of course, if this is not possible, then I'll have to turn to solutions
like the one you presented.





All times are GMT +1. The time now is 05:23 PM.

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