Já vimos a utilização da função MsgBox na criação de códigos VBA.
Embora seja útil um MsgBox não se presta, por exemplo, para informar valores como números ou células como informações para a execução de um código.
Um recurso útil para esta finalidade é o método InputBox
Sintaxe: Application.InputBox(Prompt,[Title],[Default],[Left],[Top],
[HelpFile],[HelpContextID],[Type])
À exceção de Prompt, todos os demais argumentos a seguir são opcionais
-
Prompt: Mensagem a ser exibida na caixa de diálogo;
-
Title: Título da caixa de entrada;
-
Default: Valor padrão com que a caixa será exibida;
-
Left: Posição em pixels em relação à esquerda da tela;
-
Top:
Posição em pixels em relação ao topo da tela;
-
HelpFile: Nome do arquivo de ajuda para esta caixa;
-
HelpContextID: Identificação no contexto de ajuda em HelpFile;
-
Type: Especifica o tipo de valor a ser retornado pela caixa de entrada.
Valores possíveis para Type:
Valor | Significado |
0 | Uma fórmula |
1 | Um número |
2 | Texto (uma seqüência) |
4 | Um valor lógico (True ou False) |
8 | Uma referência a células, como um objeto Range |
16 | Um valor de erro, como #N/D |
64 | Uma matriz de valores |
OBS: Se forem possíveis entradas de mais de um tipo, Type deve ter o valor equivalente à sua soma. Se, por, exemplo, for possível digitar um número ou uma referência de célula, Type deve ser informada com o valor 9 (1 + 8).
Vamos a alguns exemplos de código e as respectivas exibições de InputBox.
Ex1. É exibido o InputBox e em seguida uma MsgBox informado o valor que foi digitado:
Sub Exemplo_InputBox01() Valor = Application.InputBox("Informe um valor", "Entrada de dados") If Valor = "" Then Mensagem = "Não foi informado nenhum valor" Else Mensagem = "O valor informado foi " & Valor End If Msg = MsgBox(Mensagem, vbOKOnly + vbInformation, "Informação") End Sub
Ex2. É solicitado que seja selecionada uma célula da planilha.
Sub Exemplo_InputBox02() Exibir = "Selecione a célula de destino" Título = "Célula para entrada de dados" Tipo = 8 Set rg = Application.InputBox(Prompt:=Exibir, Title:=Título, Type:=Tipo) rg.Value = "Esta foi a célula selecionada" End Sub
Comentário: Neste caso é possível digitar o endereço de célula diretamente no InputBox ou selecionar a célula digitada diretamente na planilha
Ex3. É solicitado um texto para que seja realizada a contagem de seus caracteres.
Sub Exemplo_InputBox3() Exibir = "Informe o texto a ser analisado" Título = "Contagem de caracteres" Tipo = 10 Valor = Application.InputBox(Prompt:=Exibir, Title:=Título, Type:=Tipo) Select Case Valor Case "" Mensagem = "Nenhum caractere." Case False Mensagem = "Não foi informado um valor" Case Else Mensagem = "O texto informado possui " & Len(Valor) & " caracteres." End Select Msg = MsgBox(Mensagem, vbOKOnly + vbInformation, "Informação") End Sub
Comentário: Neste caso, o valor informado pode ser um texto diretamente digitado (Type=2) no InputBox ou uma célula selecionada contendo texto (Type=8). Observe também que é testado o conteúdo informado, antes de aplicar-se a função Len, para evitar a ocorrência de erro e determinar que tipo de mensagem será exibida.
Informação: Caso seja digitado um valor do tipo incorreto em um InputBox, será exibida uma mensagem esta abaixo, e após pressionar Ok, o usuário será novamente direcionado para o InputBox.
Adilson, como criar um botão que ao clicar nele execute uma fórmula?
Não entendi, Marconi…
Você quer inserir uma fórmula numa célula?
isso que estou precisando, inserir uma formula quando o valor é selecionado, como por exemplo uma procv, sendo que o valor selecionado retorna uma resposta
Amigos, preciso descobrir como aumentar o tamanho da janela/balão que mostra a Mensagem de Entrada, quando a célula é clicada. Criei uma mensagem com instruções as quais quero mostrar ao usuário, quando ele for preencher a célula. Mas a mensagem aparece incompleta, então gostaria de aumentar o tamanho da janela, mas não sei como. Agradeço a ajuda.
tem como alterar o layout da caixa de dialogo?
Olá, meu caro.
Se quiser algo muito diferente terá que utilizar um Userform (formulário). Nesse caso poderá controlar tamanho, elementos, etc.
Abs