Este artigo demonstrará como retornar um Array usando uma função VBA.
Matriz de retorno de função VBA
Ao usar funções para retornar matrizes, recomendo fortemente declarar matrizes com variante de tipo:
123 | Função ReturnArray () como varianteFunção Final |
Variant Arrays são mais fáceis de trabalhar. O tamanho da matriz deixa de ser uma preocupação.
Exemplos de array de retorno de função
Aqui está um exemplo de uma função que retorna uma matriz:
1234567891011121314151617181920212223242526272829 | Função ReturnArray () como varianteDim tempArr como variante'Criar Nova Matriz TempReDim tempArr (1 a 3, 1 a 2)'Atribuir valores de matriztempArr (1, 1) = "Steve"tempArr (1, 2) = "Johnson"tempArr (2, 1) = "Ryan"tempArr (2, 2) = "Johnson"tempArr (3, 1) = "André"tempArr (3, 2) = "Scott"'Output ArrayReturnArray = tempArrFunção FinalSub TestTransposeArray ()Dim outputArr como variante'Função de retorno de chamadaoutputArr = ReturnArray ()'Teste de SaídaMsgBox outputArr (2, 1)End Sub |
Observe que declaramos os Arrays com tipo de dados = variante para evitar problemas de tamanho.
Este exemplo usa uma matriz como entrada, transpõe a matriz e produz a nova matriz transposta:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Função TransposeArray (MyArray As Variant) As VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY enquanto, minY enquantoDim tempArr como variante'Obter limites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Criar Nova Matriz TempReDim tempArr (minX para maxX, minY para maxX)'Transpor a matrizPara x = minX Para maxXDe y = minY a maxYtempArr (y, x) = MyArray (x, y)A seguirPróximo x'Output ArrayTransposeArray = tempArrFunção FinalSub TestTransposeArray ()Dim testArr (1 a 3, 1 a 2) como varianteDim outputArr como variante'Atribuir valores de matriztestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "André"testArr (3, 2) = "Scott"'Função de transposição de chamadaoutputArr = TransposeArray (testArr)'Teste de SaídaMsgBox outputArr (2, 1)End Sub |