locked
Dúvidas em validação de campos RRS feed

  • Pergunta

  •  

    Bom dia galera estou tentanto fazer com que um campo textbox além de só permitir a digitação de números  verificque tambem se esse número é maior ou menos que 2008.

     

    Se for Maior grava o valor normalmente na célula da tablea se não for quero que ele mostre a mensagem que o "o ano deve ser igual ou maior a  2008".

     

    tentei colocar dentro do Keypress mas percebi que não vai da certo porque cada ttelca que digito ela ja faz a chegagem.

     

    deem uma olhada no codigo

    Code Snippet

     

       Private Sub FY_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
          
           FyscalYear = FY
        If FiscalYear < 2008 Then
           MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
           End If
          
                 
      End Sub

     

     

    Obrigado,
    segunda-feira, 5 de maio de 2008 14:34

Respostas

  • Agora vai dar certo.....

     

    Code Snippet

    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

     

    Code Snippet

    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If Len(TextBox1) = 4 Then
            If TextBox1 < 2008 Then
                MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
            End If
        End If
    End Sub

     

     

    segunda-feira, 5 de maio de 2008 20:07

Todas as Respostas

  • 1. pode de fazer quando sair da caixa de texto

    2. confira o ano apenas qdo estiver tudo preenchido

    3. se está utilizando vb.net pode utilizar isnumeric()

    segunda-feira, 5 de maio de 2008 14:46
  • Macul,

     

    1. esta dizendo o evento exit?

    2. estou conferindo o ano no momento que ele é digitado , como poderia conferiar ele so depois de todos os campos preenchidos?

    3. estou utilizando VBA do Excel 2003.

     

    Obrigado pelas dicas de qualquer modo,

    segunda-feira, 5 de maio de 2008 15:02
  • Olá..

     

    Vê se isto resolve..

     

    Code Snippet

    Private Sub TextBox1_AfterUpdate()
        If CInt(TextBox1) <= Year(Date) Then
            MsgBox "Digite o ano maior ou igual a " & Year(Date), vbCritical, "Erro"
        End If
    End Sub

     

     

    Até..
    segunda-feira, 5 de maio de 2008 17:39
  •  

    Não da erro mas não funciona qual seria a funcionalidade do evento afterrupdate eu tenho o text box  dentro de um label ... eu digito o valor e o vba so funciona na checagem se é numero mesmo o que eu estou digitando.

    segunda-feira, 5 de maio de 2008 17:53
  •  

    Parecido com o exit, só que ele ocorre antes do exit....Significa Depois de Atualizar...

     

     

    Neste textbox sempre terá quatro dígitos??

    segunda-feira, 5 de maio de 2008 18:20
  • etendi mas nao funcionou rs

     

    r:exatamente

    segunda-feira, 5 de maio de 2008 18:31
  • Copiei seu código com a diferença que só vai comparar o valor quando o usuário digitar os quatro dígitos..

     

     

    Code Snippet

     Private Sub FY_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
          
           FiscalYear = FY

     

    If Len(FiscalYear)=4 then
        If FiscalYear < 2008 Then
           MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
        End If
     End If     
                  
      End Sub

     

     

    Até..
    segunda-feira, 5 de maio de 2008 18:48
  • Funciona , mas eu tenho que presssionar a barra de espaço toda hora que quero que ele valide a informação do campo...

     

    =/

    segunda-feira, 5 de maio de 2008 19:33
  • Agora vai dar certo.....

     

    Code Snippet

    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

     

    Code Snippet

    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If Len(TextBox1) = 4 Then
            If TextBox1 < 2008 Then
                MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
            End If
        End If
    End Sub

     

     

    segunda-feira, 5 de maio de 2008 20:07
  •  

    ok deu certo =) vlw

     

     

    posso abusar?? rs eu nao consigo fazer as coisas aqui

     

    e nem conheço vba rs

     

     

    seguinte to querendo fazer um campo que aceite "3 letras" -" 4numeros"

    tenho memso que fazer duas textbox?

     

    e como vou fazer a checagem de letras??

    terça-feira, 6 de maio de 2008 17:02
  • Dá pra fazer tudo em um textbox..

    Code Snippet

    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    TextBox1.MaxLength = 7
     If Len(TextBox1) > 2 Then
        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
     Else
        If KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Then
            Exit Sub
        End If

        If KeyAscii <= vbKey9 Then
            KeyAscii = 0
            MsgBox "Digite uma letra", vbCritical, "Erro"
        End If
    End If
    End Sub

     

     

    Não se esqueça de fechar o post..

    Até..

    terça-feira, 6 de maio de 2008 18:28