Usuário com melhor resposta
Dúvidas em validação de campos

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 SnippetPrivate Sub FY_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
FyscalYear = FY
If FiscalYear < 2008 Then
MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
End If
End Subsegunda-feira, 5 de maio de 2008 14:34
Respostas
-
Agora vai dar certo.....
Code SnippetPrivate 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 SubCode SnippetPrivate 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 Subsegunda-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 SnippetPrivate Sub TextBox1_AfterUpdate()
If CInt(TextBox1) <= Year(Date) Then
MsgBox "Digite o ano maior ou igual a " & Year(Date), vbCritical, "Erro"
End If
End Subsegunda-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 SnippetPrivate Sub FY_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
FiscalYear = FYIf Len(FiscalYear)=4 then
If FiscalYear < 2008 Then
MsgBox "Digite o ano maior ou igual a 2008", vbCritical, "Erro"
End If
End If
End Subsegunda-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 SnippetPrivate 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 SubCode SnippetPrivate 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 Subsegunda-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 SnippetPrivate 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 IfIf KeyAscii <= vbKey9 Then
KeyAscii = 0
MsgBox "Digite uma letra", vbCritical, "Erro"
End If
End If
End SubNão se esqueça de fechar o post..
Até..
terça-feira, 6 de maio de 2008 18:28