FORMATACAO DE CAMPOS TELEFONES E NONO DIGITO

AZORSCA 17/07/2013 10:13:10
#426187
Bom dia!

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.
ALEVALE 17/07/2013 10:19:13
#426188
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
AZORSCA 17/07/2013 10:43:17
#426193
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.
LOOKSYSTEM 17/07/2013 12:16:12
#426199
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
AZORSCA 18/07/2013 10:02:42
#426242
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?



Faça seu login para responder