Blog

Postado em em 29 de maio de 2019

Barra de Progresso: como exibir ao separar dados em várias abas

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!

O que é a Barra de Progresso?

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.

Quando utilizar a Barra de Progresso?

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:

Barra de Progresso Excel
Tabela Principal

Como utilizar o VBA para separar dados em várias abas?

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.

Barra de Progresso

Utilizando a Formatação Condicional

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.

Formatação condicional – Barra de dados

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.

Formatação condicional - Gerenciar Regras
Formatação condicional – 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.

Formatação Condicional – Editar Regra

Ao selecionar essa opção será aberta uma nova janela de edição da regra selecionada.

Formatação condicional - Barra de Dados
Formatação condicional – Barra de Dados

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.

Formatação condicional - Barra de Dados
Formatação condicional – Barra de Dados

Tendo modificado essas informações podemos dar OK nas duas janelas que a nossa formatação condicional estará completa.

Barra de Progresso em Andamento
Barra de Progresso em Andamento

Testando a macro Registrar Vendas

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.

Barra de Progresso Preenchida

Explicando o código 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).

Código em VBA - Separar dados
Código em VBA – Separar dados

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.

Variáveis Linha e Linha_Final

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.

Estrutura de Repetição – While

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.

Registrando as informações

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.

Executando o código

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.

Aba Marrom
Aba Marrom
Aba Azul
Aba Verde

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.



Quer aprender tudo de Excel para se tornar o destaque de qualquer empresa?