ProgressBar no Excel

ProgressBar no Excel

Veja como criar uma progressbar no Excel.

Neste artigo você verá como criar uma barra de progresso no VBA Excel para indicar a situação de um determinado processamento ao seu cliente de forma visual e fácil.

No exemplo fazemos a barra de progresso no Excel de duas formas: Na planilha e em formulário VBA.

Progressbar Excel 1

Como Colocar uma ProgressBar no Excel?

Ás vezes temos rotinas que demoram muito no Excel, e colocar uma barra de progresso no Excel é uma boa maneira de demonstrar a evolução das tarefas realizadas.

No exemplo desta planilha foi inserido na própria planilha a barra de progresso.

Para inserir uma barra de progresso na planilha você deve clicar na guia Desenvolvedor e no botão Inserir e no botão mais controles e selecione o controle “Microsoft ProgressBar Control, version 6.0” e desenhe o objeto de progressão na planilha.

 

A barra de progresso tem três propriedades principais que iremos configurar para que ela funcione:

  1. Min: Mínimo valor da barra de progresso, normalmente é zero, mas pode colocar outro valor.
  2. Max: Maior valor da sua barra de progresso, é usado pra dimensionar o quando foi feito já do total.
  3. Value: Valor atual do progresso. É ao alterar esta propriedade que a barra de progresso se movimenta.

A barra de progresso pode ser usada em várias situações, mas uma das que tem maior serventia é quando temos loops no código.

Com a barra de progresso sabemos o quanto já foi processado e o quanto ainda falta processar, além de sabermos que não travou o código.

Abaixo um exemplo do código fonte de um processamento com atualização da barra de progresso do Excel.

Sub lsConverterValores()
    On Error Resume Next
 
    Dim lRng As Range
    Dim lCel As Range
    Dim lContador As Long
    Dim lTotal As Long
    
    Set lRng = Plan1.Range("A1:A30000")
    
    lTotal = lRng.Rows.Count
    
    ProgressBar21.Visible = True
    
    'Define os valores máximo, mínimo e zera a progress bar
    Plan1.ProgressBar21.Min = 0
    Plan1.ProgressBar21.Max = lTotal
    Plan1.ProgressBar21.Value = 0
   
    For Each lCel In lRng
        If lCel.Value <> "" And IsNumeric(lCel.Value) Then
            lCel.Value = lCel / 100
            'Incrementa a ProgressBar
            Plan1.ProgressBar21.Value = Plan1.ProgressBar21.Value + 1
        End If
    Next lCel
    
    Selection.Style = "Comma"
    
    ProgressBar21.Visible = False
    MsgBox "Processo concluído!", vbInformation, "Sucesso!"
   
End Sub

O código acima converte uma coluna de valores dividindo por 100 (tem formas bem melhores de fazer isso, é apenas um teste), e a cada iteração a propriedade Value da ProgressBar é incrementada em 1.

Plan1.ProgressBar21.Value = Plan1.ProgressBar21.Value + 1

ProgressBar Formulário VBA Excel

Outra forma de fazer isto é com formulários no Excel.

Você pode preferir chamar um formulário para um determinado processamento ao invés de fixá-lo na sua planilha, o que faz sentido.

Neste caso dê ALT+F11 para abrir o VBE e clique em Inserir Formulário.

Na Caixa de Ferramentas selecione a opção ProgressBar e desenhe no formulário conforme abaixo.

Pode incluir também um botão para que ao clicar nele seja realizada uma ação.

ProgressBar Excel Form

Está pronto, agora basta usar a mesma técnica de definir as propriedades Min, Max e alterar a propriedade Value de acordo com o processamento for sendo executado.

Para ser diferente fizemos o seguinte código para o botão processar:

Sub lsProcessamentoFormulario()
    On Error Resume Next
 
    Dim i As Long
    
    'Define os valores máximo, mínimo e zera a progress bar
    frmProgresso.progBarProcessamento.Min = 0
    frmProgresso.progBarProcessamento.Max = 30000
    frmProgresso.progBarProcessamento.Value = 0
   
    For i = 1 To frmProgresso.progBarProcessamento.Max
        frmProgresso.progBarProcessamento.Value = frmProgresso.progBarProcessamento.Value + 1
    Next i
    
    MsgBox "Processo concluído!", vbOKOnly, "Sucesso"
    Unload frmProgresso
   
End Sub

No código acima simplesmente é feito um loop de 0 à 30.000 incrementando então o processamento de um em um.

Download da Barra de Progresso Excel

Baixe a planilha