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:
- Application.InputBox
- 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:
- Deixe os outros parâmetros opcionais em branco.
- 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) |
---|---|
0 | Fórmula (Formula) |
1 | Número (Number) |
2 | String |
4 | Boleano (Boolean) |
8 | Intervalo (Range) |
16 | Valor de erro como #N/A |
64 | Matriz 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á