Matrizes em VBA do Excel: Tipos e Como Usar com Exemplos

⚡ Resumo Inteligente

No VBA do Excel, as matrizes armazenam um grupo de valores relacionados do mesmo tipo de dados sob um único nome, acessados ​​por um índice. Esta página explica matrizes estáticas e dinâmicas, matrizes unidimensionais, bidimensionais e multidimensionais, sintaxe de declaração e um exemplo prático de carregamento de bebidas.

  • 📦 Conceito de matriz: Um único local de memória nomeado que armazena vários valores do mesmo tipo de dados, separados por um índice.
  • 🎯 Vantagens: Os arrays agrupam dados relacionados, reduzem o número de variáveis ​​e tornam a recuperação e a classificação de dados mais rápidas.
  • 📌 Matriz estática: Declarado com um tamanho fixo, por exemplo Dim ArrayMonth(12) As String, quando a contagem de elementos é conhecida.
  • 🔄 Matriz dinâmica: Declarado vazio com Dim ArrayMonth() e dimensionado posteriormente usando ReDim quando a contagem de elementos é desconhecida.
  • 📐 Dimensões: Um array utiliza um, dois ou mais índices para modelar listas simples, tabelas ou dados multiníveis.
  • 🧪 Exemplo prático: Um botão de comando carrega quatro nomes de bebidas de uma matriz para células da planilha usando Sheet1.Cells.

Matrizes VBA do Excel

O que é matriz VBA?

Um array é definido como um local de memória capaz de armazenar mais de um valor. Os valores devem ser todos do mesmo tipo de dados. Digamos que você queira armazenar uma lista de suas bebidas favoritas em uma única variável. Você pode usar o array VBA para fazer isso.

Ao usar uma matriz, você pode consultar os valores relacionados com o mesmo nome. Você pode usar um índice ou subscrito para diferenciá-los. Os valores individuais são chamados de elementos da matriz Excel VBA. Eles são contíguos do índice 0 até o valor de índice mais alto.

Este tutorial pressupõe que você esteja usando Microsoft Excel versão 2013. O conhecimento ainda se aplica a outras versões do Microsoft Excel também.

Quais são as vantagens dos arrays?

Antes de escrever código baseado em matrizes, é útil entender por que vale a pena usar matrizes. A seguir, apresentamos alguns dos benefícios oferecidos pela função de matriz em VBA.

  1. Agrupe dados logicamente relacionados – digamos que você queira armazenar uma lista de alunos. Você pode usar uma única variável de matriz que tenha locais separados para categorias de alunos, ou seja, jardim de infância, ensino fundamental, médio, ensino médio, etc.
  2. Matrizes facilitam a escrita de código sustentável. Para os mesmos dados logicamente relacionados, permite definir uma única variável, em vez de definir mais de uma variável.
  3. Melhor desempenho – uma vez definido um array, é mais rápido recuperar, classificar e modificar dados.

Tipos de matrizes em VBA

O VBA oferece suporte a dois tipos de arrays, a saber;

  • Estático – Esses tipos de arrays possuem um número fixo e pré-determinado de elementos que podem ser armazenados. Não se pode alterar o tamanho do tipo de dados de um Static Array. Eles são úteis quando você deseja trabalhar com entidades conhecidas, como número de dias da semana, gênero, etc.Por Exemplo: Dim ArrayMonth(12) como string
  • Dinâmico – Esses tipos de arrays não possuem um número fixo pré-determinado de elementos que podem ser armazenados. Eles são úteis ao trabalhar com entidades cujo número não pode ser predeterminado.Por Exemplo: Dim ArrayMonth() como variante

Depois de saber qual tipo se adequa aos seus dados, o próximo passo é a sintaxe de declaração para cada um.

Sintaxe para declarar arrays

Matrizes estáticas

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

Dim arrayName (n) as datatype

AQUI,

Code Ação
Tipo de dados Dim arrayName (n)
  1. Ele declara uma variável de array chamada arrayName com tamanho n e tipo de dados. Tamanho se refere ao número de elementos que o array pode armazenar.

Matrizes dinâmicas

A sintaxe para declarar DINÂMICO matrizes é a seguinte:

Dim arrayName() as datatype
ReDim arrayName(4)

AQUI,

Code Ação
Tipo de dados Dim arrayName ()
  1. Ele declara uma variável de array chamada arrayName sem especificar o número de elementos
ReDim arrayName(4)
  1. Ele especifica o tamanho do array após a definição do array.

Dimensões da matriz

Uma matriz pode ser unidimensional, bidimensional ou multidimensional.

  • Uma dimensão: nesta dimensão, o array usa apenas um índice. Por exemplo, um número de pessoas de cada idade.
  • Duas dimensões: nesta dimensão, o array usa dois índices. Por exemplo, vários alunos em cada turma. Requer número de turmas e número de alunos em cada turma
  • Multidimensional: nesta dimensão, o array usa mais de dois índices. Por exemplo, temperaturas durante o dia. (30, 40, 20).

