Ir para conteúdo
Fórum Script Brasil
  • 0

Código para validar CPF


Raphael49

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 0

crie um modulo

coloque essa função la

'******************************************
'Rotinas para cálculo de dígito verificador
'e validação de CNPJ e CPF
'Autor: Luiz Cláudio C. V. Rocha
'******************************************

Public Function fDigCNPJ(CNPJ As String) As String
'Calcula os dígitos verificadores do CNPJ
Dim i As Integer
Dim intFator As Integer
Dim intTotal As Integer
Dim intResto

'Verifica se tem 12 ou 14 dígitos
If Not (Len(CNPJ) = 12 Or Len(CNPJ) = 14) Then
    Exit Function
Else
    'Verifica se é numérico
    If Not IsNumeric(CNPJ) Then
        Exit Function
    Else
        'Trunca o CNPJ em 12 caracteres
        CNPJ = Left$(CNPJ, 12)
    End If
End If

Inicio:
'Percorre as colunas (de trás para frente),
'multiplicando por seus respectivos fatores
intFator = 2
intTotal = 0
For i = Len(CNPJ) To 1 Step -1
    If intFator > 9 Then intFator = 2
    intTotal = intTotal + ((CInt(Mid(CNPJ, i, 1)) * intFator))
    intFator = intFator + 1
Next i

'Obtém o resto da divisão por 11
i = intTotal Mod 11
'Subtrai 11 do resto
i = 11 - i
'O dígito verificador é i
If i = 10 Or i = 11 Then i = 0
'Concatena ao CNPJ
CNPJ = CNPJ & CStr(i)

If Len(CNPJ) = 13 Then
    'Calcula o segundo dígito
    GoTo Inicio
End If

'Retorna os dígitos verificadores
fDigCNPJ = Right$(CNPJ, 2)
End Function

Public Function fDigCPF(CPF As String) As String
'Calcula os dígitos verificadores do CPF
Dim i As Integer
Dim intFator As Integer
Dim intTotal As Integer
Dim intResto

'Verifica se tem 9 ou 11 dígitos
If Not (Len(CPF) = 9 Or Len(CPF) = 11) Then
    Exit Function
Else
    'Verifica se é numérico
    If Not IsNumeric(CPF) Then
        Exit Function
    Else
        'Trunca o CPF em 9 caracteres
        CPF = Left$(CPF, 9)
    End If
End If

Inicio:
'Percorre as colunas (de trás para frente),
'multiplicando por seus respectivos fatores
intFator = 2
intTotal = 0
For i = Len(CPF) To 1 Step -1
    intTotal = intTotal + ((CInt(Mid(CPF, i, 1)) * intFator))
    intFator = intFator + 1
Next i

'Obtém o resto da divisão por 11
i = intTotal Mod 11
'Subtrai 11 do resto
i = 11 - i
'O dígito verificador é i
If i = 10 Or i = 11 Then i = 0
'Concatena ao CPF
CPF = CPF & CStr(i)

If Len(CPF) = 10 Then
    'Calcula o segundo dígito
    GoTo Inicio
End If

'Retorna os dígitos verificadores
fDigCPF = Right$(CPF, 2)
End Function

Public Function fCNPJ(CNPJ As String) As Boolean
'Verifica se o CNPJ é válido
Dim strChar As String

'Verifica se tem 14 caracteres
If Not Len(CNPJ) = 14 Then
    fCNPJ = False
    Exit Function
End If

'Verifica se o dígito verificador confere
strChar = Mid$(CNPJ, 13, 2)
If fDigCNPJ(CNPJ) = strChar Then
    fCNPJ = True
Else
    fCNPJ = False
End If
End Function

Public Function fCPF(CPF As String) As Boolean
'Verifica se o CPF é válido
Dim strChar As String

'Verifica se tem 11 caracteres
If Not Len(CPF) = 11 Then
    fCPF = False
    Exit Function
End If

'Verifica se o dígito verificador confere
strChar = Mid$(CPF, 10, 2)
If fDigCPF(CPF) = strChar Then
    fCPF = True
Else
    fCPF = False
End If
End Function
agora no form que você deseja, crie um evento afterupdate do controle do CPF
Private Sub C_CPF_afterupdate()
'verifica se o campo é nulo
    If Not IsNull(Me.C_CPF) Then
'se não é nulo, inicia a validacao do CPF com a função fCPF(campo)
        If fCPF(Me.C_CPF) = True Then
'se for valido, então
            msgbox "valido"
        Else
'se for invalido, então
            msgbox "invalido"
        End If
    End If

End Sub

para o cnpj, mesma coisa.. usando a funcao fCNPJ(campo)

Editado por Humm
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...