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!

https://youtu.be/Hwbd_HLwGdw

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 Excel 2
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.

Barra de Progresso Excel 3
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.

Barra de Progresso Excel 5
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 Excel 9
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
Barra de Progresso Excel 12
Aba Azul
Barra de Progresso Excel 13
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.

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?