Nessa publicação vamos te ensinar a usar o VBA para separar dados de uma aba principal em diversas outras abas! A ferramenta Barra de Progresso vai mostrar qual o andamento do código enquanto o mesmo está sendo executado!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
Para baixar a planilha utilizada nessa aula clique aqui!
A Barra de Progresso nada mais é do que um indicador visual que vai nos mostrar o andamento do nosso código. Vamos configurar uma célula para vermos nela qual é o percentual de conclusão do nosso código.
Como vamos fazer isso? Vamos usar Formatação Condicional e o VBA, Visual Basic for Applications ,que nada mais é do que a linguagem de programação do Excel.
A Barra de progresso pode ser utilizada em basicamente todos os códigos criados em VBA. Isso acontece, pois podemos querer ver qual é o andamento da macro em qualquer código que fizermos.
No exemplo atual vamos separar em diferentes abas os registros que estão em uma aba principal, além de utilizar a Barra de Progresso para acompanhar quantas linhas já foram separadas para as suas respectivas abas. Os dados que serão separados estão na imagem abaixo:
Vamos iniciar formatando a célula em cima do botão da nossa planilha que irá indicar a nossa barra de progresso, como a que aparece nos programas quando algum dado está sendo carregado.
Para ficar igual à imagem, vamos selecionar a célula F1 e, em seguida, vamos até a guia Página Inicial. Dentro dessa guia vamos selecionar a opção Formatação Condicional e selecionar a primeira opção do menu Barra de Dados.
Nessa publicação falamos especificamente sobre o tema Formatação Condicional.
Podemos notar que a célula F1 já ganhou uma formatação diferente, no entanto ainda não está como queremos. Ainda com a célula selecionada vamos novamente na opção Formatação Condicional, mas dessa vez vamos selecionar a opção Gerenciar Regras.
Ao selecionar essa opção será aberta uma nova janela. Nessa janela teremos a regra que acabamos de criar e vamos selecionar a opção Editar Regra.
Ao selecionar essa opção será aberta uma nova janela de edição da regra selecionada.
Dentro dessa edição vamos alterar algumas informações. A primeira delas é a parte de mínimo e máximo, na parte de tipo vamos modificar para número. Feito isso as duas caixas de texto abaixo ficarão habilitadas. Na caixa de valor mínimo vamos atribuir o valor de 0 e na caixa de valor máximo vamos atribuir o valor 1.
A outra alteração é na caixa onde temos escrito Preenchimento Gradual. Vamos modificar essa opção para Preenchimento Sólido.
Tendo modificado essas informações podemos dar OK nas duas janelas que a nossa formatação condicional estará completa.
Como temos o valor de 41% inicialmente na planilha já podemos observar que ela está parcialmente preenchida. Ao clicar no botão Registrar Vendas é possível ver a barra da célula F1 sendo preenchida utilizando a macro feita em VBA.
Agora vamos ao código do VBA que permite, além dessa barra de progresso ir de 0 a 100%, separar todas as empresas nas suas respectivas abas.
Para acessar o ambiente VBA basta pressionar as teclas ALT + F11 (ou ALT + Fn + F11 se a primeira opção não funcionar).
Entrando no ambiente VBA nos deparamos com o código que faz com que o Excel separe as empresas em cada aba específica e que faz a barra de progresso ser preenchida.
Vamos agora analisar o código para entender o que cada parte dele está fazendo.
Sub registra() – Sub é a sintaxe que utilizamos sempre que vamos gravar uma macro. O que vem depois dela é o nome da macro que está sendo gravada. O nome da macro vem seguido de parênteses vazios.
Linha = 2 – Linha é uma variável, um nome que tem a função de armazenar um valor ou texto dependendo do tipo que foi declarado. Neste caso, estamos atribuindo o valor 2 a essa variável. Sempre que utilizarmos esse nome linha dentro do código o programa vai entender que o valor dele é igual a 2, até que seja alterado.
linha_final = Range(“a1”).End(xlDown).Row – Neste caso temos outra variável chamada linha_final (lembrando que no VBA não podemos separar o nome de variáveis com espaço, por isso a utilização do underline).
Em seguida, temos a parte Range(“a1”). Essa parte quer dizer que estamos selecionado a célula A1 da aba que está ativa, que no nosso caso é a aba que possui o botão para a execução da macro.
Após o ponto temos o seguinte código End(xlDown), isso significa que o código está executando o atalho CTRL + SETA PARA BAIXO. O que esse atalho faz é simplesmente ir até a última célula preenchida.
Por fim, temos o Row. Isso significa que estamos pegando o valor dessa última linha que acabamos de chegar.
While Cells(linha, 1) <> “” – Essa é a função enquanto. Essa função vai executar um código enquanto a condição analisada seja verdadeira. Essa condição é Cells(linha, 1) <> “” que significa que estamos analisando a célula de linha 2 e coluna 1 (que corresponde a célula A2) e estamos comparando se essa célula é diferente de vazio. Se for diferente de vazio o código dentro dessa função será executado, caso contrário o código irá sair da função sem executar o que está dentro dela.
Logo no início do código dentro do While, temos 4 variáveis declaradas que são: data, código, empresa e valor. Cada uma dessas variáveis está recebendo um valor, que está na tabela. Para cada linha vamos ter gravado 4 valores que são as informações que temos na nossa tabela. Para o primeiro caso, como temos a variável linha sendo igual a 2, vamos pegar os dados das células A2 até D2.
ult_linha = Sheets(empresa).Range(“a10000”).End(xlUp).Row + 1 – Temos uma nova variável que está indo até a aba (sheets) que recebe o nome da empresa. Se a primeira empresa for Azul, o código vai nos levar até a aba da empresa azul. Dentro dessa aba vamos selecionar a célula A10000 e utilizar o atalho CTRL + SETA PARA CIMA que vai nos levar até a primeira célula escrita e, por fim, vamos pegar o valor dessa linha e somar com 1.
No final, teremos o valor da linha da última célula escrita + 1. Saberemos qual é a célula onde podemos inserir as informações da outra aba.
As quatro linhas seguintes fazem o processo inverso do que acabamos de ver, primeiro guardamos as informações da empresa na aba Registro, e agora vamos escrever essas informações dentro da aba de cada empresa. Para isso, vamos até a aba da empresa que teve o valor armazenado, que neste primeiro caso foi Azul. Nessa aba, vamos até a célula de linha igual a ult_linha (que é a variável que recebeu a linha vazia a ser preenchida) e coluna indo de 1 a 4, que são exatamente as mesmas que temos na aba Registro.
Com isso, todas as 4 informações obtidas na aba Registro serão preenchidas na aba de cada empresa, desta forma o código separa cada uma das empresas por abas.
Depois dessas 4 atribuições de informação temos duas linhas de código:
Range(“F1”) = linha / linha_final – Essa parte do código é responsável pela barra de progresso, pois faz a porcentagem da linha atual em relação a última linha. Para calcular essa porcentagem precisamos dividir a linha atual pela última linha. Com isso, à medida em que a análise vai chegando perto do fim a porcentagem vai chegando perto de 100%.
Essa outra linha é muito importante para o funcionamento da função While, que é linha = linha + 1. Executar essa linha de código é essencial para que o looping da função while ocorra. Isso acontece para que possamos passar para a linha debaixo depois que terminarmos a execução do código. Sem essa linha nosso código entraria em um looping infinito.
Por fim, temos o Wend. Essa função nada mais é do que a indicação do final da função While. Tudo que estiver entre o While e o Wend será executado caso a condição da função seja verdadeira.
Ao clicar no botão na aba inicial registro o código será executado e todas as informações contidas nessa aba inicial serão divididas nas abas da planilha.
Podemos observar que a macro é essencial em casos que temos uma quantidade de dados muito grandes e temos que fazer ações repetitivas. Seria inviável fazer essa separação que foi feita de forma manual separando uma a uma. Realizar um procedimento similar com fórmulas também seria possível, mas é algo que iria demandar muito tempo e não seria tão eficiente quanto o que fizemos.
No vídeo referente a este assunto o professor utiliza uma planilha com mais de 15000 linhas e em questão de segundos todas as abas das empresas são preenchidas com suas devidas informações sem que haja mistura de empresas.
O programa criado em VBA além de prático e rápido é bem eficiente e poderá ser executado diversas vezes.
Para continuar recebendo conteúdo sobre esse e outros assuntos de Excel e VBA, acompanhe os nossos posts.
A Hashtag Treinamentos conta com mais de 13.000 alunos treinados em seus cursos online e presencial, clique para saber mais!
Quer aprender tudo de Excel para se tornar o destaque de qualquer empresa?
Sócio fundador e especialista em Python da Hashtag Treinamentos. Criador do Método Impressionador para ensinar pessoas comuns a crescerem na carreira e se destacarem na empresa usando o Python.