Boa noite, Caros.
Precisava de uma Function em VBA que compare o valor de uma célula e verifique se está correto, ou seja seguindo o padrão, um membro do site em um tópico anterior me deu uma ajuda, mas precisava incluir mais dados, porém realizei uma alteração e o código sempre da como FALSO. Em anexo tem uma planilha explicando tudo e com exemplo, no caso pegar a forma de nomear: TEXTO_TEXTO1_NOME_12345678910_TEXTO2_03072018_2135_12345678910_NA_ATIVO_PF_ESCOB_MOVEL_MASSIVO_NA_IGUAL30_MENOR2000_001 e depois verificar se ela segue o padrão no caso de PF (TEXTO_TEXTO1_NOME_11digitos_TEXTO2_DDMMAAAA_HHMM_11digitos_NA_DADOS1_PF_DADOS2_DADOS3_MASSIVO_NA_DADOS4_DADOS5_001) depois mostrar se está errado ou correto.
Abaixo código modificado:
Function CódigoÉVálido(cód As String) As Boolean
With CreateObject("VBScript.RegExp") ' rgx
.Pattern = "^(TEXTO)_(TEXTO1)_(NOME)_(d{11})_(TEXTO2)_(d{2})(d{2})(d{4})_(d{2})_((d{11}_NA_(ATIVO|RECEPTIVO)_PF)|(d{14}_NA_(ATIVO|RECEPTIVO)_PJ))_(ESCOB|TELE)_(MOVEL|FIXA|TV)_(MASSIVO)_(NA)_(NA|MENOR30|(IGUAL|MAIOR)[36]0)_(NA|MENOR2000|MAIOR2000)_(001)$"
If .Test(cód) Then
With .Execute(cód)(0).SubMatches
CódigoÉVálido = IsDate(.Item(6) & "/" & .Item(7) & "/" & .Item(8))
End With
End If
End With
End Function
'==========================================
'Autor Original: Edson BR
Adaptação:
'==========================================
Código Original:
Function CódigoÉVálido(cód As String) As Boolean
With CreateObject("VBScript.RegExp") ' rgx
.Pattern = "^((d{11}_PF)|(d{14}_PJ))_(d{2})(d{2})(d{4})_(NA|MENOR30|(IGUAL|MAIOR)[36]0)$"
If .Test(cód) Then
With .Execute(cód)(0).SubMatches
CódigoÉVálido = IsDate(.Item(3) & "/" & .Item(4) & "/" & .Item(5))
End With
End If
End With
End Function
Postado : 05/07/2018 9:54 pm