Cavalcante Consultores – treinamento e consultoria em finanças e Excel

Forçando o tipo de entrada com o Apllication.InputBox

Cavalcante Consultores > Biblioteca de Excel > Forçando o tipo de entrada com o Apllication.InputBox

Vimos em um artigo anterior que a função InputBox pode (e deve) ser utilizada para facilitar e otimizar a entrada de dados para o usuário.

Com ela, é possível mostrar uma caixa de diálogo disponibiliza uma caixa de texto para entrada de dados pelo usuário. Isso além de facilitar, permite que os desenvolvedores de planilhas possam personalizar e orientar os usuários de maneira rápida.

O código de exemplo utilizado foi algo parecido com isto:

O código acima já prevê algumas validações e a garantia de que algum valor será inserido pelo usuário.

A única restrição desta função é que, se o usuário informar um valor de texto qualquer na caixa de texto, por exemplo, "Excel", o seguinte erro será gerado:

O erro "Tipos incompatíveis" ocorre porque a função CDbl() não consegue converter o valor da variável cotacao. É possível contornar este problema com algumas funções do VBA, mas estas envolveriam mais codificação e verificações adicionais com estruturas como If...Else...End If e outras.

Não seria ideal que a própria caixa de diálogo conseguisse validar o tipo da entrada que o usuário deveria informar? Pois é isto que o método (método e não função) Application.InputBox procura resolver. Uma explicação completa sobre o funcionamento e a diferenças entre a função InputBox e o método Application.InputBox pode ser vista neste link.

Para resolver então o problema do código acima, usaremos o Application.InputBox forçando o tipo de dado para um valor numérico, neste caso, passamos o valor 1 para o parâmetro Type, conforme o código abaixo:

Execute o procedimento clicando em F5 ou fechando a planilha e abrindo-a novamente (lembre-se de ativar as macros). Veja o resultado:

Entre com um valor de texto qualquer, por exemplo, "Excel" e clique em OK para ver o resultado:

O Excel por si próprio fez através do método Application.InputBox a validação da entrada feita pelo usuário. Tente agora informar algum valor numérico, por exemplo, 2007 e veja o resultado:

O que mudou no código que faz com que este seja mais claro? Veja que na linha 2, o tipo de dado declarada para a variável cotacao foi Double, e não String. Na linha 6, como o tupo já é numérico, não é necessário forçar a conversão com a função CDbl().

Tente executar o procedimento novamente, mas ao invés de clicar em Ok, clique em Cancelar. O valor colocado na célula A1 é zero, portanto, o método InputBox respeita o tipo de dado mesmo que o valor não seja informado. Para forçar o usuário a informar o valor, bastaria promover a seguinte mudança no código:

Conclusão

Em ocasiões em que a necessidade de validar o tipo da entrada feita pelo usuário, é aconselhávelo uso do método Application.InputBox, sem ter a necessidade e efetua validações ,conversões e verificações adicionais no código, tornando este tipo de trabalho muito mais produtivo. O mesmo pode ser feito para validar outros tipos de dados como Data, Fórmulas, valores lógicos, e outros como pode ser visto neste link.