quarta-feira, 11 de abril de 2007

Calculando o dígito verificador do CNPJ


Adaptei este código para o Visual Basic, é só desenhar os TextBox's e colocar os CommandButton's.
Se alguém quiser o projeto pronto com o form e o código, é só me mandar um e-mail.
No próximo post, o cálculo para o dígito do CPF.




Dim cgc As String
cgc = Text1.Text
If Text1.Text = "" Then Exit Sub

Dim I As Integer 'utilizada nos FOR... NEXT
Dim strCGC As String 'armazena a parte do CGC entre /0001- ou seja 0001
Dim strcampo As String 'armazena do CPF que será utilizada para o cálculo
Dim strCaracter As String 'armazena os digitos do CPF da direita para a esquerda
Dim intNumero As Integer 'armazena o digito separado para cálculo (uma a um)
Dim intMais As Integer 'armazena o digito específico multiplicado pela sua base
Dim intSoma As Long 'armazena a soma dos digitos multiplicados pela sua base(intmais)
Dim intSoma1 As Long 'armazena a soma dos 8 primeiros digitos multiplicados pela sua base(intmais)
Dim intSoma2 As Long ''armazena a soma dos 4 ultimos digitos multiplicados pela sua base(intmais)
Dim dblDivisao As Double 'armazena a divisão dos digitos*base por 11
Dim intInteiro As Long 'armazena inteiro da divisão
Dim intResto As Integer 'armazena o resto
Dim intDig1 As Integer 'armazena o 1º digito verificador
Dim intDig2 As Integer 'armazena o 2º digito verificador
Dim strConf As String 'armazena o digito verificador

intSoma = 0
intSoma1 = 0
intSoma2 = 0
intNumero = 0
intMais = 0
'Inicia cálculos do 1º dígito
'Separa os dígitos do CGC que serão multiplicados de 2 a 9.

strCGC = Right(cgc, 4)
strCGC = Left(strCGC, 4)
strcampo = Left(cgc, 8)
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
'Inicia cálculos do 2º dígito
strCGC = Right(cgc, 4)
strCGC = Left(strCGC, 4)
strcampo = Left(cgc, 8)
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
'Separa os 4 primeiros dígitos do CGC
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
Text2.Text = strConf
End Sub

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.