Arquivo da tag: Application.InputBox

VBA – A diferenças entre InputBox e Application.InputBox

Introdução

O VBA disponibiliza além da tradicional função InputBox, um método de nome Application.InputBox. A principal questão é, já que existem duas, qual se deve utilizar?

A principal diferenção entre elas é que, a função InputBox é uma maneira simples de capturar textos introduzidos pelo usuário. Já o método Application.InputBox é capaz de verificar automaticamente o tipo de dados que deve ser inserido na caixa de texto do caixa de diálogo mostrada.

Estrutura do Application.InputBox

Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)

Prompt

String necessário. A mensagem a ser exibida na caixa de diálogo. Pode ser uma seqüência de caracteres, um número, uma data ou um valor Boolean (o Microsoft Excel converte o valor automaticamente em um String antes de exibi-lo).

Title

Variant opcional. O título da caixa de entrada. Se esse argumento for omitido, o título padrão será “Entrada”.

Default

Variant opcional. Especifica um valor que aparecerá na caixa de texto quando a caixa de diálogo for inicialmente exibida. Se esse argumento for omitido, a caixa de texto será deixada vazia. Esse valor pode ser um objeto Range.

Left

Variant opcional. Especifica uma posição x para a caixa de diálogo em relação ao canto superior esquerdo da tela, em pontos.

Top

Variant opcional. Especifica uma posição y para a caixa de diálogo em relação ao canto superior esquerdo da tela, em pontos.

Help File

Variant opcional. O nome do arquivo de ajuda para essa caixa de entrada. Se os argumentos HelpFile e HelpContextID estiverem presentes, um botão Ajuda aparecerá na caixa de diálogo.

Help ContextId

Variant opcional. O número de identificação do contexto do tópico da Ajuda em HelpFile.

Type

Variant opcional. Especifica o tipo de dados retornado. Se esse argumento for omitido, a caixa de diálogo retornará texto. Pode ser um dos valores abaixo ou a soma deles.

clip_a04[1]

Exemplo

Note que a única diferença desta para a função InputBox, é a existência do último parâmetro, o Type. É este que permite fazer validações de tipos simples do VBA para retorno da função. Veja o código de exemplo:

1
2
3
4
5
Public Sub TesteAppInputBox()
Dim num As Long
num = Application.InputBox("Digite um valor numérico", "Application.InputBox", "Valor numérico", , , , , 1)
MsgBox "O valor digitado foi: " & num
End Sub

No código, os parâmetros Left, Top, HelpFile e HelpContextId foram omitidos por não serem necessários para este exemplo. O importante neste código é o parâmetro Type que foi informado. Conforme a tabela, o valor 1 significa que o Application.InputBox espera que um valor numérico seja inserido pelo usuário. Execute a função e veja o resultado:

clip_d76[1]

Informe um valor de texto qualquer na caixa de entrada e clique em OK para ver o resultado:

clip_28a[1]

Veja que não necessário nenhuma verificação via código VBA. O Applcation.InputBox somente precisa da informação sobre o tipo de dado que deve ser esperado pelo usuário. Informe um valor numérico qualquer e clique novamente em OK:

clip_0e6[1]

Você pode usar a soma dos valores permitidos para Type. Por exemplo, para uma caixa de entrada que possa aceitar tanto texto como números, defina o parâmtro Type como 1 + 2.

Comentários

Use InputBox para exibir uma caixa de diálogo simples para que você possa inserir informações a serem usadas em uma macro. A caixa de diálogo tem um botão OK e um botão Cancelar. Quando você escolhe o botão OK, InputBox retorna o valor inserido na caixa de diálogo. Quando você clica no botão Cancelar, InputBox retorna False.

Quando Type é 0, InputBox retorna a fórmula na forma de texto — por exemplo, “=2*PI()/360”. Se houver quaisquer referências na fórmula, elas serão retornadas como referências de estilo A1. (Use ConvertFormula para fazer a conversão entre estilos de referências).

Quando Type é 8, InputBox retorna um objeto Range. Você precisa usar a instrução Set para atribuir o resultado a um objeto Range, como mostrado no exemplo seguinte.

1
Set meuRange = Application.InputBox(prompt := "Exemplo", type := 8)

Se você não usar a instrução Set, a variável será definida com o valor no intervalo em vez do próprio objeto Range.

Se você usar o método InputBox para pedir uma fórmula ao usuário, você terá que usar a propriedade FormulaLocal para atribuir a fórmula a um objeto Range. A fórmula de entrada deverá estar no idioma do usuário.

O método InputBox difere da função InputBox porque permite validação seletiva da entrada do usuário e aceita objetos, valores de erro e fórmulas do Microsoft Excel. Observe que Application.InputBox chama o método InputBox e InputBox sem qualificador de objeto chama a função InputBox.