Verificação de CPF E CNPJ

Muitas pessoas se perguntam como verificar se um CPF OU CGC (antigo CNPJ) são validos. Abaixo ensinamos como verificar esses dados.
Abra o Excel entre no editor de VBA (Alt + F11) insira um módulo e cole este código:

Function CGC(CNPJ As String) As String


Dim intSoma, intSoma1, intSoma2, intInteiro As Long
Dim intNumero, intMais, i, intResto As Integer
Dim intDig1, intDig2 As Integer
Dim strcampo, strCaracter, StrConf, strCNPJ, strDigVer As String
Dim dblDivisao As Double
intSoma = 0
intSoma1 = 0
intSoma2 = 0
intNumero = 0
intMais = 0


strDigVer = Right(CNPJ, 2)
strcampo = Left(CNPJ, 8)
strCNPJ = Right(CNPJ, 6)
strCNPJ = Left(strCNPJ, 4)
strcampo = Right(strcampo, 4) & strCNPJ

For i = 2 To 9
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
intSoma1 = intSoma1 + intMais
Next i
'Separa os 4 primeiros dígitos do CGC
strcampo = Left(CNPJ, 4)
For i = 2 To 5
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
intSoma2 = intSoma2 + intMais
Next i
intSoma = intSoma1 + intSoma2
dblDivisao = intSoma / 11
intInteiro = Int(dblDivisao) * 11
intResto = intSoma - intInteiro
If intResto = 0 Or intResto = 1 Then
intDig1 = 0
Else
intDig1 = 11 - intResto
End If
intSoma = 0
intSoma1 = 0
intSoma2 = 0
intNumero = 0
intMais = 0

strcampo = Left(CNPJ, 8)
strCNPJ = Right(CNPJ, 6)
strCNPJ = Left(strCNPJ, 4)
strcampo = Right(strcampo, 3) & strCNPJ & intDig1

For i = 2 To 9
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
intSoma1 = intSoma1 + intMais
Next i
strcampo = Left(CNPJ, 5)
For i = 2 To 6
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
intSoma2 = intSoma2 + intMais
Next i
intSoma = intSoma1 + intSoma2
dblDivisao = intSoma / 11
intInteiro = Int(dblDivisao) * 11
intResto = intSoma - intInteiro
If intResto = 0 Or intResto = 1 Then
intDig2 = 0
Else
intDig2 = 11 - intResto
End If
StrConf = intDig1 & intDig2
CGC = StrConf

End Function

Function DVCPF(Cpf As String) As String

Dim lngSoma, lngInteiro As Long
Dim intNumero, intMais, i, intResto As Integer
Dim intDig1, intDig2 As Integer
Dim strDigVer, strcampo, strCaracter, StrConf As String
Dim dblDivisao As Double
lngSoma = 0
intNumero = 0
intMais = 0

strcampo = Left(Cpf, 9)
strDigVer = Right(Cpf, 2)
For i = 2 To 10
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig1 = 0
Else
intDig1 = 11 - intResto
End If
strcampo = strcampo & intDig1
lngSoma = 0
intNumero = 0
intMais = 0
For i = 2 To 11
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig2 = 0
Else
intDig2 = 11 - intResto
End If
StrConf = intDig1 & intDig2
DVCPF = StrConf
End Function




Agora em uma das suas planilhas, pelo editor de VBA insira o codigo abaixo.
Observe a celula descrita no codigo e digite o numero do seu CPF / CGC para verificar o exemplo.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Dig, Nvar
'NVar = Celula onde deverá testar o numero de teste Format(Range("a1"), "00000000000000")
If Target.Address = Range("a1").Address Then
If IsNumeric(Range("a1")) Then 'se não preencher o campo ignora
Dig = Right(Format(Range("a1"), "00000000000000"), 2)
Nvar = Módulo1.CGC(Format(Range("a1"), "00000000000000"))
If Dig = Nvar Then
Else 'senão avisa em vermelho
Range("a1") = "CGC INVÁLIDO"
End If
End If
ElseIf Target.Address = Range("A2").Address Then
If IsNumeric(Range("A2")) Then 'se não preencher o campo ignora
Dig = Right(Format(Range("A2"), "00000000000"), 2)
Nvar = Módulo1.DVCPF(Format(Range("A2"), "00000000000"))
If Dig = Nvar Then
Else 'senão avisa em vermelho
Range("A2") = "CPF INVÁLIDO"
End If
End If
End If
End Sub

2 comentários:

Anônimo disse...

Valeu pela dica, aqui em casa o verificador do cnpj funcionou direitinho.

Anônimo disse...

Cara me da uma ajuda...você comenta inserir aquela 3ª sequencia de cod. em uma planilha atraves do editor vba...enrosquei ai..poderia detalhar melhor?