/ / Indicador de progresso no Excel VBA

Indicador de Progresso no Excel VBA

Abaixo, vamos olhar para um programa em Excel VBA que cria um indicador de progresso. Nós mantivemos o indicador de progresso o mais simples possível, mas parece profissional. Você está pronto?

A forma de usuário que vamos criar é a seguinte:

Indicador de Progresso no Excel VBA

Para criar este formulário de usuário, execute as etapas a seguir.

1. Abra o Editor do Visual Basic. Se o Explorador de Projetos não estiver visível, clique em Visualizar, Explorador de Projetos.

2. Clique em Inserir, Userform. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada como abaixo.

Configuração da Tela Userform no Excel VBA

Esta forma de usuário consiste apenas em três controles. Um controle de quadro e dois controles de etiqueta.

3. Adicione o controle de quadro. Você pode fazer isso clicando em Frame na caixa de ferramentas. Em seguida, você pode arrastar um controle de quadro no Userform. Você precisa alterar algumas propriedades desse controle de quadro. Clique com o botão direito do mouse no controle do quadro e, em seguida, clique em Propriedades. Esvazie o campo Legenda, defina a Altura como 24 e Largura como 204.

4 Adicione o primeiro controle de rótulo e coloque-o no controle de quadros. Clique com o botão direito do mouse no controle do rótulo e clique em Propriedades. Mude o nome para Bar, BackColor para Highlight, esvazie o campo Caption, defina a Height como 20 e Width como 10.

5 Adicione o segundo controle de rótulo e coloque-o acima do controle Frame. Clique com o botão direito do mouse no controle do rótulo e clique em Propriedades. Altere o nome para Texto e altere a legenda para "0% concluído".

6. Altere a legenda do Userform para Indicador de Progresso.

Depois que isso for concluído, o resultado deve ser consistente com a imagem da forma de usuário mostrada anteriormente.

7. Coloque um botão de comando na sua planilha e adicione a seguinte linha de código para mostrar a forma do usuário:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Se você passou pela outra forma de usuárioexemplos neste site, você sabe que este é o momento de criar o Sub UserForm_Initialize. Este Sub é executado automaticamente sempre que a forma do usuário é carregada. Assim, quando você usa o método Show para o Userform, o código será executado automaticamente. Em vez do Sub UserForm_Initialize, criamos o Sub UserForm_Activate. Usando este sub, o Excel VBA pode atualizar o Userform para mostrar o progresso da macro.

8. Abra o Editor do Visual Basic.

9. No Project Explorer, clique com o botão direito do mouse em UserForm1 e clique em View Code.

10. Escolha Userform na lista suspensa à esquerda. Escolha Ativar na lista suspensa à direita.

11. Adicione a seguinte linha de código:

Private Sub UserForm_Activate()

code

End Sub

Explicação: este sub chama outro código sub chamado que vamos criar em um minuto. Confuso? Você pode passar pelo nosso capítulo Função e Sub para saber mais sobre subs. Se você está com pressa, basta executar os seguintes passos e você estará bem.

12 Coloque o código sub-nomeado em um módulo (no Editor do Visual Basic, clique em Inserir, Módulo). Este é apenas um exemplo. Este é o lugar para adicionar seu próprio código quando você quiser usar este indicador de progresso para sua própria macro. O código parece da seguinte maneira.

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

For i = 1 To 100
    For j = 1 To 1000
        Cells(i, 1).Value = j
    Next j
    pctCompl = i
    progress pctCompl
Next i

End Sub

Explicação: primeiro, inicializamos algumas variáveis. Em seguida, limpamos a folha1. Usamos um loop duplo para mostrar os valores de 1 a 1000 nas primeiras 100 linhas da planilha. Isso manterá o Excel VBA ocupado por um tempo e nos dará a oportunidade de ver o progresso da macro. A variável pctCompl (abreviação de percentageCompleted) mede o progresso da macro. Finalmente, chamamos outro progresso sub nominado e passamos o valor da variável pctCompl para atualizar o Userform. Desta forma, podemos ver o progresso da macro!

13. Adicione outro progresso sub nomeado. O código é o seguinte:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Explicação: a primeira linha de código altera a legenda do primeiro controle de rótulo. A segunda linha de código altera a largura do segundo controle de rótulo. Adicione DoEvents para atualizar o formulário do usuário.

14. Saia do Editor do Visual Basic e clique no botão de comando na folha:

Resultado:

Resultado do indicador de progresso

Nota: para essa macro, usamos a variável i para medir o progresso. Por exemplo, na linha 11, 10% é concluído. Isso pode ser diferente para sua macro. A técnica de passar o valor da variável pctCompl para o subprocesso para atualizar o Userform permanece a mesma.

Leia também: