O que é uma matriz VBA no Excel e como programar uma


O VBA faz parte do pacote Microsoft Office há muitos anos. Embora não tenha toda a funcionalidade e o poder de um aplicativo VB completo, o VBA oferece aos usuários do Office a flexibilidade de integrar produtos do Office e automatizar o trabalho que você faz neles.

Uma das ferramentas mais poderosas disponível no VBA é a capacidade de carregar um intervalo inteiro de dados em uma única variável chamada matriz. Ao carregar dados dessa maneira, você pode manipular ou executar cálculos nesse intervalo de dados de várias maneiras.

Então, o que é uma matriz VBA? Neste artigo, responderemos a essa pergunta e mostraremos como usar uma em seu próprio script VBA.

O que é uma matriz VBA?

Usando uma VBA A matriz no Excel é muito simples, mas entender o conceito de matrizes pode ser um pouco complexo se você nunca tiver usado uma.

Pense em uma matriz como uma caixa com seções dentro dela. Uma matriz unidimensional é uma caixa com uma linha de seções. Uma matriz bidimensional é uma caixa com duas linhas de seções.

Você pode colocar dados em cada seção desta "caixa" na ordem que desejar.

In_content_1 all: [300x250] / dfp: [640x360]->
googletag.cmd.push (function () {googletag.display ('snhb-In_content_1-0');});

No início do seu script VBA, você precisa definir essa "caixa" definindo sua matriz VBA. Portanto, para criar uma matriz que possa conter um conjunto de dados (uma matriz de uma dimensão), escreva a seguinte linha.

Dim arrMyArray(1 To 6) As String

Posteriormente no seu programa, você pode colocar dados em qualquer seção desta matriz referenciando a seção entre parênteses.

arrMyArray(1) = "Ryan Dube"

Você pode criar uma matriz bidimensional usando a seguinte linha.

Dim arrMyArray(1 To 6,1 to 2) As Integer

O primeiro número representa a linha e o segundo é a coluna. Portanto, a matriz acima pode conter um intervalo com 6 linhas e 2 colunas.

Você pode carregar qualquer elemento dessa matriz com dados da seguinte maneira.

arrMyArray(1,2) = 3

Isso carregará um 3 na célula B1.

Uma matriz pode conter qualquer tipo de dados como uma variável regular, como cadeias de caracteres, booleanos, números inteiros, flutuadores e muito mais.

O O número entre parênteses também pode ser uma variável. Os programadores geralmente usam um For Loop para contar todas as seções de uma matriz e carregar células de dados na planilha na matriz. Você verá como fazer isso posteriormente neste artigo.

Como programar uma matriz VBA no Excel

Vamos dar uma olhada em um programa simples no qual você pode carregar informações de uma planilha para uma matriz multidimensional.

Como exemplo, vejamos uma planilha de vendas de produtos, na qual você deseja extrair o nome, o item e a venda total do representante de vendas da planilha.

Observe que, no VBA, quando você faz referência a linhas ou colunas, conta Linhas e colunas a partir do canto superior esquerdo em 1. Portanto, a coluna rep é 3, a coluna item é 4 e a coluna total é 7.

Para carregar essas três colunas nas 11 linhas, você precisará escrever o seguinte script.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Você notará que, para pular a linha do cabeçalho, o número da linha no primeiro aspecto deve começar em 2 em vez de 1. Isso significa que você precisa subtrair 1 para o valor da linha da matriz ao carregar o valor da célula na matriz usando Cells (i, j) .Value.

Onde inserir seu script de matriz do VBA

Para colocar um programa de script do VBA no Excel, é necessário usar o Editor VBA. Você pode acessar isso selecionando o menu Desenvolvedore selecionando Exibir códigona seção Controles da faixa de opções.

Se você não vir o Desenvolvedor no menu, precisará adicione-o. Para fazer isso, selecione Arquivoe Opçõespara abrir a janela Opções do Excel.

Altere os comandos de escolha do menu suspenso para Todos os comandos. Selecione Desenvolvedorno menu esquerdo e selecione o botão Adicionarpara movê-lo para o painel à direita. Marque a caixa de seleção para habilitá-lo e selecione OKpara concluir.

Quando a janela do Editor de código for aberta, verifique se a planilha em que estão seus dados está selecionada no painel esquerdo. Selecione Planilhano menu suspenso esquerdo e Ativarà direita. Isso criará uma nova sub-rotina chamada Worksheet_Activate ().

Essa função será executada sempre que o arquivo da planilha for aberto. Cole o código no painel de scripts desta sub-rotina.

Este script funcionará nas 12 linhas e carregará o nome do representante da coluna 3, o item da coluna 4 e a venda total da coluna 7.

Quando os loops For estiverem concluídos, o array bidimensional arrMyArray contém todos os dados que você especificou na planilha original.

Manipulando matrizes no Excel VBA

Digamos que você queira aplicar um imposto de vendas de 5% a todos os preços finais de venda e grave todos os dados em uma nova planilha.

Você pode fazer isso adicionando outro loop For após o primeiro, com um comando para gravar os resultados em uma nova planilha.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Isso "descarregará" toda a matriz na Planilha2, com uma linha adicional contendo o total multiplicado por 5% para o valor do imposto.

O a planilha resultante terá esta aparência.

Como você pode ver, as matrizes VBA no Excel são extremamente úteis e tão versáteis quanto qualquer outro truque do Excel.

O exemplo acima é um uso muito simples para uma matriz. Você pode criar matrizes muito maiores e executar a classificação, a média ou muitas outras funções em relação aos dados armazenados nelas.

Se você deseja obter um criativo real, pode criar duas matrizes contendo um intervalo de células de duas planilhas diferentes e faça cálculos entre os elementos de cada matriz.

Os aplicativos são limitados apenas pela sua imaginação.

#142 - VBA Excel - Do Until - Preenchendo células e Arrays

Postagens relacionadas:


18.01.2020