Notifications
Clear all

Como Formatar?

7 Posts
2 Usuários
0 Reactions
708 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boas Caros Colegas

Tentei encontrar uma solução por todas as vias mas não encontro, vejam se me conseguem dar uma ajudar se fazem a gentileza.
É assim, quero configurar uma textbox num formato personalizado em que aceite-se números e letras, ou seja, 6 algarismos e 2 digitos separadores, e, onde que as letras permaneçam sempre maiúsculas.
Exemplo 1: 12-34-AB
Exemplo 2: 57-XQ-03
Exemplo 3: YU-97-68

Desde já obrigado

 
Postado : 05/04/2014 10:58 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Talvez isso ajude.

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim strTemp As String
    
    If TextBox1.TextLength = 6 Then
        strTemp = TextBox1.Text
        strTemp = Left(strTemp, 2) & "-" & Mid(strTemp, 3, 2) & "-" & Right(strTemp, 2)
        TextBox1.Text = strTemp
    End If
End Sub

Att

 
Postado : 05/04/2014 11:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

obrigado, foi de boa ajuda,
somente faltou as letras permanecerem maiúsculas.
Obrigado

 
Postado : 05/04/2014 11:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Por favor click na mãozinha!!!!!!!!!

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim strTemp As String
    
    If TextBox1.TextLength = 6 Then
        strTemp = TextBox1.Text
        strTemp = Left(strTemp, 2) & "-" & Mid(strTemp, 3, 2) & "-" & Right(strTemp, 2)
        TextBox1.Text = strTemp
    End If
    TextBox1.value = UCase(TextBox1.value)
End Sub
 
Postado : 05/04/2014 11:33 am
(@gtsalikis)
Posts: 2373
Noble Member
 

O Alexandre já respondeu, mas, caso queira verificar se foram digitados apenas letras e números, pode ser assim:

Dim a As String
Dim b As String
Dim c As integer
Dim i As Integer

a = seutextbox.Value

If Len(a) = 6 Then
    For i = 1 To Len(a)
        b = Mid(a, i, 1)
        c = Asc(b)
        If (c >= 48 And c <= 57) Or (c >= 65 And c <= 90) Or (c >= 97 And c <= 122) Then
            'continua
        Else
            MsgBox "Digite apenas letras e números"
            GoTo FIM
        End If
    Next
    a = UCase(a)
    a = Left(a, 2) & "-" & Mid(a, 3, 2) & "-" & Right(a, 2)
Else
    MsgBox "São 6 caracteres"
End If

FIM:
 
Postado : 05/04/2014 12:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alex,
obrigado pela ajuda, no entanto a formatação não esta de acordo com o padrão limite dos 6 caracteres mais 2 separadores, estou a conseguir digitar mais que isso.

Private Sub txtmatrícula_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim strTemp As String

If txtmatrícula.TextLength = 6 Then
strTemp = txtmatrícula.Text
strTemp = Left(strTemp, 2) & "-" & Mid(strTemp, 3, 2) & "-" & Right(strTemp, 2)
txtmatrícula.Text = strTemp
End If
txtmatrícula.Value = UCase(txtmatrícula.Value)

End Sub

Não sei que fiz alguma asneira ao copiar o código, porem comparei ao teu, e não encontro diferenças se não for as alterações dos nomes das textbox´s.

Obrigado

 
Postado : 07/04/2014 4:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Luciano, adicione a linha abaixo logo no inicio da rotina que estiver utilizando:
txtmatrícula.MaxLength = 6 ' Define a qde de caracteres no textbox

[]s

 
Postado : 07/04/2014 5:09 pm