VBA Arrays Multidimensionais (Arrays 2D)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 8, 2023

Este tutorial abordará as matrizes bidimensionais e multidimensionais no VBA.

Matrizes Multidimensionais (Arrays 2D)

Matrizes multidimensionais são arrays que contêm mais de uma dimensão, geralmente duas ou três dimensões, mas as matrizes podem ter até 32 dimensões.

Declarar uma Array 2D

Para criar uma matriz com mais de uma dimensão, use vírgulas para definir cada dimensão separada:

Dim intArr(2,3) as Integer

Preenchimento de uma Array 2D

O código abaixo preencherá uma matriz 2D e, em seguida, preencherá as linhas e colunas de uma planilha com os valores da matriz.

Sub Preencher2D()
'Declar Array 2D
   Dim intA(2, 3) As Integer
'Declarar variaveis
   Dim rw As Integer
   Dim col As Integer
'Preencher a array
   intA(0, 0) = 45
   intA(0, 1) = 50
   intA(0, 2) = 55
   intA(0, 3) = 60
   intA(1, 0) = 65
   intA(1, 1) = 70
   intA(1, 2) = 75
   intA(1, 3) = 80
   intA(2, 0) = 85
   intA(2, 1) = 90
   intA(2, 2) = 95
   intA(2, 3) = 100
'Fazer um loop pela matriz e preencher o Excel
   For rw = 0 To 2
      For col = 0 To 3
         Cells(rw + 1, col + 1).Value = intA(rw, col)
      Next col
    Next rw
End Sub

Sua planilha do Excel deverá ser preenchida da seguinte forma.

vba 2D array

Preenchimento de Uma Matriz 2D a Partir de Dados do Excel

O código abaixo preencherá uma matriz 2D a partir de uma planilha do Excel e, em seguida, preencherá uma planilha diferente com os dados.

Sub Preencher2D()
'Declarar as planilhas
   Dim ws_Fonte As Worksheet
   Dim ws_Destino As Worksheet
'Declarar a array
   Dim wsData(10, 2) As Variant
'Declare as variaveis
   Dim rw as Integer
   Dim col As Integer
'Atribuir a planilha de origem
Set ws_Fonte = Worksheets("Planilha1")
'Obter as informações da planilha de origem e preencher a matriz
   For rw = LBound(wsData, 1) To UBound(wsData, 1)
      For col = LBound(wsData, 2) To UBound(wsData, 2)
         wsData(rw, col) = ws_Fonte.Range("A2").Offset(rw, col).Value
      Next col
   Next rw
'Atribuir a planilha de destino
   Set ws_Destino = Worksheets("Planilha2")
' Preencher a planilha de destino a partir da matriz
   For rw = LBound(wsData, 1) To UBound(wsData, 1)
      For col = LBound(wsData, 2) To UBound(wsData, 2)
         ws_Destino.Range("A1").Offset(rw,col).Value = wsData(rw, col)
      Next col
   Next rw
End Sub

Redimensionamento Usando ReDim e Re-Dim Preserve

Você pode redimensionar uma Arrat usando ReDim (saiba mais).

Sub Redimensionar2D()
'Declarar a Array
   Dim varArray() as Variant
'Declarar o tamanho da array
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Accountant"
   varArray(1, 1) = "Secretary"
   varArray(1, 2) = "Doctor"
'Redeclarar o tamanho da array
   ReDim varArray(0, 1)
'Preencher novamente a array 
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
End Sub

Ao redeclarar a matriz, você perderá todos os dados mantidos anteriormente na matriz, a menos que use a instrução ReDim Preserve.

Sub Redimensionar2D()
'Declarar a array 
   Dim varArray() as Variant
'Declarar o tamanho da array
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Accountant"
   varArray(1, 1) = "Secretary"
   varArray(1, 2) = "Doctor"
'Redeclarar o tamanho da array
   ReDim Preserve varArray(1, 3)
 'Preencher a array com os valores adicionais
   varArray(0, 3) = "Rob Barnes"
   varArray(1, 3) = "Plumber"
End Sub

Você só pode redimensionar a última dimensão de uma matriz se quiser manter os dados originais na matriz com ReDim Preserve.

erro redimensionar array

Quando você clicar em depurar, o erro será destacado, mostrando que a primeira dimensão da matriz não é a mesma que a primeira dimensão quando o tamanho da matriz foi originalmente declarado.

destacar erro redimensionar

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