VBA – O que é e como utilizar a (brilhante!) Janela de Verificação Imediata

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):

Prompt do DOS
Prompt do DOS

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:

Comando aplicado, resposta imediata
Comando aplicado, 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:

Ativando a Janela de Verificação Imediata
Ativando a Janela de Verificação Imediata

Já deverá ser possível vê-la no seu VBA:

Janela de Verificação Imediata Ativada
Janela de Verificação Imediata Ativada

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:

Um erro na Janela de Verificação Imediata
Um erro na Janela de Verificação Imediata

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:

A Janela de Verificação Imediata dando uma mãozinha
A Janela de Verificação Imediata dando uma mãozinha

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:

O MsbBox funcionando na Janela de Verificação Imediata
O MsgBox funcionando na Janela de Verificação Imediata

É 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:

Chamando a função sem retorno
Chamando a função sem retorno…. e?

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:

Uso inválido da propriedade
Uso inválido da propriedade

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:

Obtendo o resultado de uma função na janela de verificação imediata
Obtendo o resultado de uma função na janela de verificação imediata

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:

Comandos executados na janela de verificação imediata
Comandos executados na janela de verificação imediata

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:

Adicionando uma planilha pela janela de verificação imediata
Adicionando uma planilha pela janela de verificação imediata

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:

Chamando uma macro na Janela de Verificação Imediata
Chamando uma macro na Janela de Verificação Imediata

Os argumentos da macro pode ser vistos na própria chamada. Agora, a macro executada:

Macro executada a partir da Janela de Verificação Imediata
Macro executada a partir da Janela de Verificação Imediata

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:

Usando o Debug.Print
Usando o Debug.Print

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:

Aplicando o breakpoint
Aplicando o breakpoint

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:

Alterando o valor em Debug na Janela de Verificação Imediata
Alterando o valor em Debug na Janela de Verificação Imediata

For fim, deixo a macro terminar o trabalho:

A macro terminando de executar com o valor alterado
A macro terminando de executar com o valor alterado

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!

Comentários

comentários