ID do artigo: 211736 - Última revisão: quarta-feira, 1 de fevereiro de 2012 - Revisão: 1.0

Como exibir uma barra de progresso com um formulário de usuário no Excel

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Para obter uma versão deste artigo do Microsoft Excel 97, consulte 170782  (http://support.microsoft.com/kb/170782/ ) .

Idéia enviada do artigo: John Walkenbach

Nesta página

Expandir tudo | Recolher tudo

Sumário

Se você tiver um Visual Basic for Applications de Microsoft macro que leva muito tempo para terminar, você poderá dar ao usuário uma indicação de que a macro está progredindo corretamente. Este artigo descreve como criar uma barra de progresso com um formulário de usuário no Microsoft Excel.

Mais Informações

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um propósito específico. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender a necessidades específicas.

Criar formulário do usuário

No exemplo a seguir, uma sub-rotina Visual Basic preenche um intervalo grande de células com um número aleatório. O indicador mostra o que a macro está sendo executado corretamente.
  1. Abra uma nova pasta de trabalho no Excel.
  2. No Microsoft Office Excel 2003 e versões anteriores do Excel, clique em Ferramentas, aponte para Macroe, em seguida, clique em Editor de Visual Basic.

    No Microsoft Office Excel 2007, clique em Visual Basic no Código grupo a Desenvolvedor guia.

    Observação Para exibir o Desenvolvedor na faixa de opções, siga estas etapas:
    1. Inicie o Excel 2007, clique no Botão de Microsoft Officee, em seguida, clique em Opções do Excel.
    2. No Opções do Excel caixa de diálogo, clique em Popularese, em seguida, clique para selecionar o Mostrar guia desenvolvedor na faixa de opções caixa de seleção.
  3. Sobre o Inserir menu, clique em UserForm.
  4. Desenhar um Rótulo controle no formulário do usuário.
  5. Alterar as seguintes propriedades das Rótulo o controle para o valores a seguir:
       Property        Value
       --------------------------------------------
       Caption         Now updating. Please wait...
    					
    Observação Se o Propriedades janela não estiver visível, clique em Janela Propriedades sobre o Modo de exibição menu.
  6. Desenhar um Quadro controle no formulário do usuário.
  7. Alterar as seguintes propriedades das Quadro o controle para o valores a seguir:
        
       Property        Value
       -----------------------------
       Name            FrameProgress
    					
  8. Desenhar um Rótulo controle sobre o Quadro controle.
  9. Alterar as seguintes propriedades das Rótulo o controle para o valores a seguir:
        Property        Value
        -------------------------------------
        Name            LabelProgress
        BackColor       &H000000FF&
        SpecialEffect   fmSpecialEffectRaised
    					

Digite o código de Macro

  1. Clique duas vezes no formulário de usuário para abrir o Código janela para o formulário do usuário.
  2. No módulo, digite o seguinte código para o UserForm_Activate evento:
    Private Sub UserForm_Activate()
        ' Set the width of the progress bar to 0.
        UserForm1.LabelProgress.Width = 0
    
        ' Call the main subroutine.
        Call Main
    End Sub
    					
  3. Sobre o Inserir menu, clique em Módulo.
  4. No Código a janela para o módulo, digite o seguinte código:
    Sub ShowUserForm()
        UserForm1.Show
    End Sub
    
    Sub Main()
        Dim Counter As Integer
        Dim RowMax As Integer, ColMax As Integer
        Dim r As Integer, c As Integer
        Dim PctDone As Single
    
        Application.ScreenUpdating = False
        ' Initialize variables.
        Counter = 1
        RowMax = 100
        ColMax = 25
    
        ' Loop through cells.
        For r = 1 To RowMax
            For c = 1 To ColMax
                'Put a random number in a cell
                Cells(r, c) = Int(Rnd * 1000)
                Counter = Counter + 1
            Next c
    
            ' Update the percentage completed.
            PctDone = Counter / (RowMax * ColMax)
    
            ' Call subroutine that updates the progress bar.
            UpdateProgressBar PctDone
        Next r
        ' The task is finished, so unload the UserForm.
        Unload UserForm1
    End Sub
    
    Sub UpdateProgressBar(PctDone As Single)
        With UserForm1
    
            ' Update the Caption property of the Frame control.
            .FrameProgress.Caption = Format(PctDone, "0%")
    
            ' Widen the Label control.
            .LabelProgress.Width = PctDone * _
                (.FrameProgress.Width - 10)
        End With
    
        ' The DoEvents allows the UserForm to update.
        DoEvents
    End Sub
    					
  5. Retornar para o Excel.
  6. No Excel 2003 e em versões anteriores do Excel, aponte para Macro sobre o Ferramentas menu e clique Macros.

    No Excel 2007, clique em Macros no Código grupo a Desenvolvedor guia.
  7. No Macro caixa de diálogo, clique para selecionar ShowUserForme, em seguida, clique em Executar.
Aparece uma caixa de diálogo que tem uma barra de progresso de vermelho. A barra de progresso aumenta conforme o Principal sub-rotina preenche as células da planilha.

O ShowUserForm sub-rotina mostra o formulário de usuário. O procedimento que está associado a Ativar evento de chamadas de formulário de usuário a Principal sub-rotina. O Principal sub-rotina preenche as células com números aleatórios. Além disso, as chamadas de sub-rotina a UpdateProgressBar sub-rotina que atualiza o Rótulo controle no formulário do usuário.

Observação Quando você usa essa técnica, sua macro leva apenas um pouco mais tempo para concluir as tarefas pretendidas.

A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2010
Palavras-chave: 
kbinfo kbexpertisebeginner kbcode kbhowto kbmacro kbmt KB211736 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 211736  (http://support.microsoft.com/kb/211736/en-us/ )