Como Usar Caixa de Texto para Ler Dados – Excel VBA InputBox

VBA InputBox como recurso para leitura de dados inseridos pelo usuário

O objeto Application.InputBox no VBA Excel cria uma caixa de diálogo para obter respostas do usuário. Entretanto, o tipo de resposta pode ser especificado. Isso inclui números, sequências, datas e intervalos.

Caso deseje obter uma única parte do texto, é possível usar o objeto InputBox, que solicita um nome ao usuário e grava sua resposta na janela imediata (Ctrl + G para visualizar).

Vamos começar com um exemplo:

Resultado:

Teste o código você mesmo:

' https://engenheiradoexcel.com/
Sub Obter_Valor()
Dim nome As String
nome = Application.InputBox("Por favor, digite seu nome: ")
Debug.Print nome

End Sub
Confusamente, existem duas caixas de entrada no Excel VBA, que são:
  1. Application.InputBox
  2. InputBox (também chamado de VBA.InputBox)

Elas são quase iguais, exceto que:

  • A Application.InputBox permite especificar o tipo de resultado da variável, por exemplo String, número inteiro, data, intervalo.
  • Os parâmetros Application.InputBox Left e Top não são usados pelo VBA.

No exemplo abaixo, o Application.InputBox permite especificar o tipo, mas o VBA.InputBox não. Observe:

Neste artigo em geral, vamos tratar em especial o objeto Application.InputBox.

Sintaxe do objeto InputBox

InputBox (prompt, title [opcional], default [opcional], left [opcional], top [opcional], helpfile [opcional], helpfilecontextidl [opcional], type [opcional])

Parâmetros InputBox

  • prompt – é o texto exibido pelo objeto InputBox. Por exemplo “Digite um número de 1 a 10” ou “Selecione um intervalo”.
  • title [opcional] – é o texto exibido na barra de título do objeto InputBox.
  • default [opcional] – será a resposta se nada for inserido pelo usuário.
  • left [opcional] – não utilizado. Se precisar posicionar o objeto InputBox, precisará usar o VBA.InputBox.
  • top [opcional] – não utilizado. Se você precisar posicionar o InputBox, precisará usar o VBA.InputBox.
  • helpfile [opcional] – especifica um arquivo de ajuda relacionado se o seu aplicativo tiver um (dica: provavelmente não existe, a menos que seja um aplicativo herdado).
  • helpfilecontextidl [opcional] – especifica uma posição no arquivo de ajuda.
  • type [opcional] – especifica o tipo de valor que será retornado. Se este parâmetro não for usado, o tipo de retorno será texto. Veja abaixo uma lista de opções para este parâmetro.

O que simplifica o uso do InputBox é uso de apenas 4 desses parâmetros, como:

  • Prompt
  • Title
  • Default
  • Type.

Parâmetros opcionais do VBA

Como visto na seção acima, o VBA possui muitos parâmetros opcionais. Às vezes, queremos usar um parâmetro opcional, sem que seja necessário inserir outros parametros a esquerda do código, além dos já utilizados para que o programa funcione.

Podemos lidar com isso de duas maneiras:

  1. Deixe os outros parâmetros opcionais em branco.
  2. Use o nome do parâmetro.

Aqui temos os exemplos de cada um desses métodos:

Note que, nomear os parâmetros é a melhor opção porque torna o código muito mais legível e compreensível.

Parâmetro Title

O parâmetro Title simplesmente permite ao usuário visualizar o título da caixa de diálogo InputBox.

Os exemplos a seguir mostram isso:

Como resultado temos:

Abaixo temos o código utilizado acima. Teste você mesmo:

Sub Exemplo_Parametro_Titulo()
Dim ano As Long
ano = Application.InputBox("Digite o ano: ", Title:="Relatório do cliente")
End Sub

Parâmetro Default

O valor padrão Default é simplesmente o valor que será retornado se o usuário não inserir o valor left. Este valor é exibido na caixa de entrada InputBox.

