Arrays no VBA Excel: O que são e como usar?

Quer aprender a trabalhar com Arrays no VBA? Então você está no lugar certo!

Se você está trabalhando (ou aprendendo)  VBA (Visual Basic for Applications), provavelmente está ciente da importância de ter um conhecimento sólido de certos tópicos que influenciam o armazenamento e a manipulação de dados. E um desses tópicos, é o uso de Arrays.

Acompanhe os detalhes a seguir para saber: O que é um Array, quais são as vantagens de utilizá-lo e como trabalhar com este recurso no Excel VBA.

O que é um Array no VBA?

De maneira geral, pode-se dizer que um Array representa uma matriz, ou seja, um conjunto de células. Dentro do VBA, um Array é simplesmente uma função que trabalhar com matrizes no Excel.

Uma matriz é definida como um local de memória capaz de armazenar mais de um valor. Os valores devem ser todos do mesmo tipo de dados. Parece confuso?

Então, suponha que você queira armazenar uma lista de suas frutas favoritas em uma única variável, você pode usar o array do VBA para fazer isso.

Ao usar uma matriz, você pode se referir aos valores relacionados com o mesmo nome. Você pode usar um índice ou subscrito para diferenciá-los. Os valores individuais são chamados de elementos do array.

Se o assunto ainda parece confuso para você, não se preocupe! Até o final deste post você terá uma ótima visão sobre Arrays no Excel VBA! 🙂


Quais são as vantagens dos Arrays?

A seguir, listamos algumas vantagens de utilizar Arrays em seus códigos VBA:

  • Possibilidade de agrupar dados relacionados logicamente – digamos que você deseja armazenar uma lista de alunos. Você pode usar uma única variável de matriz que tem locais separados para categorias de alunos, ou seja, jardim de infância, primário, secundário, ensino médio, etc.
  • Os arrays facilitam a escrita de código sustentável. Para os mesmos dados relacionados logicamente, permite definir uma única variável, em vez de definir mais de uma variável.
  • Melhor desempenho – uma vez que um array foi definido, é mais rápido recuperar, classificar e modificar dados.

Tipos de Arrays no VBA

O VBA oferece suporte a dois tipos de arrays. São eles:

  • Array Estático: Esses tipos de matrizes têm um número fixo predeterminado de elementos que podem ser armazenados. Não se pode alterar o tamanho do tipo de dados de um array estático. Eles são úteis quando você deseja trabalhar com entidades conhecidas, como o número de dias em uma semana, sexo, etc.

A sintaxe para declarar matrizes ESTÁTICAS é a seguinte:

Dim NomeArray(n) as TipodeDados

Ou seja, uma variável de matriz chamada NomeArray com um tamanho de N tipo de dados. O tamanho se refere ao número de elementos que a matriz pode armazenar.

Por exemplo: Dim ArrayMes(12) As String

  • Array Dinâmico: Um array dinâmico não tem um número pré-ajustado de elementos. Declare um array dinâmico com um conjunto vazio de parênteses:

Dim MeuArray () As Integer

Antes de poder usar este tipo de Array, você precisará utilizar a declaração ReDim para informar ao VBA quantos elementos tem o seu array. No geral, a quantidade de elementos no array é determinada enquanto o seu código está rodando.

Você pode usar a declaração ReDim quantas vezes quiser, trocando o tamanho do array tanto quanto necessário.

O exemplo abaixo demonstra como alterar o número de elementos em um array dinâmico. O exemplo supõe que a variável NumElementos (número de elementos) contenha uma variável que o seu código calculou.

ReDim NomeArray (4)

Ou seja, uma variável de matriz chamada NomeArray  sem especificar o número de elementos. Ele especifica o tamanho da matriz após a definição da matriz.

Importante: Quando você redimensiona um array usando ReDim, você apaga quaisquer valores atualmente armazenados nos elementos do array. É possível evitar apagar os valores antigos usando a palavra-chave Preserve.

O exemplo abaixo mostra como é possível preservar os valores de um array quando você o redimensiona:

ReDim Preserve MeuArray(1 To NumElementos)


Dimensões de um Array

Uma array pode ser Unidimensional, Bidimensional ou Multidimensional.

Array Unidimensional: nesta dimensão, a matriz usa apenas um índice.

Exemplo: Dim Matriz (100) As Integer

Array Bidimensional: Este tipo de Array usa dois índices. Para configurar um array com mais de uma dimensão, basta adicionar uma vírgula após o primeiro número entre os colchetes do nome da matriz e, em seguida, adicionar outro número.

