sábado, 17 de março de 2007

Conferência do dígito verificador do CNPJ e CPF

Tem coisas que é perda de tempo tentar fazer, pois na internet já tem pronto.
Exemplo comum é a verificação do DV do CNPJ e do CPF.
Segue abaixo o código.
Para usar, coloque o número do CPF ou CNPJ numa célula (por exemplo A1) e em outra célula digite "=CNPJ(A1)" (sem as aspas) .


Dim mult As Double
Dim div As Double
Dim dig1 As Double
Dim dig2 As Double
Dim somadig1 As Double
Dim somadig2 As Double
Dim x As Double
Dim resultado As String

'Esta função pega numero a numero do CPF/CNPJ
Function quociente(num As Double, divisor As Double) As Integer
Dim cont As Integer
cont = 0
Do While num >= divisor
num = num - divisor
cont = cont + 1
Loop
quociente = cont
End Function

'Esta função verifica a validade do CNPJ
Function CNPJ(n As Double) As String
mult = 6
div = 10 ^ 13
somadig1 = 0
somadig2 = 0
Do While div <> 10
acum = n
x = quociente(n, div)
somadig2 = somadig2 + x * mult
If mult = 2 Then mult = 9 Else mult = mult - 1
somadig1 = somadig1 + x * mult
n = acum - x * div
div = div / 10
Loop
x = quociente(n, 10)
somadig1 = (somadig1 * 10) Mod 11
If somadig1 = 10 Then somadig1 = 0
somadig2 = somadig2 + somadig1 * mult
somadig2 = (somadig2 * 10) Mod 11
If somadig2 = 10 Then somadig2 = 0
dig1 = x
dig2 = n Mod 10
If somadig1 = dig1 And somadig2 = dig2 Then
resultado = "OK"
Else
resultado = "CNPJ INVALIDO"
End If
CNPJ = resultado
End Function

'Esta função verifica a validade do CPFFunction CPF(n As Double) As String
mult = 1
div = 10 ^ 10
somadig2 = 0
acum = n
somadig1 = quociente(n, div)
n = acum - somadig1 * div
div = div / 10
Do While div <> 10
acum = n
x = quociente(n, div)
somadig2 = somadig2 + x * mult
mult = mult + 1
somadig1 = somadig1 + x * mult
n = acum - x * div
div = div / 10
Loop
x = quociente(n, 10)
somadig1 = somadig1 Mod 11
If somadig1 = 10 Then somadig1 = 0
somadig2 = somadig2 + somadig1 * mult
somadig2 = somadig2 Mod 11
If somadig2 = 10 Then somadig2 = 0
dig1 = x
dig2 = n Mod 10
If somadig1 = dig1 And somadig2 = dig2 Then
resultado = "OK"
Else
resultado = "CPF INVALIDO"
End If
CPF = resultado
End Function

Nenhum comentário:

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.