Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Separar fones fixos de móveis & acrescentar nono dígito

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Diegomarcelo
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Seg Abr 08, 2019 10:31 am

Separar fones fixos de móveis & acrescentar nono dígito

Mensagem por Diegomarcelo »

Possuo uma planilha com quase 8 mil linhas de contato.
Porem esses contatos passaram por um processo de enriquecimento de base pesquisado pelo CPF do cliente. no entanto precisei confrontar o enriquecimento com nossa base para descobrir quais números eram novos e quais eram antigos.

O problema é que ao confrontar a base, a maioria nos números que vieram, constaram como NOVO, e aí notei que estava vindo como novo porque a maioria dos números de celulares da nossa base estavam sem o nono dígito. Precisava então de uma macro que fizesse essa verificação para mim e adicionasse o nono digito somente nos telefones celulares.

Pesquisando encontrei a seguinte função que aparentemente é exatamente o que eu necessito.

Function ValidarCelular(Myrange As Range) As String
On Error GoTo ErrHandler:
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String

strPattern = "^[6|7|8|9](?:\d{7}|\d{3}-\d{4})$"

If strPattern <> "" Then
strInput = Trim(Myrange.Value)
strReplace = "9" & strInput

With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
ValidarCelular = regEx.Replace(strInput, strReplace)
Else
ValidarCelular = Myrange.Value
End If
End If
Exit Function
ErrHandler:
' Tratamento de Erro
ValidarCelular= CVErr(xlErrNA)
On Error GoTo 0
End Function


Porém quando eu tento utilizar a função acusa o seguinte erro:
ERRO DE COMPILAÇÃO : O TIPO DEFINIDO PELO USUÁRIO NÃO FOI DEFINIDO

Já tentei abrir o módulo, clicar no menu Ferramentas > Referências e assinalar a biblioteca Microsoft DAO 3.6 Object library.

Alternativamente, assinalei Microsoft Office 1x.0 Access Database Engine Object. e também ActiveX Data Objects 6.1 Library.

Porem mesmo assim o erro persiste!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Separar fones fixos de móveis & acrescentar nono dígito

Mensagem por Reinaldo »

Na falta de maiores detalhes, acredito que o erro seja declaração da variavel "regEx"
Experimente "assinalar" a biblioteca "Microsoft VBScript Regular Expressions"
Ferramentas -> Referencias -> Procure & assinale --> "Microsoft VBScript Regular Expressions" (1.0 ou 5.5)


daavmendonca
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Sex Abr 12, 2019 4:08 pm

Re: Separar fones fixos de móveis & acrescentar nono dígito

Mensagem por daavmendonca »

Boa noite Diegomarcelo,

Talvez um Loop que compare o tamanho da String e concatene um "9" no começo ja resolva seu caso,

Código: Selecionar todos

Do while activecell <> ""


if len(activecell) = 8 then
activecell = "9" & activecell
end if

activecell.offset(1,0).select
Loop



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder