E ai está! Sim, ela! A janela de Verificação Imediata, um recurso quase tão indispensável como ar. Ok, exagerei. Mas se você é programador VBA, deve saber do que estou falando.
Muito brevemente, a Janela de Verificação Imediata é o que chamamos de REPL (Read-eval-print-loop), ou, em poucas palavras, um espaço interativo para execução de código. Se você já trabalha com Windows há algum tempo, com certeza deve conhecer o promp do DOS (aquela janela preta feia para digitar comandos):
Pois é, aqui é um REPL, ou um prompt, como falantes da língua inglesa gostam de chamar. Não uma tradução boa para este termo em português, que deve querer dizer algo como “pronto” ou “imediato”. De fato ele merece esse adjetivo pois é um espaço pronto para receber comandos e dar uma resposta imediata:
É literalmente um bate-e-pronto. Tendo dito isso, voltemos ao assunto principal. E se você está se perguntando, sim, a Janela de Verificação Imediata é um REPL, ou prompt, só que neste caso, um prompt dedicado ao VBA e com muitos benefícios!
Ao longo deste texto, mostrarei como usar o recurso e alguns exemplos. Depois disso, acredito que as capacidades da Janela de Verificação Imediata ficarão mais do que claras.
Onde está a Janela de Verificação Imediata?
Você só consegue ver/ativar/usar a Janela de Verificação Imediata a partir do VBA. No Excel/Word/PowerPoint/Access, abra o VBA (Alt+F11). Procure o menu Exibir->Janela de Verificação Imediata:
Já deverá ser possível vê-la no seu VBA:
E é aqui que a brincadeira começa! Já é possível disparar comandos nessa “mágica tela branca”. Mas vamos aos poucos. Ao exemplos!
😉
Como funciona?
Basta escrever algo nele. É claro, o que a Janela de Verificação Imediata espera é um código VBA válido. Qualquer coisa que não o seja, vai gerar um erro. Por exemplo:
Nem o VBA e nem a Janela de Verificação Imediata sabem o que é “Oi”. O que dá pra fazer então?
Vamos chamar uma função conhecida, o MsgBox! Veja o exemplo abaixo:
Notem que ao digitar o nome da função MsgBox, a Janela de Verificação Imediata se comporta como o editor do VBA. Logo depois, é clicar em enter e ver o MsgBox funcionando:
É possível inclusive chamar suas macros, pelo nome, claro.
É o uso mais básico. Antes de começar de fato, a Janela de Verificação Imediata possui alguns macetes. Quando chamamos o MsgBox, ele tem uma ação a executar por si, que é mostrar uma caixa de diálogo. Mas, se chamar outra função, por exemplo, o calculo de uma planilha, o que acontece é o seguinte:
Nada? Pois é, o comando foi executado com sucesso e sem erros, mas não houve retorno. Quando não há retorno, é assim mesmo que acontece. Quando queremos um retorno e saber algum valor, como faço?
O código abaixo tenta obter a quantidade de planilhas contidas no arquivo atual:
ThisWorkbook.Worksheets.Count
Mas ao tentar executar na Janela de Verificação Imediata, o resultado é o seguinte:
Como então para fazer o comando funcionar? O segredo está no “?”. Sim, esse cara faz com que o retorno ou resultado da função seja colocado como texto na Janela de Verificação Imediata. Ao executar o mando agora:
Agora sim temos um prompt interativo! Tudo pode ser feito aqui, desde que seja um comando válido e em uma linha.
Obtendo informações do seu arquivo
Ok, agora a brincadeira começa. Vimos que podemos executar ações e obter dados. Alguns exemplos pode ser vistos abaixo:
O caminho do arquivo:
?ThisWorkbook.FullName
O nome da planilha atual:
?ActiveSheet.Name
O valor da célula atual:
?ActiveCell.Value
Abaixo os comandos executados e seus resultados:
Dica: você pode a qualquer momento limpar o conteúdo da janela para limpá-la
Executar ações
Já vimos que é possível obter informações facilmente. Mas não é só isso que podemos fazer. É possível executar ações como atribuir valores a células, formatar, etc. Tudo o que está disponível no VBA está disponível aqui também! Vejamos o código abaixo:
Primeiro, contou-se a quantidade de planilhas no arquivo, que no caso, era 1. Depois, utilizou-se a função Add da propriedade Worksheets para adicionar uma nova planilha. Em seguida, contou-se novamente para ter certeza do resultado.
Qualquer outra coisa poderia ser feita aqui. Agora, um brincadeira rápida. Experimente o comando:
Application.Visible = False
Tente descobrir o que aconteceu com a janela do Excel. 😉
Executando Macros
Era mais do que esperado. Chamar uma macro da Janela de Verificação Imediata é tão simples quanto digitar seu nome:
Macro1
E é só! Como uma macro gravada não pede parâmetros, nada mais precisa ser mencionado. Caso houvesse, o resultado seria o da janela abaixo:
Os argumentos da macro pode ser vistos na própria chamada. Agora, a macro executada:
O Debug.Print
Esse eu uso, e muito! A Janela de Verificação Imediata não é só um lugar para entrada de dados. Também serve para saída. Você pode escrever nela utilizando a função Debug.Print. Fecha o exemplo o código abaixo:
Sub NomesDasPlanilhas() For Each plan In ThisWorkbook.Worksheets Debug.Print plan.Name Next plan End Sub
E o código executado fica da seguinte forma:
O For Each passa por todas as planilhas do arquivo e escreve o nome de cada uma delas na Janela de Verificação Imediata. É um lugar muito mais limpo para fazer checagem de dados, sem precisar de MsgBox ou sujar alguma planilha com dados.
Você pode escrever qualquer coisa na Janela de Verificação Imediata, desde que seja texto, claro.
Usando na Depuração
Costuma depurar seu código VBA? Ótimo! A Janela Verificação Imediata também está lá para lhe ajudar. Vamos o usar o código anterior para brincar um pouco. Vou aplicar um ponto de interrupção na linha do Debug.Print para ver como a Janela Verificação Imediata pode ajudar:
Chamei a função DigaOi com o ponto de interrupção marcado. Quanto o código pára nesse ponto, já possível fazer algumas verificações, como o valor das variáveis, e mudá-las inclusive:
For fim, deixo a macro terminar o trabalho:
Conclusão
Bem, se você chegou até aqui, espero, espero que os exemplos colocados tenha sido o suficiente para demonstrar para do poder da Janela de Verificação Imediata. É uma ferramenta quase indispensável para que começa a se aprofundar nos aplicativos em VBA.
Claro, se tiver algo que tenha esquecido de mencionar, é só colocar nos comentários.
Bom proveito!