FORMATACAO DE CAMPOS TELEFONES E NONO DIGITO
Pessoal tem as seguintes situações a formatação de campo telefone
No caso do Fixo
(014)3333-3333
(14)3333-3333
3333-3333
Agora do Móvel
(014)9999-9999
(14)9999-9999
Agora com o Nono dÃgito
(014)99999-9999
(14)99999-9999
Eu tenho uma função para formatar o campo de telefone que é a seguinte
Public Function CampoTelefone(obj As Object, Keyasc As Integer)
[ô]Formata os campos de Telefone
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) = 0 Then
obj.Text = obj.Text + [Ô]([Ô]
obj.SelStart = Len(obj.Text)
End If
If Len(obj.Text) = 3 Then
obj.Text = obj.Text + [Ô]) [Ô]
obj.SelStart = Len(obj.Text)
End If
If Len(obj.Text) = 9 Then
obj.Text = obj.Text + [Ô]-[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
Esta função formata somente nesta condição (14)3333-3333/(14)9999-9999
O que eu gostaria é que se possÃvel quem já tem em seus sistemas um padrão que englobe o Nono digito para o telefone compartilhasse ou melhorasse a função acima para aceitar a formatação quando houver o Nono digito.
Tentei fazer algo relacionado a quantidade de caracteres de entrada, mais não ficou legal.
Abraços.
Qualquer dúvida disponha.
If NumeroTelefone=12 then
[ô]SEU CODIGO
Else
[ô]SEU CODIGO
End if
Citação::
Não tenho esse tipo de rotina mas a minha sugestão é você verificar a quantidade de dÃgitos acho que seria mais fácil.
If NumeroTelefone=12 then
[ô]SEU CODIGO
Else
[ô]SEU CODIGO
End if
Valeu mesmo então. Até pensei em fazer isto.
A rotina que eu postei vai fazendo a formatação conforme o usuário vai digitando os números.
Estava pensando se era possÃvel fazer da mesma maneira.
Function FormataFone(cFone As String)
Dim cNum As String
cNum = PegaNum(cFone)
[ô] Alinha o número do telefone à direita
If Trim(cNum) <> [Ô][Ô] Then
If Len(cNum) = 8 Then
[ô]Telefone com 8 dÃgitos SEM o DDD
cFone = [Ô]( ) [Ô] + Mid(cNum, 1, 4) + [Ô]-[Ô] + Mid(cNum, 5, 4)
ElseIf Len(cNum) = 10 Then
[ô]Telefone com 8 dÃgitos COM o DDD
cFone = [Ô]([Ô] + Mid(cNum, 1, 2) + [Ô]) [Ô] + Mid(cNum, 3, 4) + [Ô]-[Ô] + Mid(cNum, 7, 4)
ElseIf Len(cNum) = 9 Then
[ô]Telefone com 9 dÃgitos SEM o DDD
cFone = [Ô]( )[Ô] + Mid(cNum, 1, 5) + [Ô]-[Ô] + Mid(cNum, 6, 4)
ElseIf Len(cNum) = 11 Then
[ô]Telefone com 9 dÃgitos COM o DDD
cFone = [Ô]([Ô] + Mid(cNum, 1, 2) + [Ô])[Ô] + Mid(cNum, 3, 5) + [Ô]-[Ô] + Mid(cNum, 8, 4)
End If
End If
FormataFone = cFone
End Function
Public Function PegaNum(cTexto As String) As String
Dim cNumero As String, x As Integer
cNumero = [Ô][Ô]
For x = 1 To Len(cTexto)
If IsNumeric(Mid(cTexto, x, 1)) Then
cNumero = cNumero + Mid(cTexto, x, 1)
End If
Next
PegaNum = cNumero
End Function
Citação::
Segue codigo abaixo. espero que ajude
Function FormataFone(cFone As String)
Dim cNum As String
cNum = PegaNum(cFone)
[ô] Alinha o número do telefone à direita
If Trim(cNum) <> [Ô][Ô] Then
If Len(cNum) = 8 Then
[ô]Telefone com 8 dÃgitos SEM o DDD
cFone = [Ô]( ) [Ô] + Mid(cNum, 1, 4) + [Ô]-[Ô] + Mid(cNum, 5, 4)
ElseIf Len(cNum) = 10 Then
[ô]Telefone com 8 dÃgitos COM o DDD
cFone = [Ô]([Ô] + Mid(cNum, 1, 2) + [Ô]) [Ô] + Mid(cNum, 3, 4) + [Ô]-[Ô] + Mid(cNum, 7, 4)
ElseIf Len(cNum) = 9 Then
[ô]Telefone com 9 dÃgitos SEM o DDD
cFone = [Ô]( )[Ô] + Mid(cNum, 1, 5) + [Ô]-[Ô] + Mid(cNum, 6, 4)
ElseIf Len(cNum) = 11 Then
[ô]Telefone com 9 dÃgitos COM o DDD
cFone = [Ô]([Ô] + Mid(cNum, 1, 2) + [Ô])[Ô] + Mid(cNum, 3, 5) + [Ô]-[Ô] + Mid(cNum, 8, 4)
End If
End If
FormataFone = cFone
End Function
Public Function PegaNum(cTexto As String) As String
Dim cNumero As String, x As Integer
cNumero = [Ô][Ô]
For x = 1 To Len(cTexto)
If IsNumeric(Mid(cTexto, x, 1)) Then
cNumero = cNumero + Mid(cTexto, x, 1)
End If
Next
PegaNum = cNumero
End Function
Legal a sua função e obrigado por compartilhar.
Como é feita a chamada dela
seria no LostFocus do campo telefone?