locked
Condicionar a utilização do teclado numérico numa textbox RRS feed

  • 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 If

    If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
        KeyAscii = 0
        MsgBox "Digite um número", vbCritical, "Erro"
    End If
    End Sub

    domingo, 3 de dezembro de 2006 23:35
    Moderador
  • 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 If

     

    Obrigado 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 If

    If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
        KeyAscii = 0
        MsgBox "Digite um número", vbCritical, "Erro"
    End If
    End Sub

    terça-feira, 5 de dezembro de 2006 00:28
    Moderador

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 If

    If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
        KeyAscii = 0
        MsgBox "Digite um número", vbCritical, "Erro"
    End If
    End Sub

    domingo, 3 de dezembro de 2006 23:35
    Moderador
  • 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 If

     

    Obrigado 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 If

    If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
        KeyAscii = 0
        MsgBox "Digite um número", vbCritical, "Erro"
    End If
    End Sub

    terça-feira, 5 de dezembro de 2006 00:28
    Moderador