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!
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_finalrecebe 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 baixoleva à ú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 umCtrl + seta para cimaaté 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:
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.
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.

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.
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.
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).
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.
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?