Quando o código a seguir é executado, o valor “Maçã” é exibido. Observe:

Resultado:

Código:

Sub Exemplo_Parametro_Default()
Dim fruit As Long
fruta = Application.InputBox("Por favor digite uma fruta: ", Default:="Maçã")
End Sub

Parâmetro Type

Temos aqui, uma tabela com as opções de parâmetros Type da caixa de entrada InputBox:

 
 Valor Tipo (opções de parâmetros Type)
0Fórmula (Formula)
1Número (Number)
2String
4Boleano (Boolean)
8Intervalo (Range)
16Valor de erro como #N/A
64Matriz de valores

Você pode criar sua própria constante para o parâmetro Type se deseja ter um código mais legível:

Portanto, podemos usa-lo assim:

Como resultado temos:

Código utilizado:

Sub Exemplo_Parametro_Type()
Dim ano As Long
ano = Application.InputBox("Digite o ano: ", Type:=IBNumber)
ano = Application.InputBox("Digite o ano: ", Type:=IBString)
End Sub

Como obter um intervalo

Para obter um intervalo do usuário, definimos o parâmetro Type como 8.

Se definirmos a variável de retorno como um intervalo, devemos usar a palavra-chave Set, como neste exemplo:

Caso deixe de fora a palavra-chave Set, o VBA informará o erro de tempo de execução 91: “variável de objeto ou com bloco não definido”.

É possível declarar variavel como uma variante no VBA. Isso significa que, o VBA definirá o parametro Type. Observe:

Se a palavra-chave Set for substituida por uma variante, o InputBox retornará uma matriz de valores em vez do objeto range:

Como cancelar o intervalo

Um problema que ocorre ao selecionar o intervalo é que, se o usuário clicar em cancelar, o VBA emitirá um erro.

Não há uma maneira legal de contornar isso. Temos que desativar os erros e verificar o valor de retorno. Podemos fazer assim:

O código utilizado é:

' https://engenheiradoexcel.com/
Sub Uso_do_InputBox()
Dim rg As Range

' Desativar erros
On Error Resume Next

Set rg = Application.InputBox("Por favor, digite o intervalo: ", Type:=8)

' Ativar erros
On Error GoTo 0

' Exibir o resultado
If rg Is Nothing Then
MsgBox "O intervalo foi cancelado"
Else
MsgBox "O intervalo selecionado é: " & rg.Address
End If
End Sub

Conclusão

Neste artigo vimos como inserir uma caixa de entrada InputBox no VBA.

Recomendo fortemente que você tome coragem de repetir todo o passo-a-passo. Eu penso que praticar é a melhor maneira de aprender e, embora pareça simples, é preciso se acostumar a navegar entre as telas para que no futuro você possa se tornar um usuário avançado.

Eu sei que não é comum ler um artigo deste, como tutorial, e repetir para aprender, mas recomendo fortemente que você tome coragem de repetir todo o passo-a-passo. Desenvolva seu próprio método, veja o que te ajuda, implemente-o para se tornar fluente na ferramenta Excel VBA.

O site deste pessoal aqui foi referência para este artigo. O site é muitoooo bacana com várias dicas legais de programação, mas infelizmente o conteúdo está em inglês, o que não deixa de ser uma boa referência para quem conseguir acompanhar. Eu recomendo.

Por fim, termino aqui este artigo, mas deixo linkado abaixo, outros conteudos relacionados a VBA para que você fique ligado! Até a próxima.

Como Automatizar Planilha com VBA no Excel com EXEMPLOS

Como Criar Macro no Excel – A FORMA MAIS FÁCIL

Como Declarar Variáveis no VBA

Como Ler e Escrever em Células – Automatize sua planilha já

Como Selecionar Célula de Outra Planilha com VBA no Excel

Como Comentar Código no VBA Excel – Uma ou mais linhas

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *