Du anger att det är en array genom att lägga till en parantes på datatypen. Använd dig av array inom funktionen som du sedan retunerar. Detta för att vb tror att du gör ett rekursivt anrop istället för arbetar mot arrayen. Ja det hela är rätt enkelt och rättfram. OK, där ser man. Det jag försöker komma fram till är att man gör en massa onödiga beräkningar i ditt exempel. Om jag vill använda datan i varje element i arrayen(ubound(arrayen)) så innebär det att funktionen anropas lika många gånger som det finns element i arrayen. Det kan betyda en hel del i prestanda sammanhang.. Jag skrev ju att exemplet kanske är lite klumpigt, men testa detta då Heh, jag läste visst inte ordentligt.. Ditt exempel funkar ju som jag vill.Sv: Dimma funktion som array
Exempel:
PUblic Function Test(Value as Long) as String()
Dim Data() as String
Dim Index as Long
ReDim Data(1 to Value)
For Index = 1 to Value
Data(Index) = "Item: " & Index
Next
Test = Data
End FunctionSv: Dimma funktion som array
För det första måste du se till att den variabel som skall ta hand om
returvärdet har samma datatyp som funktionens returnvärde.
Därefter så deklarerar du din funktion på sedvanligt sätt. Jag visar:
Sample Code ===================================
Option Explicit
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 5
Debug.Print stringArr()(i)
Next i
End Sub
Private Function stringArr() As String()
Dim a(1 To 5) As String
a(1) = "Index 1"
a(2) = "Index 2"
a(3) = "Index 3"
a(4) = "Index 4"
a(5) = "Index 5"
stringArr = a
End Function
Sample Code ===================================
Exemplet kanske är lite klumpgt men för att vosa principen bara.
/peterhSv: Dimma funktion som array
Men om jag vill göra så här:
<code>
form_load()
Dim minarray as string()
minarray = retarray 'dvs 'hämta hem' hela arrayen
' för att sedan kunna göra:
for I = 1 to ubound(minarray
'gör något
next I
'osv
end sub
retarray() as string()
Dim a(1 To 5) As String
a(1) = "Index 1"
a(2) = "Index 2"
a(3) = "Index 3"
a(4) = "Index 4"
a(5) = "Index 5"
stringArr = a
end function
</code>Sv: Dimma funktion som array
Är jag helt ute och cyklar, eller bara lite? :D
mvh FransSv: Dimma funktion som array
om detta mer motsvarar dina behov.....
Sample Code =====================================
Option Explicit
Private Sub Form_Load()
Dim i As Integer
Dim minArr() As String
minArr = stringArr()
For i = LBound(minArr()) To UBound(minArr())
Debug.Print minArr(i)
Next i
End Sub
Private Function stringArr() As String()
Dim a(1 To 5) As String
a(1) = "Index 1"
a(2) = "Index 2"
a(3) = "Index 3"
a(4) = "Index 4"
a(5) = "Index 5"
stringArr = a
End Function
Sample Code =====================================
/peterhSv: Dimma funktion som array
Tack,
Frans