VBA – Função Retornar Matriz

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 17, 2023

Este artigo demonstrará como retornar uma matriz usando uma função VBA.

VBA – Função Retornar Matriz

Ao usar funções para retornar matrizes, recomendo enfaticamente que as matrizes sejam declaradas com o tipo variant:

    Function RetornarMatriz() As Variant

    End Function

É mais fácil trabalhar com matrizes tipo variant. O tamanho da matriz se torna menos preocupante.

Exemplos de Funções Retornar Matrizes

Aqui está um exemplo de uma função que retorna uma matriz:

Function RetornarMatriz() As Variant
    Dim tempArr As Variant
    
    'Criar nova matriz temporária
    ReDim tempArr(1 To 3, 1 To 2)
    
    'Atribuir valores à matriz
    tempArr(1, 1) = "Steve"
    tempArr(1, 2) = "Johnson"
    tempArr(2, 1) = "Ryan"
    tempArr(2, 2) = "Johnson"
    tempArr(3, 1) = "Andrew"
    tempArr(3, 2) = "Scott"
    
    'Matriz de saída
    RetornarMatriz = tempArr
    
End Function
 
Sub TesteTransporMatriz()
    Dim MatrizSaida As Variant
    
    'Call RetornarMatriz
    MatrizSaida = RetornarMatriz()
    
    'Testar Saida
    MsgBox MatrizSaida(2, 1)
 
End Sub

Observe que declaramos os arrays com o tipo de dados = variant para evitar problemas de tamanho.

Esse exemplo recebe uma matriz como entrada, transpõe a matriz e gera a nova matriz transposta:

Function TransporMatriz(MinhaArray As Variant) As Variant
    Dim x As Long, y As Long
    Dim maxX As Long, minX As Long
    Dim maxY As Long, minY As Long
    
    Dim tempArr As Variant
    
    'Obter limites superiores e inferiores
    maxX = UBound(MinhaArray, 1)
    minX = LBound(MinhaArray, 1)
    maxY = UBound(MinhaArray, 2)
    minY = LBound(MinhaArray, 2)
    
    'Criar nova matriz temporária
    ReDim tempArr(minX To maxX, minY To maxX)
    
    'Transpor a matriz
    For x = minX To maxX
        For y = minY To maxY
            tempArr(y, x) = MinhaArray(x, y)
        Next y
    Next x
    
    'Matriz de saída
    TransporMatriz = tempArr
    
End Function

Sub TestarTransporMatriz()
    Dim ArrTeste(1 To 3, 1 To 2) As Variant
    Dim ArrSaida As Variant
    
    'Atribuir valores à matriz
    ArrTeste(1, 1) = "Steve"
    ArrTeste(1, 2) = "Johnson"
    ArrTeste(2, 1) = "Ryan"
    ArrTeste(2, 2) = "Johnson"
    ArrTeste(3, 1) = "Andrew"
    ArrTeste(3, 2) = "Scott"
    
    'Call Transpose Function
    ArrSaida = TransporMatriz(ArrTeste)
    
    'Test Output
    MsgBox ArrSaida(2, 1)

End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA