mhdhallak
asked on
Function resturn array...
How can I set up a function that returns an array?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You can also do this by using Variants.. an Example follows:
<----- Code Begin ----->
Option Explicit
Private Sub Form_Load()
Dim strWork() As String
Dim intWork() As Integer
Dim varWork As Variant
ReDim intWork(3)
intWork(0) = 1
intWork(1) = 2
intWork(2) = 3
varWork = intWork()
strWork() = MyFunction(varWork)
MsgBox (intWork(0) & " = " & strWork(0) & vbCrLf _
& intWork(1) & " = " & strWork(1) & vbCrLf _
& intWork(2) & " = " & strWork(2) & vbCrLf)
End Sub
Private Function MyFunction _
(ByRef varTable As Variant) _
As Variant
Dim intNumbers() As Integer
intNumbers() = varTable
Dim strStrings() As String
ReDim strStrings(UBound(intNumbe rs))
Dim intIndex As Integer
For intIndex = 0 To UBound(intNumbers)
strStrings(intIndex) = intNumbers(intIndex) & " *** "
intNumbers(intIndex) = intNumbers(intIndex) + 10
Next intIndex
MyFunction = strStrings()
End Function
<----- Code End ----->
<----- Code Begin ----->
Option Explicit
Private Sub Form_Load()
Dim strWork() As String
Dim intWork() As Integer
Dim varWork As Variant
ReDim intWork(3)
intWork(0) = 1
intWork(1) = 2
intWork(2) = 3
varWork = intWork()
strWork() = MyFunction(varWork)
MsgBox (intWork(0) & " = " & strWork(0) & vbCrLf _
& intWork(1) & " = " & strWork(1) & vbCrLf _
& intWork(2) & " = " & strWork(2) & vbCrLf)
End Sub
Private Function MyFunction _
(ByRef varTable As Variant) _
As Variant
Dim intNumbers() As Integer
intNumbers() = varTable
Dim strStrings() As String
ReDim strStrings(UBound(intNumbe
Dim intIndex As Integer
For intIndex = 0 To UBound(intNumbers)
strStrings(intIndex) = intNumbers(intIndex) & " *** "
intNumbers(intIndex) = intNumbers(intIndex) + 10
Next intIndex
MyFunction = strStrings()
End Function
<----- Code End ----->
ASKER
Sorry guys. But Eric was the first one to answer the question and I worked out his answer and it was right.
Erick37 - would you mind sending me an e-mail please, it's quite urgent. deathtospammers@eircom.net
<----- Code Begin ----->
Option Explicit
Private Sub Form_Load()
Dim strWork() As String
Dim intWork() As Integer
ReDim intWork(3)
intWork(0) = 1
intWork(1) = 2
intWork(2) = 3
Call MySubroutine(intWork(), strWork())
MsgBox (intWork(0) & " = " & strWork(0) & vbCrLf _
& intWork(1) & " = " & strWork(1) & vbCrLf _
& intWork(2) & " = " & strWork(2) & vbCrLf)
End Sub
Private Sub MySubroutine _
(ByRef intNumbers() As Integer, _
ByRef strStrings() As String)
Dim intIndex As Integer
ReDim strStrings(UBound(intNumbe
For intIndex = 0 To UBound(intNumbers)
strStrings(intIndex) = intNumbers(intIndex) & " *** "
intNumbers(intIndex) = intNumbers(intIndex) + 10
Next intIndex
End Sub
<----- Code End ----->