Obsah
Tento článek předvede, jak vrátit pole pomocí funkce VBA.
Zpětné pole funkce VBA
Při používání funkcí k vracení polí důrazně doporučuji deklarovat pole s variantou typu:
123 | Funkce ReturnArray () jako variantaKoncová funkce |
Pole variant se s nimi snáze pracuje. Velikost pole se stává méně znepokojující.
Příklady návratového pole funkce
Zde je příklad funkce, která vrací pole:
1234567891011121314151617181920212223242526272829 | Funkce ReturnArray () jako variantaDim tempArr As Variant'Vytvořit nové teplotní poleReDim tempArr (1 až 3, 1 až 2)`` Přiřaďte hodnoty poletempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "Andrew"tempArr (3, 2) = "Scott""Výstupní pole."ReturnArray = tempArrKoncová funkceDílčí testTransposeArray ()Dim outputArr As Variant'Funkce zpětného voláníoutputArr = ReturnArray ()'Testovací výstupMsgBox outputArr (2, 1)End Sub |
Všimněte si, že jsme deklarovali pole s datovým typem = varianta, abychom se vyhnuli problémům s velikostí.
Tento příklad bere pole jako vstup, transponuje pole a vydává nové transponované pole:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funkce TransposeArray (MyArray As Variant) Jako variantaDim x As Long, y As LongDim maxX jako dlouhý, minX tak dlouhýDim maxY tak dlouho, minY tak dlouhoDim tempArr As Variant„Získejte horní a dolní hranicimaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Vytvořit nové teplotní poleReDim tempArr (minX To maxX, minY To maxX)„Transponujte polePro x = minX až maxXPro y = minY až maxYtempArr (y, x) = MyArray (x, y)Další yDalší x"Výstupní pole."TransposeArray = tempArrKoncová funkceDílčí testTransposeArray ()Dim testArr (1 až 3, 1 až 2) jako variantaDim outputArr As Variant`` Přiřaďte hodnoty poletestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Funkce Transpose CalloutputArr = TransposeArray (testArr)'Testovací výstupMsgBox outputArr (2, 1)End Sub |