VBA-functie Return Array

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
wave wave wave wave wave