Indicador de progresso no Excel VBA - Macros fáceis do Excel

Índice

Abaixo, veremos um programa em Excel VBA que cria um indicador de progresso. Mantivemos o indicador de progresso o mais simples possível, mas parece profissional. Você está pronto?

O formulário de usuário que vamos criar tem a seguinte aparência:

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

1. Abra o Editor do Visual Basic. Se o Project Explorer não estiver visível, clique em View, Project Explorer.

2. Clique em Inserir, Formulário do usuário. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada conforme abaixo.

Este formulário de usuário consiste apenas em três controles. Um controle de quadro e dois controles de rótulo.

3. Adicione o controle de quadro. Você pode fazer isso clicando em Quadro na caixa de ferramentas. Em seguida, você pode arrastar um controle de quadro no formulário de usuário. Você precisa alterar algumas propriedades deste controle de quadro. Clique com o botão direito do mouse no controle do quadro e, a seguir, clique em Propriedades. Esvazie o campo Legenda, defina a altura como 24 e a largura como 204.

4. Adicione o primeiro controle de rótulo e coloque-o no controle Frame. Clique com o botão direito do mouse no controle do rótulo e, a seguir, clique em Propriedades. Altere o nome para Barra, BackColor para Destaque, esvazie o campo Legenda, defina a Altura como 20 e a Largura 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, a seguir, clique em Propriedades. Mude o nome para Texto e mude a Legenda para '0% Concluída'.

6. Altere a legenda do formulário do usuário para indicador de progresso.

Depois de concluído, o resultado deve ser consistente com a imagem do formulário do usuário mostrada anteriormente.

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

Private Sub CommandButton1_Click ()
UserForm1.Show
End Sub

Se você já passou por outros exemplos de Userform neste site, sabe que é hora de criar o Sub UserForm_Initialize. Este Sub é executado automaticamente sempre que o formulário do usuário é carregado. Assim, ao usar 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 formulário do usuário 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:

Subutilizador PrivadoForm_Activate ()
código
End Sub

Explicação: este sub chama outro sub código denominado que iremos criar em um minuto. Confuso? Você pode ler nosso capítulo Função e Sub para aprender mais sobre sub. Se você estiver com pressa, basta executar as etapas a seguir e você ficará bem.

12. Coloque o subcódigo 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 quiser usar este indicador de progresso para sua própria macro. O código é o seguinte.

Sub-código ()
Dim i As Integer, j As Integer, pctCompl As Single
Sheet1.Cells.Clear
Para i = 1 a 100
Para j = 1 a 1000
Células (i, 1). Valor = j
Próximo j
pctCompl = i
progresso pctCompl
Proximo eu
End Sub

Explicação: primeiro, inicializamos algumas variáveis. Em seguida, limpamos a planilha1. 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 percentCompleted) mede o progresso da macro. Finalmente, chamamos outro sub nomeado progress e passamos o valor da variável pctCompl para atualizar o Userform. Assim podemos ver o andamento da macro!

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

Subprogresso (pctCompl As Single)
UserForm1.Text.Caption = pctCompl & "% concluído"
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 Userform.

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

Resultado:

Nota: para esta 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 subprogresso para atualizar o formulário do usuário permanece a mesma.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave