Barra de Progresso: veja 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

O que você aprende neste vídeo

Resposta rápida: A barra de progresso da aula é a célula F1, com formatação condicional de barra de dados, e quem a faz andar é o código VBA do botão Registrar Vendas, que separa as vendas da aba Registro nas abas de cada empresa. A aula monta a regra da barra e explica, linha a linha, o código já pronto.

Neste vídeo (23 min):

  • 1:07 - Mostra o resultado: ao clicar no botão Registrar Vendas, uma barra vai crescendo enquanto as vendas são registradas nas outras abas.
  • 1:14 - Apresenta os dados: a aba Registro tem datas, códigos, empresas e valores de várias empresas com nome de cor, e cada empresa tem uma aba com o seu nome. A macro varre a tabela e leva cada venda para a aba da sua empresa.
  • 3:14 - Antes de clicar no botão, prepara a célula F1, que vai mostrar a evolução da compilação, com uma formatação condicional: ela olha o valor da célula e faz alguma coisa de acordo com ele.
  • 4:22 - Cria a barra: com F1 selecionada, vai em Página Inicial, Formatação Condicional, Barra de Dados e escolhe a primeira barra azul. Depois, em Gerenciar Regras, edita a regra e troca o preenchimento gradual pelo sólido, em azul, para a barra crescer sempre azul.
  • 5:46 - Ainda na regra, muda o mínimo e o máximo para o tipo Número, com 0 no mínimo e 1 no máximo.
  • 7:04 - Clica em Registrar Vendas: as vendas vão para as abas que estavam vazias enquanto a barra em F1 avança, e cada aba termina só com as vendas da empresa que dá nome a ela.
  • 7:57 - Abre o editor do VBA com Alt + F11 (se não abrir, Alt + Fn + F11) ou pela guia Exibir, em Macros, escolhendo a macro e clicando em Editar.
  • 9:57 - Começa a ler o código: a variável linha começa em 2, e linha_final recebe o número da última linha preenchida da aba Registro.
  • 13:10 - Entra a estrutura de repetição que, traduzida, significa enquanto: enquanto a célula da linha atual na coluna 1 não estiver vazia, o código executa o que está dentro dela; na primeira linha vazia, sai. A explicação detalhada dessa estrutura fica para outro vídeo.
  • 15:17 - Dentro da repetição, guarda as quatro colunas da linha em quatro variáveis (data, código, empresa e valor) e vai para a aba que tem o nome da empresa, onde acha a primeira linha vazia.
  • 19:31 - Grava data, código, empresa e valor nessa linha vazia e faz linha = linha + 1, para descer até o fim da tabela.
  • 20:33 - Chega à linha da barra: a cada passada, F1 recebe linha / linha_final.

Trechos do vídeo:

  • Numa barra de dados com mínimo e máximo do tipo Número, 0 e 1, a célula com 0 fica sem nada pintado, com 1 (100%) fica toda preenchida e, no meio, pinta a proporção: metade com 0,5, 30% com 0,3.
  • A partir de uma célula, o equivalente em VBA ao Ctrl + seta para baixo leva à última célula preenchida da sequência. Para achar a próxima linha vazia de uma aba, o código parte de uma célula bem abaixo, a A10000, sobe como um Ctrl + seta para cima até a última preenchida e soma 1 ao número dessa linha.
  • A barra anda porque o valor da célula cresce a cada registro: a linha atual dividida pela última linha da tabela aumenta aos poucos até chegar a 1, o máximo da barra de dados.
  • Nome de variável no VBA não pode ter espaço; para juntar duas palavras, ele usa underline, como em linha_final.

Para baixar a planilha utilizada nessa aula clique aqui!

A barra de progresso no Excel/VBA é um indicador visual que mostra o andamento de uma macro enquanto ela é executada — útil em rotinas demoradas, como separar milhares de linhas em várias abas. Ela é criada com VBA, atualizando uma forma ou a barra de status conforme o código avança, dando feedback ao usuário durante o processamento.

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
Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

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.

Perguntas frequentes sobre barra de progresso no VBA

1. O que é uma barra de progresso no VBA?

É um indicador que mostra, em tempo real, o quanto de uma macro já foi executado. Ajuda o usuário a saber que o Excel está trabalhando e quanto falta para terminar, especialmente em rotinas que demoram.

2. Para que serve a barra de progresso?

Serve para dar feedback visual durante processos demorados, evitando a impressão de que o Excel travou. É comum em macros que percorrem muitas linhas, como separar uma base grande em várias abas.

3. Como separar dados em várias abas com VBA?

Cria-se uma macro que percorre a base linha a linha (com um laço, como o While), identifica a categoria de cada registro e copia a linha para a aba correspondente, criando a aba se ela ainda não existir.

4. Como criar uma barra de progresso no Excel?

Você pode atualizar a barra de status (Application.StatusBar) com o percentual concluído, ou desenhar uma forma que aumenta de largura conforme o laço avança. Em ambos os casos, a atualização é feita dentro do loop da macro.

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?