Como usar Array no Excel VBA

Com a teoria explicada, podemos colocar uma matriz para funcionar em uma planilha real. Criaremos um aplicativo simples. Este aplicativo preenche uma planilha do Excel com dados de uma variável de matriz. Neste exemplo de matriz em VBA, faremos o seguinte:

  • Crie um novo Microsoft Pasta de trabalho do Excel e salve-a como Pasta de trabalho habilitada para macro do Excel (*.xlsm)
  • Adicione um botão de comando à pasta de trabalho
  • Defina as propriedades de nome e legenda do botão de comando
  • Programando o VBA que preenche a planilha Excel

Vamos fazer este exercício passo a passo,

Passo 1 – Crie uma nova pasta de trabalho

  1. Abra Microsoft Excel
  2. Salve a nova pasta de trabalho como VBA Arrays.xlsm

Passo 2 – Adicione um botão de comando

Observação: Esta seção pressupõe que você esteja familiarizado com o processo de criação de uma interface no Excel. Se você não conhece, leia o tutorial Controle de formulário VBA Excel e controle ActiveX. Ele mostrará como criar a interface

  1. Adicione um botão de comando à planilha

Usar matriz no Excel VBA

  1. Defina a propriedade name como cmdLoadBeverages
  2. Defina a propriedade da legenda como Carregar Bebidas

Sua GUI agora deve ser a seguinte

Usar matriz no Excel VBA

Passo 3 – Salve o arquivo

  1. Clique no botão salvar como
  2. Escolha Pasta de trabalho habilitada para macro do Excel (*.xlsm) conforme mostrado na imagem abaixo

Usar matriz no Excel VBA

Passo 4 – Escreva o código

Agora vamos escrever o código da nossa aplicação

  1. Clique com o botão direito no botão Carregar Bebidas e selecione visualizar código
  2. Adicione o seguinte código ao evento click de cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

AQUI,

Code Ação
Dim Drinks (1 a 4) como barbante
  • Ele declara uma variável de array chamada Drinks. O primeiro índice da matriz é 1 e o último índice da matriz é 4.
Bebidas(1) = “Pepsi”
  • Atribui o valor Pepsi ao primeiro elemento da matriz. O outro código semelhante faz o mesmo para os outros elementos do array.
Sheet1.Cells(1, 1).Value = “Minhas Bebidas Favoritas”
  • Grava o valor Minhas Bebidas Favoritas no endereço da célula A1. Sheet1 faz referência à planilha e Cells(1,1) faz referência à linha número 1 e coluna 1 (B)
Sheet1.Cells(2, 1).Valor = Bebidas(1)
  • Grava o valor do elemento da matriz com índice 1 na linha número dois da coluna 1

Testando nosso aplicativo

Com o código inserido, o passo final é executar o botão e confirmar se a matriz preenche a planilha. Selecione a guia Desenvolvedor e certifique-se de que o botão Modo de Design esteja desativado. Isso indica que ele terá um fundo branco e não um fundo colorido (esverdeado). (Veja a imagem abaixo)

Testando um aplicativo no Excel VBA

Clique no botão Carregar Bebidas

Você obterá os seguintes resultados

Testando um aplicativo no Excel VBA

Baixe o Excel contendo o código acima

Baixe a planilha do Excel acima. Code

Perguntas Frequentes

Um array estático tem um tamanho fixo definido na declaração, como Dim Arr(12). Um array dinâmico é declarado vazio com Dim Arr() e redimensionado posteriormente usando ReDim quando o número de elementos não é conhecido antecipadamente.

ReDim define ou altera o tamanho de uma matriz dinâmica após sua declaração. Adicionar a palavra-chave Preserve, como em ReDim Preserve Arr(10), mantém os valores existentes durante o redimensionamento; sem Preserve, todos os valores armazenados são apagados.

Utilize as funções LBound e UBound. LBound retorna o menor índice e UBound retorna o maior índice. O número de elementos é igual a UBound(Arr) menos LBound(Arr) mais um, o que funciona tanto para arrays estáticos quanto dinâmicos.

Sim. Assistentes de IA como o Copilot geram declarações de arrays e loops a partir de uma solicitação simples, por exemplo, carregar dez nomes de produtos em uma coluna. O desenvolvedor cola o código no editor e o testa em uma cópia da planilha.

Sim. Os assistentes de IA leem o erro "Índice fora do intervalo" e o código, apontando para o índice que excede os limites da matriz e sugerindo uma correção, como ajustar o tamanho do ReDim ou o contador do loop. O desenvolvedor aplica a correção e a testa novamente.

Resuma esta postagem com: