Inhoudsopgave
Dit artikel laat zien hoe u een array kunt retourneren met behulp van een VBA-functie.
VBA-functie Return Array
Bij het gebruik van functies om arrays te retourneren, raad ik ten zeerste aan om arrays met typevariant te declareren:
123 | Functie ReturnArray() Als variantFunctie beëindigen |
Variantmatrices zijn gemakkelijker om mee te werken. De arraygrootte wordt minder een probleem.
Functie Return Array Voorbeelden
Hier is een voorbeeld van een functie die een array retourneert:
1234567891011121314151617181920212223242526272829 | Functie ReturnArray() Als variantDim tempArr As Variant'Nieuwe tijdelijke array maken'TempArr opnieuw dimmen (1 tot 3, 1 tot 2)'Array-waarden toewijzen'tempArr(1, 1) = "Steve"tempArr(1, 2) = "Johnson"tempArr(2, 1) = "Ryan"tempArr(2, 2) = "Johnson"tempArr(3, 1) = "Andries"tempArr(3, 2) = "Scott"'Uitvoerarray'ReturnArray = tempArrFunctie beëindigenSubtestTransposeArray()Uitgang dimmenArr As Variant'Call Return-functie'outputArr = ReturnArray()'Testoutput'MsgBox outputArr(2, 1)Einde sub |
Merk op dat we de arrays hebben gedeclareerd met datatype = variant om problemen met de grootte te voorkomen.
Dit voorbeeld neemt een array als invoer, transponeert de array en voert de nieuwe getransponeerde array uit:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Functie TransposeArray(MyArray As Variant) As VariantDim x zo lang, y zo langDim maxX zo lang, minX zo langDim maxY zo lang, minY zo langDim tempArr As Variant'Verkrijg boven- en ondergrenzen'maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Nieuwe tijdelijke array maken'ReDim tempArr (minX naar maxX, minY naar maxX)'Transponeer de array'Voor x = minX Tot maxXVoor y = minY Tot maxYtempArr(y, x) = MijnArray(x, y)Volgende jaarVolgende x'Uitvoerarray'TransposeArray = tempArrFunctie beëindigenSubtestTransposeArray()Dim testArr(1 To 3, 1 To 2) As VariantUitgang dimmenArr As Variant'Array-waarden toewijzen'testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andries"testArr(3, 2) = "Scott"'Call Transpose Functie'outputArr = TransposeArray(testArr)'Testoutput'MsgBox outputArr(2, 1)Einde sub |