Exemplo: Dim Matriz (5, 4) As Integer ou

Dim Matriz (1 To 5, 1 To 6) As Integer

Array Multidimensional: Neste tipo de array, a matriz usa mais de dois índices. Por exemplo, temperaturas durante o dia. (30, 40, 20).

Como usar Array no Excel VBA

Agora que você já conhece o básico sobre Arrays no VBA, confira alguns exemplos práticos que lhe fornecerão uma visão mais detalhada sobre este assunto:


Exemplo 1: Criando um Array Estático

Neste primeiro exemplo, vamos criar uma macro que preenche uma planilha do Excel com dados de uma variável de matriz.

Neste caso, o código ficará da seguinte maneira:

Sub CarregaFrutas()
Dim Fruta(1 To 4) As String

Fruta(1) = “Banana”
Fruta(2) = “Maçã”
Fruta(3) = “Laranja”
Fruta(4) = “Uva”

Planilha1.Cells(1, 1).Value = “Minhas frutas favoritas”
Planilha1.Cells(2, 1).Value = Fruta(1)
Planilha1.Cells(3, 1).Value = Fruta(2)
Planilha1.Cells(4, 1).Value = Fruta(3)
Planilha1.Cells(5, 1).Value = Fruta(4)
End Sub

Como funciona o código:

1. Dim Fruta(1 To 4) As String: Primeiro declaramos uma variável de matriz chamada Fruta. O primeiro índice de matriz é 1 e o último índice de matriz é 4.
2. Fruta(1) = “Banana”: Em seguida, atribuímos o valor Banana ao primeiro elemento da matriz. O outro código semelhante faz o mesmo para os outros elementos da matriz.
3. Planilha1.Cells(1, 1).Value = “Minhas frutas favoritas”: Depois, inserimos valor “Minhas frutas favoritas” no endereço de célula A1. A Planilha1 faz referência à folha e as Células (1,1) fazem referência à linha número 1 e coluna 1 (B)
4. Planilha1.Cells(2, 1).Value = Fruta(1): Por fim, gravamos o valor do elemento da matriz com índice 1 na linha número dois da coluna 1

Ao testar a macro, temos o seguinte resultado:

Array Estático

Exemplo 2: Array Estático Bidimensional

Neste segundo exemplo, criamos um Array Bidimensional que insere valores nas colunas A e B da Planilha1.

Sub Array_bidimensional()
Dim a(1 To 2, 1 To 2) As Integer

a(1, 1) = 30
a(2, 1) = 40
a(1, 2) = 50
a(2, 2) = 60

Planilha1.Cells(1, 1).Value = a(1, 1)
Planilha1.Cells(2, 1).Value = a(2, 1)
Planilha1.Cells(1, 2).Value = a(1, 2)
Planilha1.Cells(2, 2).Value = a(2, 2)

End Sub

Exemplo 3: Array Multidimensional

Neste segundo exemplo, criamos um Array Multidimensional que insere valores nas colunas A1 e C2 da Planilha1.

Sub Array_bidimensional()
Dim a(1 To 3, 1 To 3) As Integer

a(1, 1) = 30
a(2, 1) = 40
a(3, 2) = 50
a(1, 2) = 87
a(2, 3) = 32
a(3, 3) = 50

Planilha1.Cells(1, 1).Value = a(1, 1)
Planilha1.Cells(1, 2).Value = a(1, 1)
Planilha1.Cells(1, 3).Value = a(1, 2)
Planilha1.Cells(2, 1).Value = a(1, 2)
Planilha1.Cells(2, 2).Value = a(2, 3)
Planilha1.Cells(2, 3).Value = a(3, 3)
End Sub


Detalhes importantes sobre Arrays no VBA

  • Por padrão, o Excel contará as linhas começando do zero.
  • Os dados que devem ser inseridos para a matriz devem ser iniciados a partir de (0, 0), ou seja, da primeira linha e da primeira coluna.
  • No caso de estarmos usando os arrays dinâmicos, então será necessária a função de “VBA REDIM” para definir o número de linhas e colunas que devem ser memorizadas.
  • No caso de criar um array bidimensional, é preciso que usar “Integer” como a dimensão.
  • O arquivo do Excel precisa ser salvo na versão compatível com macro, caso contrário, a codificação que você criou no VBA desaparecerá e não será executada na próxima vez.

Confira também as seguintes dicas de Excel:

E então o que achou do tutorial sobre Arrays no Excel VBA? Ficou com alguma dúvida? Deixe o seu comentário abaixo e continue acompanhando mais dicas de Excel em nosso site!