Então pessoal… Depois de um tempo sem escrever um novo artigo aqui no site, volto hoje publicando uma dica fácil e extremamente útil para aquelas funções que demandam um tempo maior de execução, tornando necessário que o sistema nos informe o andamento do processo.

Geralmente quando nossa macro vai percorrer milhares de linhas em nossa planilha, ou acessar diversos comandos para fazer inúmeras atividades, precisamos, quase que, obrigatoriamente, exibir o status do processo: o que a macro está fazendo; quanto falta para terminar; se está travado ou processando ainda.

São muitos os motivos. E para resolver isso, nada melhor que informar o percentual de execução na barra de status do próprio Excel. Algo do tipo: Aguarde… 38% concluído.

Vejamos como podemos criar um contador para as tarefas de nossa macro

Para começar a criar a macro vba em excel, você precisa acessar o ambiente de programação em vba (visual basic for applications).

Use o atalho ALT+F11 e insira um módulo.

(Se você não sabe como fazer isso, leia isto)

 

Vou sugerir um exemplo simples de uso e como podemos desenvolver o nosso código.

Digamos que eu tenha uma planilha com milhares de linhas de registro, um cadastro de clientes ou lista telefônica, por exemplo. Vamos supor que eu precise percorrer toda a minha lista e executar alguma ação, do tipo enviar um email, copiar algum registro específico, adicionar alguma informação por linha, enfim, qualquer coisa que a sua aplicação demande.

Neste exemplo, vou apenas inserir uma mensagem na célula adjacente a cada registro. Veja:

 

Sub BarraDeProgresso()
Dim i               As Long
Dim iUltimaLinha    As Long
Dim sStatusProcesso As String

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

    sStatusProcesso = "Aguarde... O sistema está processando as informações. "

    Application.StatusBar = sStatusProcesso

    For i = 2 To iUltimaLinha
        Application.StatusBar = sStatusProcesso & Format(i / iUltimaLinha, "0.0%") & " Concluído"
        ' O código da sua macro vai aqui
        Call MinhaMacro(ActiveSheet.Cells(i, 1))
    Next

    Application.StatusBar = False

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

End Sub

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

 

No exemplo acima, ao percorrer cada linha do catálogo de telefones, a rotina verifica se o primeiro dígito do número telefônico corresponde a um padrão de celular e escreve uma mensagem naquela linha correspondente.

O comando Application.StatusBar escreve na barra de progresso a informação do andamento do processo definida por você dentro da sua rotina. Para finalizar sua escrita na barra de status do Excel, ou seja, no fim do processo, defina Application.StatusBar=False.

O laço For…Next que utilizamos, serve para lermos todos os registros da tabela. Dentro deste loop, devemos escrever na barra de status o percentual de execução da macro. Podemos fazer isto dividindo a posição atual pelo total de linhas e formatá-la como percentual, como mostrado no código acima.

Desta maneira, o usuário terá conhecimento do andamento do processo.

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

 

Isto foi apenas um exemplo, e você pode criar suas próprias macros em excel, de acordo com a necessidade do seu projeto.

Espero que tenham gostado. Em breve publico mais dicas excel para vocês.

Deixo aqui um convite para e ficar sempre atualizado das novidades do site, ok.
Abraço.

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!