Usuário com melhor resposta
Condicionar a utilização do teclado numérico numa textbox

Pergunta
-
Em Excel, utilizando para o efeito o editor do Visual Basic Userform, desejo condicionar a escrita numa determinada textbox aos caracteres numéricos, ou seja, sempre que pressiono uma tecla que não seja numérica para efectuar um registo de dados numa textbox, isso não seja possivel, editando uma mensagem.
Obrigado
Rui Barata
domingo, 3 de dezembro de 2006 13:39
Respostas
-
Oi Rui,
você pode usar o evento KeyPress da caixa de texto:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Then
Exit Sub
End IfIf KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End If
End Subdomingo, 3 de dezembro de 2006 23:35Moderador -
Muito bom dia Luís,
Já executei a expressão e corre às mil maravilhas.
Agradeço-te a ti em particular esta ajuda frutífera e a todos aqueles que porventura se tenham também debruçado sobre o assunto.
Um abraço a todos e.. como se escreve por aqui, “Ajudar é ser ajudado”.
Cumprimentos,
Rui Barata.
segunda-feira, 4 de dezembro de 2006 10:43 -
Muito bom dia Luíz (novamente).
Faltou explicitar na questão inicial que também queria utilizar o caracter (,) virgula ou (.) ponto.
Já tentei a constante KeyCode vbDecimal mas não resultou!
Fica assim mais uma pequena duvida.
Cumprimentos,
Rui Barata.
segunda-feira, 4 de dezembro de 2006 14:20 -
Solução arranjada pelo André Alves de Lima
If (KeyAscii < vbKey0 Or KeyAscii > vbKey9) and (KeyAscii <> 44) Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End IfObrigado a todos!
Rui Barata.
segunda-feira, 4 de dezembro de 2006 23:39 -
Basta incluir estes caracteres no primeiro If:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Or KeyAscii=44 Or KeyAscii=46 Then
Exit Sub
End IfIf KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End If
End Subterça-feira, 5 de dezembro de 2006 00:28Moderador
Todas as Respostas
-
Oi Rui,
você pode usar o evento KeyPress da caixa de texto:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Then
Exit Sub
End IfIf KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End If
End Subdomingo, 3 de dezembro de 2006 23:35Moderador -
Muito bom dia Luís,
Já executei a expressão e corre às mil maravilhas.
Agradeço-te a ti em particular esta ajuda frutífera e a todos aqueles que porventura se tenham também debruçado sobre o assunto.
Um abraço a todos e.. como se escreve por aqui, “Ajudar é ser ajudado”.
Cumprimentos,
Rui Barata.
segunda-feira, 4 de dezembro de 2006 10:43 -
Muito bom dia Luíz (novamente).
Faltou explicitar na questão inicial que também queria utilizar o caracter (,) virgula ou (.) ponto.
Já tentei a constante KeyCode vbDecimal mas não resultou!
Fica assim mais uma pequena duvida.
Cumprimentos,
Rui Barata.
segunda-feira, 4 de dezembro de 2006 14:20 -
Solução arranjada pelo André Alves de Lima
If (KeyAscii < vbKey0 Or KeyAscii > vbKey9) and (KeyAscii <> 44) Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End IfObrigado a todos!
Rui Barata.
segunda-feira, 4 de dezembro de 2006 23:39 -
Basta incluir estes caracteres no primeiro If:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Or KeyAscii=44 Or KeyAscii=46 Then
Exit Sub
End IfIf KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
MsgBox "Digite um número", vbCritical, "Erro"
End If
End Subterça-feira, 5 de dezembro de 2006 00:28Moderador