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

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

Uma das ferramentas mais poderosas disponíveis no VBA é a capacidade de carregar um intervalo inteiro de dados em uma única variável chamada array. Ao carregar dados dessa maneira, você pode manipular ou realizar 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 um em seu próprio script VBA(your own VBA script) .

O que é uma matriz VBA?

Usar uma matriz VBA no (VBA)Excel é muito simples, mas entender o conceito de matrizes pode ser um pouco complexo se você nunca usou uma.

Pense(Think) 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.

No início do seu script VBA , você precisa definir essa “caixa” definindo seu array VBA . Então, para criar um array que possa conter um conjunto de dados (um array de uma dimensão), você escreveria a seguinte linha.

Dim arrMyArray(1 To 6) As String

Mais tarde em seu programa, você pode colocar dados em qualquer seção deste array referenciando a seção dentro dos parênteses.

arrMyArray(1) = "Ryan Dube"

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

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.

Um array pode conter qualquer tipo de dado como uma variável regular, como strings, boolean, inteiros, floats e muito mais.

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 um array e carregar células de dados da planilha no array. Você verá como fazer isso mais adiante neste artigo.

Como programar uma matriz VBA no Excel

Vamos dar uma olhada em um programa simples onde você pode querer carregar informações de uma planilha em um array 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, você conta linhas e colunas(rows and columns) começando 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 em todas as 11 linhas, você precisará escrever o script a seguir.

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 For look precisa começar em 2 em vez de 1. Isso significa que você precisa subtrair 1 para o valor da linha da matriz quando estiver carregando o valor da célula na matriz usando Cells (i, j).Value.

Onde inserir seu script de matriz VBA(Your VBA Array Script)

Para programar um script VBA no (VBA)Excel , você precisa usar o editor VBA . Você pode acessar isso selecionando o menu Desenvolvedor e selecionando (Developer)Exibir código(View Code) na seção Controles(Controls) da faixa de opções.

Se você não vir o Desenvolvedor(Developer) no menu, precisará adicioná-lo. Para fazer isso, selecione Arquivo(File) e Opções(Options) para abrir a janela Opções do Excel.

Altere os comandos de escolha do menu suspenso para Todos os comandos(All Commands) . Selecione Desenvolvedor(Developer) no menu esquerdo e selecione o botão Adicionar(Add) para movê-lo para o painel à direita. Marque a caixa de seleção para habilitá-la e selecione OK para finalizar.

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

Esta função será executada sempre que o arquivo de planilha for aberto. Cole o código no painel de script dentro 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 dois loops For são concluídos, o array bidimensional arrMyArray contém todos os dados que você especificou da planilha original.

Manipulando Arrays no Excel VBA

Digamos que você queira aplicar um imposto sobre vendas de 5% a todos os preços finais de venda e, em seguida, gravar 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á” todo o array em Sheet2 , com uma linha adicional contendo o total multiplicado por 5% do valor do imposto.

A folha resultante ficará assim.

Como você pode ver, os arrays VBA no (VBA)Excel são extremamente úteis e versáteis como qualquer outro truque do Excel(any other Excel trick)

O exemplo acima é um uso muito simples para um array. Você pode criar arrays muito maiores e realizar ordenação, média ou muitas outras funções em relação aos dados armazenados neles.

Se você quiser ser realmente criativo, você pode até criar duas matrizes contendo um intervalo de células(containing a range of cells) de duas planilhas diferentes e realizar cálculos entre os elementos de cada matriz.

As aplicações são limitadas apenas pela sua imaginação.



About the author

Sou um especialista em computadores com mais de 10 anos de experiência e me especializei em ajudar as pessoas a gerenciar seus computadores em seus escritórios. Escrevi artigos sobre tópicos como otimizar sua conexão com a Internet, como configurar um computador para a melhor experiência de jogo e muito mais. Se você está procurando ajuda com qualquer coisa relacionada ao seu trabalho ou vida pessoal, eu sou a pessoa para você!



Related posts