Matrizes Excel VBA: o que é, como usar e tipos de matrizes em VBA
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?
A seguir estão alguns dos benefícios oferecidos pela função de array 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
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
Criaremos um aplicativo simples. Este aplicativo preenche uma planilha do Excel com dados de uma variável de array. Neste exemplo de array 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
Nota: 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
Selecione a guia do desenvolvedor e certifique-se de que o botão do modo Design esteja “desligado”. O indicador é que terá fundo branco e não colorido (esverdeado). (Veja imagem abaixo)
Clique no botão Carregar Bebidas
Você obterá os seguintes resultados
Baixe o Excel contendo o código acima
Resumo
- Um array é uma variável capaz de armazenar mais de um valor
- Excel VBA suporta arrays estáticos e dinâmicos
- Os arrays facilitam a escrita de código sustentável em comparação com a declaração de muitas variáveis para dados que estão logicamente relacionados.