Dicas do OsmarJr

Cálculo de Dígitos de CNPJ


Como verificar se os dígitos do CNPJ (CGC) conferem.

Option Compare Database
Option Explicit

Function DVCGC(CGC As String) As String

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

    intSoma = 0
    intSoma1 = 0
    intSoma2 = 0
    intNumero = 0
    intMais = 0

    strDigVer = Right(CGC, 2)
    strcampo = Left(CGC, 8)
    strCGC = Right(CGC, 6)
    strCGC = Left(strCGC, 4)
    strcampo = Right(strcampo, 4) & strCGC

    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(CGC, 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(CGC, 8)
    strCGC = Right(CGC, 6)
    strCGC = Left(strCGC, 4)
    strcampo = Right(strcampo, 3) & strCGC & 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(CGC, 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

    If StrConf = strDigVer Then DVCGC = True Else DVCGC = False

End Function

Home

Contato | Copyright©Osmar José Correia Júnior | 24-Nov-2005 18:23