Barra de progressão simples - JJoão (06/2005)
Dúvida colocada: Queria adicionar uma barra de progressão a uma macro minha para que pudesse ir acompanhando a execução tem como o fazer ? ...
Solução: Uma barra de progressão bem simples num formulário
A barra de progressão consiste em 1 frame (nome:frame_barra)e um label (nome:label_barra) dentro do frame ou moldura
Para testar acrescentei um botão (CommandButton1) que executa uma rotina de simulação.
Formulário (nome:UserForm1) em modo de edição
Pode obter o aspecto de caixa na moldura (frame_barra) alterando nas propriedades o item
"SpecialEffect" para o "2-fmSpecialEffectSunken", ou para o que mais lhe agradar.
O label terá que ter uma cor de fundo diferente do formulário para que se note a progressão, fica
à sua escolha.
Formulário em modo de execução
Código a colocar no formulário
Private Sub UserForm_Initialize()
'definir a largura inicial
'da moldura
frame_barra.Width = UserForm1.Width - (frame_barra.Left * 3)
'e do label
Label_barra.Width = 0
End Sub
'
' Botão para testar
'
Private Sub CommandButton1_Click()
Call Operacao
End Sub
'
' Barra de progressão
'
Private Sub ProgressBar(valor_corrente, valor_maximo)
Dim largura As Long
'largura da moldura para a barra de progressão
largura = frame_barra.Width
'barra de progressão
With Label_barra
.Width = Int((valor_corrente / valor_maximo) * largura)
End With
End Sub
'
' Rotina de Simulação para testar a barra
'
Private Sub Operacao()
Dim i As Integer, Maximo As Integer
Maximo = 2000
For i = 1 To Maximo
'--- informativo, é dispensável ---------------------
UserForm1.Caption = "Valor actual: " & i
'-------------------------------------------------------
DoEvents
'mostra a progressão da operação
ProgressBar i, Maximo
Next i
End Sub
|