Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/04/2009 08:01 hs
Private Sub TxtLc2_KeyPress(KeyAscii As Integer) If Len(TxtLc2.Text) = 2 Then If IsNumeric(TxtLc2.Text) Then TxtLc2.Text = TxtLc2.Text + "-" Else TxtLc2.Text = TxtLc2.Text + " " End If TxtLc2.SelStart = Len(TxtLc2.Text) End If KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub
O código acima para um determinado TextBox faz o seguinte:
insere automaticamente o caracter (-) ex.:
22-2 CX-3
O problema é se eu preciso usar o backspace ele trava da direita para esquerda no tecerceiro caracter, ou seja, no 2 ou no X. Como posso melhorar esse código?
|
|
|
|
|
Postada em 15/04/2009 10:01 hs
Bom dia.
Tente o seguinte:
Private Sub TxtLc2_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyBack Then KeyAscii = 0 Exit Sub End If
If Len(TxtLc2.Text) = 2 Then If IsNumeric(TxtLc2.Text) Then TxtLc2.Text = TxtLc2.Text + "-" Else TxtLc2.Text = TxtLc2.Text + " " End If TxtLc2.SelStart = Len(TxtLc2.Text) End If
KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub
Até mais!
|
|
|
Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 15/04/2009 13:10 hs
DeFreitas, não deu! Sua sugestão travou completamente o backspace, não era para travar.
Como adapto a função abaixo para aceitar numericos e somente as letras C e X? A mesma não da problema com backspace porem é somente para numerico.
Function Campo(obj As Object, Keyasc As Integer) If Not ((Keyasc >= Asc("0") And _ Keyasc <= Asc("9")) Or Keyasc = 8) Then Keyasc = 0 Exit Function End If If Keyasc <> 8 Then If Len(obj.Text) = 2 Then obj.Text = obj.Text + "-" obj.SelStart = Len(obj.Text) End If End If End Function
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/04/2009 14:37 hs
Assim colega Function Campo(obj As Object, Keyasc As Integer) If Not ((Keyasc >= Asc("0") And _ Keyasc <= Asc("9") Or Keyasc = 8) Or _ (Keyasc = Asc("C") Or Keyasc = Asc("c")) Or _ (Keyasc = Asc("X") Or Keyasc = Asc("x"))) Then Keyasc = 0 Exit Function End If If Keyasc <> 8 Then If Len(obj.Text) = 2 Then obj.Text = obj.Text + "-" obj.SelStart = Len(obj.Text) End If End If End Function
|
|
|
|
Postada em 15/04/2009 14:37 hs
Boa tarde.
Amigo,
A pressa me impede de tentar outras dicas, mas veja se esse código é útil a você:
'--- Permite digitar apenas números e as letras "C" e "X" --- Private Sub Text1_KeyPress(KeyAscii As Integer) If (InStr(1, "0123456789" & Chr(vbKeyC) & Chr(vbKeyX) & Chr(vbKeyBack), Chr(KeyAscii)) = 0) Then KeyAscii = 0 End If End Sub
Falou!
|
|
|
Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 15/04/2009 16:52 hs
Marcelo, deFreitas, valeu!!! Adaptei e ficou perfeito.
|
|
|