VBA BarraDeProgresso
VBA BarraDeProgresso
1 Crie uma pasta padro no Excel, e salve-a com o nome (sugestivo) VBA_com_barra.xls
2 Abra o editor de VBA Para Excel 2003 ou anteriores: a. Menu EXIBIR > Barra de Ferramentas > Visual Basic. b. Clique no boto Editor Visual Basic:
Para Excel 2007: a. Clique no Boto Microsoft Office e, em seguida, clique em Opes do Excel . b. Clique em Personalizar . c. Clique para selecionar a caixa de seleo guia Mostrar desenvolvedor na faixa de opes . d. Clique em OK para fechar a caixa de dilogo Opes do Excel . 3 Criando o mdulo que ir armazenar o cdigo em VBA. Clique no Menu INSERIR > Mdulo
Surgir ento uma rea (direita) em branco para a insero do cdigo VBA. Objetivo do Exemplo: Cdigo VBA para criar um valor progressivo na Coluna A do Excel, utilizando o incremento 1. Em outras palavras, vai escrever um nmero em ordem crescente em 3000 linhas da Coluna A, no Excel. Vamos digitar o seguinte cdigo (o que possui apostrofe () um comentrio):
Sub contar() Dim limite As Integer 'apresentando uma varivel para armazenar o valor mximo limite = 3000 'atribui a quantidade mxima de clulas a serem preenchidas Range("A1").Select 'seleciona coluna A para iniciar a contagem For x = 1 To limite 'lao repete ao at varivel limite. X varivel incio e incrementada ActiveCell = x 'atribui o valor atual de X na clula ativa/selecionada ActiveCell.Offset(1, 0).Select 'percorre uma linha abaixo e no muda de coluna Next x 'repete o lao se no chegou ainda no limite End Sub
Teste o VBA e veja que ele demora algum tempo para ser executado.
2
Obs.: No utilize valores muito altos para este teste, para no sobrecarregar a memria de seu computador ou superar o limite de verses do Excel 2003 ou anteriores (65000 Linhas). 4 Criando o Formulrio que ir exibir a barra de progresso e porcentagem. Clique no menu INSERIR > UserForm
5 Editando Propriedades do Form. Na barra de Propriedades (esquerda) mude: (se no estiver ativa, clique no menu EXIBIR > Janela Propriedades, ou aperte F4 no teclado)
De:
Para:
6 Desenhando Rtulos e Quadros para Barra de Processos 6.1 Rtulo para Identificao da Janela
Desenhe um Label para Identificao da Janela. Use as ferramentas que so exibidas ao clicar uma vez no formulrio.
Fica assim:
Clique na Propriedade FONT e altere a fonte para: Tahoma, Negrito, Tam. 11. E ajuste o tamanho do rtulo. 6.2 Desenhe um Quadro para armazenar a barra. Fica assim:
6.3 Desenhe a barra de processo dentro do Quadro, usando um rtulo. Clique na ferramenta rtulo e adicione dentro do quadro
Fica assim:
7 Aplicando a programao para a Barra de Processo (no Formulrio). 7.1 D dois cliques rpidos na rea do Formulrio Processo, onde no exista Rtulo nem Quadro.
Aparecer uma rea para adicionar um cdigo VBA que ser executado ao formulrio (barra de processo) abrir:
7.2 Iniciando a barra: Complete o seguinte cdigo: Mude Public Sub UserForm_Click() para Public Sub UserForm_Activate()
Public Sub UserForm_Activate() 'Configura a largura do lblProcesso (verde) para 0 frmProcesso.lblProcesso.Width = 0 'Chama a sub principal que o cdigo das aces Call contar End Sub
8 Cdigo que altera a barra de processo de acordo com o andamento Volte para o cdigo SUB CONTAR (primeiro cdigo que fizemos). D dois cliques no mdulo1:
Abrir o cdigo:
8.1 Adicionando Cdigo de Processo da Barra Depois de END SUB (final da Sub-rotina contar): Digite o seguinte cdigo, que altera a largura da barra de processo de acordo com o andamento.
Sub AtualizaBarra(Percentual As Single) 'varivel reservada para ser % With frmProcesso 'With usa o frmprocesso para as aes abaixo 'sem ter que repetir o nome do objeto frmprocesso ' Atualiza o Ttulo do Quadro que comporta a barra para % .FrameProcesso.Caption = Format(Percentual, "0%") ' Atualza o tamanho da Barra (label) .lblProcesso.Width = Percentual * _ (.FrameProcesso.Width - 10) End With 'final do uso de frmprocesso diretamente 'Habilita o userform para ser atualizado DoEvents End Sub
9 Adicionando um contador ao processo princiapl. J fizemos toda estrutura para nossa barra funcionar, mas necessrio ter um controlador dentro do lao de repetio para que a barra tenha uma base de contagem da sua meta. No cdigo SUB CONTAR() vamos adicionar uma varivel para ser %, e outra para ser a contagem de cada ao que est sendo realizada, e assim calcular o status atual do processo.Adicionaremos tambm um comando para fechar a janela (formulrio) aps o processo ter fim. Veja a seguir. O cdigo SUB CONTAR() ficar assim com as alteraes (os cdigos adicionados esto em amarelo):
Sub contar() Dim percentual As Single Dim contador As Integer Dim limite As Integer 'apresentando uma varivel para armazenar o valor mximo
7
limite = InputBox("Digite o valor mximo de linhas") 'janela pede o valor de limite Range("A1").Select 'seleciona coluna A para iniciar a contagem For x = 1 To limite 'lao repete ao at varivel limite. X varivel incio e incrementada ActiveCell = x 'atribui o valor atual de X na clula ativa/selecionada ActiveCell.Offset(1, 0).Select 'percorre uma linha abaixo e no muda de coluna contador = contador + 1 'conta qual a quantidade j realizada de aes percentual = contador / limite 'divide a quantidade feita pelo limite e a frao % ' Chama atualizaao de barra AtualizaBarra percentual frmProcesso.Hide 'fecha a janela (formulrio) aps concluir o processo Next x 'repete o lao se no chegou ainda no limite End Sub
10 Fazer uma Sub-Rotina Simples para Chamar o frmProcesso. Aps o END SUB da CONTAR, digite o seguinte cdigo, que executar o frmProcesso e as macros ligadas a ele:
No Excel 2003: Para criarmos o boto temos que ativar a barra de ferramentas Formulrios. Clique no Menu Exibir, Barras de Ferramentas e ative a barra Formulrios. Vide figura a seguir.
8
O restante do procedimento igual ao que segue abaixo, a partir do item b do roteiro para Excel 2007.
No Excel 2007
a. Na Guia DESENVOLVEDOR, clique no Boto Inserir, e no primeiro objeto de formulrio, Boto de Formulrio.
10