|
Postada em 07/05/2008 12:42 hs
Ola pessoal,
Segue ai um código que serve para validar CPF.Desse jeito que fiz aparentemente deu certo porque o resultado dos calculos é igual aos 2 digitos verificadores do cpf valido digitado.Mas no final da como invalido!
segue o código Tem algumas linhas ai desnecessarias que só fiz pra ver se o resultado bate mesmo.
Se algume puder ver o erro Valew
Private Sub CmdValidaCPF_Click()
Dim aux, d1, d2, d3, d4, i As Integer Dim cpfbyte(11), cpfbyte2(11) As Integer Dim cpf As String
cpf = Text1.Text
aux = 10
For i = 1 To 11 cpfbyte(i) = Mid(cpf, i, 1) Next i Print " CPFBYTE 10 " & cpfbyte(10) Print " CPFBYTE 11 " & cpfbyte(11) For i = 1 To 9 cpfbyte2(i) = cpfbyte(i) * aux Print cpfbyte2(i) aux = aux - 1 Next i aux = 0 For i = 1 To 9 aux = cpfbyte2(i) + aux Print aux Next i d1 = aux 11 Print "D1 " & d1 d2 = d1 * 11 Print "D2 " & d2 d3 = aux - d2 Print "D3 " & d3 If (d3 = 0) Or (d3 = 1) Then d3 = 0 Else d3 = 11 - d3 End If MsgBox " Digito 1 = " & d3
aux = 11
For i = 1 To 10 cpfbyte2(i) = cpfbyte(i) * aux Print cpfbyte2(i) aux = aux - 1 Next i aux = 0 For i = 1 To 10 aux = cpfbyte2(i) + aux Print aux Next i d1 = aux 11 Print "D1 " & d1 d2 = d1 * 11 Print "D2 " & d2 d4 = aux - d2 Print "D4 " & d4 If (d4 = 0) Or (d4 = 1) Then d4 = 0 Else d4 = 11 - d4 End If MsgBox "Digito 2 = " & d4
If (d3 <> cpfbyte(10)) Or (d4 <> cpfbyte(11)) Then MsgBox " CPF INVALIDO!!!", vbExclamation, "VALIDAR CPF" Else MsgBox " CPF CONFERE ! ", vbExclamation, "VALIDAR CPF" End If
End Sub
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
Postada em 07/05/2008 15:51 hs
eu uso a seguinte função que é uma beleza Public Function isCPF(ByVal pCPF As String) As Boolean Dim Conta As Integer, Soma As Integer, Resto As Integer, Passo As Integer isCPF = False: pCPF = Trim(pCPF) If Len(pCPF) <> 11 Then Exit Function End If For Passo = 11 To 12 Soma = 0 For Conta = 1 To Passo - 2 Soma = Soma + Val(Mid(pCPF, Conta, 1)) * (Passo - Conta) Next Resto = 11 - (Soma - (Int(Soma / 11) * 11)) If Resto = 10 Or Resto = 11 Then Resto = 0 If Resto <> Val(Mid(pCPF, Passo - 1, 1)) Then Exit Function End If Next isCPF = True End Function ' como utilizar Private Sub Command1_Click() If isCPF(Text1.Text) = True Then MsgBox "CPF é válido", vbInformation Else MsgBox "CPF é inválido!", vbCritical End If End Sub
|
|
|
Perci
|
MATÃO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/05/2008 16:57 hs
Treze, uma vez encontrei uma rotina na NET para realizar essa tarefa, mas ela é muito extensa. Vou testar amanhã e se essa função que você usa funcionar perfeitamente, vou alterar a minha. Esta é muito mais fácil de se entender. Valeu. Até mais.
|
|
|
|
Postada em 16/09/2008 00:30 hs
Muito Interessante, bem compacta e pode ser adaptada para o CNPJ também. Muito boa. vlu//
|
|
|
|
Postada em 15/12/2008 13:11 hs
Simples e boa!!
vlw
|
|
|
|
Postada em 26/05/2009 09:14 hs
voces porderiam me explicar essa funçao que valida o cpf que fiquei meio perdido nao to entendo o que ela ta afzendo apesar de funcionando obrigado
|
|
|
|