Matriz multidimensional VBA (matrizes 2D)

Este tutorial discutirá matrizes bidimensionais e bidimensionais em VBA.

Matriz multidimensional (matrizes 2D)

Matrizes multidimensionais são matrizes 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 um array 2D

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

1 Dim intArr (2,3) como inteiro

Preenchendo uma matriz 2D

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

1234567891011121314151617181920212223242526 Sub Populate2D ()'declara o array 2DDim intA (2, 3) como inteiro'declarar variáveisDim rw As IntegerDim col As Integer'preencher a matrizintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100'percorrer a matriz e preencher o ExcelPara rw = 0 a 2Para col = 0 a 3Células (rw + 1, col + 1) .Value = intA (rw, col)Próxima colPróximo rwEnd Sub

Sua planilha do Excel deve ser preenchida da seguinte maneira.

Preenchendo uma matriz 2D a partir de dados do Excel

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

1234567891011121314151617181920212223242526 Sub Populate2D ()'Declare as planilhasDim ws_Source as WorksheetDim ws_Destination As Worksheet'Declare a matrizDim wsData (10, 2) como variante'Declare as variáveisDim rw as IntegerDim col As Integer'consulte a folha de fontesDefina ws_Source = Worksheets ("Planilha1")'obter as informações da planilha de fontes e preencher a matrizPara rw = LBound (wsData, 1) Para UBound (wsData, 1)Para col = LBound (wsData, 2) Para UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .ValuePróxima colPróximo rw'consulte a planilha de destinoDefina ws_Destination = Worksheets ("Sheet2")'preencher a planilha de destino da matrizPara rw = LBound (wsData, 1) Para UBound (wsData, 1)Para col = LBound (wsData, 2) Para UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Próxima colPróximo rwEnd Sub

Redimensionar usando ReDim e Re-Dim Preserve

Você pode redimensionar uma matriz usando ReDim.

1234567891011121314151617 Sub Resize2D ()'declara o arrayDim varArray () como variante'declara o tamanho da matrizReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contador"varArray (1, 1) = "Secretário"varArray (1, 2) = "Doutor"'redeclarar o tamanho da matrizReDim varArray (0, 1)'repovoar a matrizvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"End Sub

Ao redeclarar a matriz, você perderá todos os dados anteriormente mantidos na matriz, a menos que use o Declaração de preservação do ReDim.

12345678910111213141516 Sub Resize2D ()'declara o array Dim varArray () como Variant'declara o tamanho da matrizReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contador"varArray (1, 1) = "Secretário"varArray (1, 2) = "Doutor"'redeclarar o tamanho da matrizReDim Preverve varArray (1, 3)'preencher a matriz com valores adicionaisvarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Encanador"End Sub

Você só pode redimensionar a última dimensão de um Array se quiser manter os dados originais no Array com Re-Dim Preserve.

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

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave