Matriz de retorno de função VBA

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