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.
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.
- 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.
- 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.
- 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) |
|
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 () |
|
| ReDim arrayName(4) |
|
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
- Abra Microsoft Excel
- 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
- Adicione um botão de comando à planilha
- Defina a propriedade name como cmdLoadBeverages
- Defina a propriedade da legenda como Carregar Bebidas
Sua GUI agora deve ser a seguinte
Passo 3 – Salve o arquivo
- Clique no botão salvar como
- Escolha Pasta de trabalho habilitada para macro do Excel (*.xlsm) conforme mostrado na imagem abaixo
Passo 4 – Escreva o código
Agora vamos escrever o código da nossa aplicação
- Clique com o botão direito no botão Carregar Bebidas e selecione visualizar código
- 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 |
|
| Bebidas(1) = “Pepsi” |
|
| Sheet1.Cells(1, 1).Value = “Minhas Bebidas Favoritas” |
|
| Sheet1.Cells(2, 1).Valor = Bebidas(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)
Clique no botão Carregar Bebidas
Você obterá os seguintes resultados
Baixe o Excel contendo o código acima
Baixe a planilha do Excel acima. Code






