LIMITAR E VERIFICAR CARACTERES

DRHOUSE 09/09/2009 00:35:18
#322348
Olá amigos, estou com uma duvida e se possível me ajudar, ja tentei uma conbinação de codigos e não deu muito certo.

Em um campo com no maximo de determinados caracteres so poderá ter um x e a posição dele tem que ser o ultimo dos caracters digitados caso esteja no meio ou em primeiro dar como dados digitado invalido.

Exemplo:

0154484X = valido

x45411 = invalido ou qualquer posição sendo so aceito estando na ultima posição.

os caracters aceitos no campo são de 0 a 9 eo X.

Obrigado desde já.
ROBIU 09/09/2009 08:22:40
#322356
Resposta escolhida
Deixa a textbox aceitando somente numeros. quando perder o foco, você acrescenta a letra, quando receber o foco, você tira a letra.
Seria assim:
Private Sub Text1_GotFocus()
If Text1.Text = [Ô][Ô] Then Exit Sub
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub

Private Sub Text1_LostFocus()
Text1.Text = IIf(Text1.Text = [Ô][Ô], [Ô][Ô], Text1.Text & [Ô]X[Ô])
End Sub
TECLA 09/09/2009 09:04:37
#322360
Use o exemplo do ROBIU e acrescente a validação abaixo:

Private Sub Text1_Validate(Cancel As Boolean)
If InStr(1, UCase(Text1), [Ô]X[Ô]) <> Len(Text1) Then
MsgBox [Ô]Dados inválidos![Ô], , [Ô]Atenção[Ô]
Cancel = True
End If
End Sub
DRHOUSE 09/09/2009 12:20:33
#322389
Olá amigos obrigado pela ajuda, estou so com esta duvida logo abaixo se poder me ajudar.

Exemplo:

0154484x = valido [ô] Pode conter x somente no final não importa se x e maiuscula ou minuscula caso não esteja no final ou tenha mais de 1 x e campo invalido.

0154484 = valido [ô]O campo mesmo não contendo x e valido, somente aceita x e de 0 a 9 ou sem x.

x45411 = invalido [ô]O campo so e valido se o x estiver na ultima posição e se conter somente 1 x, sendo mais de 1 x o campo e invalido.

os caracters aceitos no campo são de 0 a 9 eo x.

Obrigado desde já.
JWCELYO 09/09/2009 12:38:13
#322391
ROBIU 09/09/2009 16:42:17
#322423
Acho que agora resolve:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 88 Or KeyAscii = 120 Then
If InStr(UCase(Text1.Text), [Ô]X[Ô]) Then KeyAscii = 0
ElseIf Not IsNumeric(Chr(KeyAscii)) Then
If KeyAscii <> 8 Then KeyAscii = 0
Else
If InStr(UCase(Text1.Text), [Ô]X[Ô]) > 0 Then KeyAscii = 0
End If
End Sub
Tópico encerrado , respostas não são mais permitidas