Escolar Documentos
Profissional Documentos
Cultura Documentos
poderá pretender fornecer ao utilizador uma indicação de que a macro está a avançar
correctamente. Este artigo descreve como criar uma barra de progresso com um formulário de
adequação a um fim específico. Este artigo pressupõe que o utilizador conhece a linguagem de
No exemplo seguinte, uma subrotina de Visual Basic povoa um grande intervalo de células com
No Microsoft Office Excel 2007, clique em Visual Basic no grupo Código no separador
Programador.
em Opções do Excel.
d. Propriedade Valor
e. --------------------------------------------
f. Caption A actualizar. Aguarde por favor...
Nota Se a janela Properties não estiver visível, clique em Properties Window no menu
View.
i.
j. Propriedade Valor
k. -----------------------------
l. Name FrameProgress
o. Propriedade Valor
p. -------------------------------------
q. Name LabelProgress
r. BackColor &H000000FF&
s. SpecialEffect fmSpecialEffectRaised
Faça duplo clique no formulário de utilizador para abrir a janela Code do formulário de
utilizador.
No módulo, introduza o código seguinte para o evento UserForm_Activate:
9. Sub ShowUserForm()
10. UserForm1.Show
11.End Sub
12.Sub Main()
13. Dim Counter As Integer
14. Dim RowMax As Integer, ColMax As Integer
15. Dim r As Integer, c As Integer
16. Dim PctDone As Single
17. Application.ScreenUpdating = False
18. ' Initialize variables.
19. Counter = 1
20. RowMax = 100
21. ColMax = 25
22. ' Loop through cells.
23. For r = 1 To RowMax
24. For c = 1 To ColMax
25. 'Put a random number in a cell
26. Cells(r, c) = Int(Rnd * 1000)
27. Counter = Counter + 1
28. Next c
29. ' Update the percentage completed.
30. PctDone = Counter / (RowMax * ColMax)
31. ' Call subroutine that updates the progress bar.
32. UpdateProgressBar PctDone
33. Next r
34. ' The task is finished, so unload the UserForm.
35. Unload UserForm1
36.End Sub
37.Sub UpdateProgressBar(PctDone As Single)
38. With UserForm1
39. ' Update the Caption property of the Frame control.
40. .FrameProgress.Caption = Format(PctDone, "0%")
41. ' Widen the Label control.
42. .LabelProgress.Width = PctDone * _
43. (.FrameProgress.Width - 10)
44. End With
45. ' The DoEvents allows the UserForm to update.
46. DoEvents
47.End Sub
49. No Excel 2003, e em versões anteriores do Excel, aponte para Macro no menu
Ferramentas e clique em Macros.
No Excel 2007, clique em Macros no grupo Código no separador Programador.
É apresentada uma caixa de diálogo com uma barra de progresso vermelha. A barra de progresso
evento Activate do formulário de utilizador chama a subrotina Main. A subrotina Main povoa as
Nota Quando utilizar esta técnica, a macro demora um pouco mais de tempo a concluir as
respectivas tarefas.