Automate Excel VBA - Status Bar Updating
Changing Microsoft Excel Status Bar
Olá pessoal!
Antes de continuar, um pequeno parênteses, deixe seus comentários para este post.
Como sempre fazemos, é bom lembrar que este exemplo de código serve para que possamos ampliar a nossa visão sobre como utilizar outras informações muito mais úteis do que estas na Barra de Status, fica o exemplo!
Ahhh, e faremos passo a passo para incluir os iniciantes.
Início
Já percebeu que ao selecionarmos um range de células, não conseguimos observar o range selecionado na'Name Box'? (Veja abaixo)
Tampouco, observamos este Range na Barra de Status.
PASSO 01
Com o intuito de inserirmos um código que possa demonstrar o que selecionamos, vá para o VBE (pressione Alt + F11), e então dê um duplo clique em 'EstaPasta_de_trabalho' (ou 'ThisWorbook' se a sua versão do MS Office estiver em inglês).
PASSO 02
Ao lado direito, na área do editor, copie e cole o código abaixo:Private Sub Workbook_SheetSelectionChange
(ByVal Sh As Object, ByVal Target As Range)' Author Contact Place' André Luiz Bernardes bernardess@gmail.com http://inanyplace.blogspot.com/' Mostra as células que foram marcadas na barra de status.Dim cCell As Variant, i As RangeFor Each i In Selection.AreasLet cCell = cCell + CDec(i.Rows.Count) * i.Columns.CountNext
Let Application.StatusBar = Replace(Selection.Address(0, 0) & " selecionadas (" & cCell & Left(" Célula(s)", 11 + (cCell = 1)) & ")", ",", ", ")
End Sub
PASSO 03
Agora quando selecionar qualquer parte da planilha, sempre observará algo similar a isso:
Muito bem, o exemplo acabou aqui. Mas lembre-se, este foi apenas uma aplicabilidade para a utilização da Barra de Status. Colocarei outras aplicações abaixo para que continue se exercitando:
Exemplo 01
Se você, no código VBA, desligou a atualização da tela, e seus códigos levarem algum tempo para processar, o usuário pode pensar que o computador parou de responder. Por isso, uma boa regra de programação é informar ao usuário sobre a evolução do processamento, exibindo [no mínimo] uma mensagem na Barra de Status na parte inferior da tela.Sub StatusBarSample()
Let Application.ScreenUpdating = False' Desliga a atualização da tela.' Certifica-se de que a Barra de Status estará funcional.Let Application.DisplayStatusBar = TrueLet Application.StatusBar = "Por favor, aguarde a execução da 1ª Parte..."' No ponto abaixo, algum código é adicionado para o processamento.Application.Wait Now + TimeValue("00:00:02")Let Application.StatusBar = "Aguarde a execução da 2ª Parte..."' Adicione algum código para o processamento da 2ª Fase.Application.Wait Now + TimeValue("00:00:02")Let Application.StatusBar = False
End Sub
Exemplo 02
Você tem um processo que leva algum tempo para ser executado. Talvez uns 30 segundos, talvez 10 minutos. De qualquer forma você quer que o usuário saiba que a macro está sendo executado e em que parte do processe está:Sub StatusBar()
' Author Contact Place' André Luiz Bernardes bernardess@gmail.com http://inanyplace.blogspot.com/' Efetua um contador.Dim x As IntegerDim MyTimer As DoubleLet Application.StatusBar = True' Adapte este loop se for necessário.For x = 1 To 250Let MyTimer = TimerDoLoop While Timer - MyTimer < 0.03Application.StatusBar = "Progresso: " & x & " de 250: " & Format(x / 250, "Percent")DoEventsNext xLet Application.StatusBar = False
End Sub
Nenhum comentário:
Postar um comentário