Oi pessoal.

 

No artigo anterior, escrevi uma macro para exibir na barra de status do Excel o andamento de um processo em execução em seu projeto VBA. Clique aqui para ler agora.

Hoje, vou continuar abordando este tema e adicionando algumas técnicas que darão um ar ainda mais profissional aos seus projetos. Que tal exibir uma barra de progresso gráfica, com contador, igual a esta da imagem abaixo?

 

Figura 1

 

Muito legal! E nós vamos construir uma dessas agora. Vamos começar?

Primeiramente, vou definir o que vamos precisar para a construção dessa macro.

 

1 Userform que vamos alterar seu nome para “frmBarraDeProgresso”;

1 Label que vamos nomeá-lo “progressBar”;

1 Frame que terá sua propriedade Name alterada para “framePb”;

1 Módulo global onde vamos escrever nossa macro.

 

Para iniciar a tela do VBA, use o atalho ALT+F11.

 

Configurando o formulário

 

Insira um formulário ao projeto (Inserir > UserForm) e altere sua propriedade Name para frmBarraDeProgresso.

 

Coloque o controle Frame e altere suas propriedades abaixo:

Name = framePb;

Caption = 0%;

SpecialEffect = 2;

 

Coloque o controle Label dentro do framePb e mude suas propriedades a seguir:

Name = progressBar;

Caption = (deixe em branco);

SpecialEffect = 1;

Height = 15;

Width = 5;

 

Ajuste o tamanho do formulário e do framePb conforme desejar, de maneira que se aproxime do modelo mostrado aqui na figura 1.

 

Configurando o código que será executado

 


Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

 

Vamos usar o mesmo código de exemplo que utilizamos no artigo anterior, você pode definir o seu próprio código, caso já o tenha. Neste exemplo, a macro vai percorrer todos os registros do catálogo de telefones e exibir uma mensagem ao lado de cada registro. Isto é apenas um exemplo para estudo. Esse código deve ser escrito no Módulo1.

 

Private Sub MinhaMacro(ByVal rCell As Range)

    With rCell
        Select Case CInt(Left(.Offset(0, 1).Value, 1))
            Case 7, 8, 9
                .Offset(0, 2).Value = "Oi, " & .Value & ". Este número de telefone parece ser um celular!"
            Case Else
                .Offset(0, 2).Value = "Oi, " & .Value
        End Select
    End With

End Sub

 

Configurando o código da Barra de Progresso

 

Esse é o código que executa a chamada do formulário frmBarraDeProgresso e implementa toda a rotina de análise do andamento do processo. Esse código também deve ser escrito no Módulo1.

 

Sub BarraDeProgresso()
Dim i               As Long
Dim iUltimaLinha    As Long
Dim iPercentualConcluido As Double

    Application.ScreenUpdating = False

    iUltimaLinha = ActiveSheet.Range("A1").End(xlDown).Row

    frmBarraDeProgresso.Show False

    For i = 2 To iUltimaLinha
        iPercentualConcluido = i / iUltimaLinha
        With frmBarraDeProgresso
            .framePb.Caption = Format(iPercentualConcluido, "0%") & " Concluído"
            .progressBar.Width = iPercentualConcluido * (.framePb.Width - 10)
        End With

        DoEvents    'Permite que sejam visualizadas as mudanças nos controles do formulário

        ' O código da sua macro vai aqui
        Call MinhaMacro(ActiveSheet.Cells(i, 1))
    Next

    Unload frmBarraDeProgresso

    MsgBox "Processo concluído.", vbInformation, "Excel do Seu Jeito"

End Sub

 

Faça o download do arquivo de exemplo para testar esta macro vba. O link para baixar está no final do artigo.

 

Este código exibe tanto uma barrinha de progresso do processamento da sua macro como o percentual já executado. Muito útil em processos longos e demorados.

 

Espero que seja bem útil para vocês.

 

E para quem ainda não segue o @exceldoseujeito no twitter, fica aqui o convite para e ficar sempre atualizado das novidades aqui do site.

 

Até a próxima!

Antes de efetuar o download do arquivo de exemplo, convido você a socializar conosco.

Escolha uma das opções abaixo. Seguir no twitter, assinar nossa Newsletter...

Isso nos ajuda na divulgação do site e te permite ficar sempre atualizado das novidades. Fico muito grato pela sua colaboração.

Digite seu email:

Você receberá um email para ativar o cadastro, ok!