Usuário com melhor resposta
TextBox utilizando letras e números

Pergunta
-
Olá pessoal,
Mais uma vez lanço uma pergunta: É possivel em um textbox formatar os caractéres para inserir limitadamente 3 letras um hífen automático "-" e limitar o final em 4 números?
Ex.: Placa da veículos (VBA-2012) <- com a separação do hífen automática.
Usei este código porém só faz referência a números, é possível?
Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Limita a Qde de caracteres
TextBox1.MaxLength = 8
Select Case KeyAscii
Case 8, 48 To 57 ' BackSpace e numericos
If Len(TextBox1) = 3 Or Len(TextBox1) = 4 ThenTextBox1.Text = TextBox1.Text & "-"
SendKeys "{End}", False
End If
Case Else ' o resto é travado
KeyAscii = 0
End Select
End Sub
- Editado alexhsantos quinta-feira, 17 de maio de 2012 21:35
Respostas
-
Crie um formulário com um TextBox chamado TextBox1 e cole o código abaixo na classe do formulário:
Private Sub TextBox1_Change() Dim sTemp As String Static blEmMudança As Boolean If blEmMudança = True Then Exit Sub blEmMudança = True sTemp = TextBox1 sTemp = Replace(sTemp, "-", vbNullString) 'Limita o TextBox a 7 caracteres, fora o hífen sTemp = Left(sTemp, 7) 'Construção da máscara. Talvez fique mais interessante se for feita com o uso de IFs Select Case Len(sTemp) Case Is <= 3 Case Else sTemp = Left(sTemp, 3) & "-" & Mid(sTemp, 4) End Select 'Atribui-se ao controle o valor da máscara com a devida formatação: TextBox1 = sTemp 'Essa rotina poderá ser chamada de novo, já que o código findou. blEmMudança = False End Sub Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Asc("A") To Asc("Z"), Asc("a") To Asc("z") If Len(TextBox1) >= 3 Then MsgBox "Favor inserir apenas números!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Asc("0") To Asc("9") If Len(TextBox1) < 3 Then MsgBox "Favor inserir apenas letras!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Else MsgBox "Favor inserir apenas letras ou números!", vbCritical, "Erro de validação" KeyAscii = 0 End Select End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta alexhsantos sexta-feira, 18 de maio de 2012 12:02
Todas as Respostas
-
Crie um formulário com um TextBox chamado TextBox1 e cole o código abaixo na classe do formulário:
Private Sub TextBox1_Change() Dim sTemp As String Static blEmMudança As Boolean If blEmMudança = True Then Exit Sub blEmMudança = True sTemp = TextBox1 sTemp = Replace(sTemp, "-", vbNullString) 'Limita o TextBox a 7 caracteres, fora o hífen sTemp = Left(sTemp, 7) 'Construção da máscara. Talvez fique mais interessante se for feita com o uso de IFs Select Case Len(sTemp) Case Is <= 3 Case Else sTemp = Left(sTemp, 3) & "-" & Mid(sTemp, 4) End Select 'Atribui-se ao controle o valor da máscara com a devida formatação: TextBox1 = sTemp 'Essa rotina poderá ser chamada de novo, já que o código findou. blEmMudança = False End Sub Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Asc("A") To Asc("Z"), Asc("a") To Asc("z") If Len(TextBox1) >= 3 Then MsgBox "Favor inserir apenas números!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Asc("0") To Asc("9") If Len(TextBox1) < 3 Then MsgBox "Favor inserir apenas letras!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Else MsgBox "Favor inserir apenas letras ou números!", vbCritical, "Erro de validação" KeyAscii = 0 End Select End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta alexhsantos sexta-feira, 18 de maio de 2012 12:02
-
Veja mais em: http://www.ambienteoffice.com.br/officevba/mascara_para_campos_num_formulario/
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Crie um formulário com um TextBox chamado TextBox1 e cole o código abaixo na classe do formulário:
Private Sub TextBox1_Change() Dim sTemp As String Static blEmMudança As Boolean If blEmMudança = True Then Exit Sub blEmMudança = True sTemp = TextBox1 sTemp = Replace(sTemp, "-", vbNullString) 'Limita o TextBox a 7 caracteres, fora o hífen sTemp = Left(sTemp, 7) 'Construção da máscara. Talvez fique mais interessante se for feita com o uso de IFs Select Case Len(sTemp) Case Is <= 3 Case Else sTemp = Left(sTemp, 3) & "-" & Mid(sTemp, 4) End Select 'Atribui-se ao controle o valor da máscara com a devida formatação: TextBox1 = sTemp 'Essa rotina poderá ser chamada de novo, já que o código findou. blEmMudança = False End Sub Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Asc("A") To Asc("Z"), Asc("a") To Asc("z") If Len(TextBox1) >= 3 Then MsgBox "Favor inserir apenas números!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Asc("0") To Asc("9") If Len(TextBox1) < 3 Then MsgBox "Favor inserir apenas letras!", vbCritical, "Erro de validação" KeyAscii = 0 End If Case Else MsgBox "Favor inserir apenas letras ou números!", vbCritical, "Erro de validação" KeyAscii = 0 End Select End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Show de bola Felipe, funcionou perfeitamente, você realmente entende do assunto.
Muito obrigado mais uma vez.
-
Felipe, boa noite.
A sua ajuda ao amigo alexhsantos, já meu deu um norte para finalizar minha alteração, mas mesmo assim estou penando.
Preciso de algo semelhante e imagino que seja um arranjo simples.
O TextBox1 deve possuir a seguinte configuração;
CT-0001.P
Ou seja, duas letras, traço, quatro números, ponto e uma letra no final.
Você pode por gentileza me guiar neste assunto, creio que outros poderão ser auxiliados também.
Obrigado.