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.
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.
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 Follow @exceldoseujeitoe ficar sempre atualizado das novidades do site, ok.
Abraço.







