VBA – Saída (Impressão) de Matriz para Intervalo
In this Article
Este tutorial demonstrará como enviar uma matriz para um intervalo usando o VBA.
Saída (Impressão) de Matriz para Intervalo
Os dados armazenados em uma matriz podem ser facilmente enviados para uma planilha do Excel. Há três maneiras de fazer isso.
Saída de Dados para um Intervalo Diferente
Poderíamos preencher uma matriz com dados de um intervalo no Excel e, em seguida, enviar os dados para um intervalo diferente no Excel.
Public Sub TestarSaida()
'declarar a matriz
Dim rnArray() As Variant
'preencher a matriz com o intervalo
rnArray = Range("A1:H24")
'enviar a matriz para um intervalo diferente de células
Range("J1:Q24") = rnArray()
End Sub
Todo o intervalor é copiado em uma linha de código para a matriz e, em seguida, enviada em sua totalidade para um intervalo diferente de células na planilha.
Looping em uma Matriz e Saída dos Dados
Este exemplo fará um loop em uma matriz, devolvendo a matriz em um intervalo.
Public Sub TestarLoopMatriz()
'declarar a matriz
Dim rnArray() As Variant
'Declarar o número inteiro para armazenar o número de linhas
Dim iRw As Integer
'Atribuir intervalo a uma variável de matriz
rnArray = Range("A1:A10")
'percorrer os valores da matriz
For iRw = LBound(rnArray) To UBound(rnArray)
'preencher um intervalo diferente com os dados
Cells(iRw, 2).Value = rnArray(iRw, 1)
Next iRw
End Sub
LBound e UBound retornam o índice inicial (limite inferior) e o índice final (limite superior) de uma matriz, nesse caso, 1 e 10.
Transpor Dados da Matriz
Também podemos transpor os dados da matriz para a planilha do Excel. A transposição permite que você exiba os dados horizontalmente na planilha do Excel.
Por exemplo, se tivermos uma lista de estados no Excel e quisermos transpô-los.
Poderíamos então executar o seguinte código:
Public Sub TestarSaidaTranspor()
'declarar a matriz
Dim rnArray() As Variant
'preenchê-la com o intervalo
rnArray = Range("A1:A38")
'transpor os dados
Range(Cells(1, 3), Cells(1, 40)).Value = Application.Transpose(rnArray)
End Sub
O que resultaria no seguinte:
Saída para Debug.Print
Também podemos enviar os valores da matriz para a janela de depuração.
Public Sub TestarLoopMatriz()
'declarar a matriz
Dim rnArray() As Variant
'Declarar o número inteiro para armazenar o número de linhas
Dim iRw As Integer
'Atribuir intervalo a uma variável de matriz
rnArray = Range("A1:A10")
'percorrer as linhas de 1 a 10
For iRw = 1 To UBound(rnArray)
'saída para a janela de verificação imediata
Debug.Print rnArray(iRw, 1)
Next iRw
End Sub