none
Validar CPF com maskedit

    Question

  • Estou com o seguinte codigo no meu form,para validar o CPF porem este campo é uma maskedit e quando tiro a maskedit e insiro somente numeros da certo mas com maskedit sempre escreve CPF invalido

     

    Private Sub mskcpf_Lostfocus()
     If FU_ValidaCPF(Txtcpf.Text) = False Then
       MsgBox "CPF invalido", vbExclamation, "Aviso"
       mskcpf.SetFocus
       Exit Sub
     End If
    End Sub


    Public Function FU_ValidaCPF(Cpf As String) As Boolean

     Dim soma As Integer
     Dim Resto As Integer
     Dim I As Integer

     ''Valida argumento
     If Len(Cpf) <> 11 Then
       FU_ValidaCPF = False
       Exit Function
     End If

     soma = 0
     For I = 1 To 9
       soma = soma + Val(Mid$(Cpf, I, 1)) * (11 - I)
     Next I
     Resto = 11 - (soma - (Int(soma / 11) * 11))
     If Resto = 10 Or Resto = 11 Then Resto = 0
       If Resto <> Val(Mid$(Cpf, 10, 1)) Then
         FU_ValidaCPF = False
         Exit Function
     End If

     soma = 0
     For I = 1 To 10
     soma = soma + Val(Mid$(Cpf, I, 1)) * (12 - I)
     Next I
     Resto = 11 - (soma - (Int(soma / 11) * 11))
     If Resto = 10 Or Resto = 11 Then Resto = 0
     If Resto <> Val(Mid$(Cpf, 11, 1)) Then
     FU_ValidaCPF = False
     Exit Function
     End If
     FU_ValidaCPF = True
     End Function

    • Changed type Justiceira Tuesday, June 08, 2010 12:54 AM
    Tuesday, June 08, 2010 12:52 AM

Answers

  • Tente desta forma:

     

    Private Sub mskcpf_Lostfocus()
     If FU_ValidaCPF(Replace(Replace(Txtcpf.Text, ".", ""), "-", "")) = False Then
      MsgBox "CPF invalido", vbExclamation, "Aviso"
      mskcpf.SetFocus
      Exit Sub
     End If
    End Sub
    


    MSN: poseidonfba@hotmail.com
    • Marked as answer by Justiceira Tuesday, June 08, 2010 2:15 PM
    Tuesday, June 08, 2010 1:10 AM
  • Porque vc não tira a máscara de entrada do access e armazena apenas os numeros?

    Ai no form vc só mostra assim:

     

    mskcpf.Text = TBcadfunc!Cpf


    MSN: poseidonfba@hotmail.com
    • Marked as answer by Justiceira Tuesday, June 08, 2010 2:15 PM
    Tuesday, June 08, 2010 1:41 AM

All replies

  • Como esta a mascara do maskedit???

    MSN: poseidonfba@hotmail.com
    Tuesday, June 08, 2010 1:00 AM
  • A mask esta assim

    ###.###.###-##

    Tuesday, June 08, 2010 1:03 AM
  • Tente desta forma:

     

    Private Sub mskcpf_Lostfocus()
     If FU_ValidaCPF(Replace(Replace(Txtcpf.Text, ".", ""), "-", "")) = False Then
      MsgBox "CPF invalido", vbExclamation, "Aviso"
      mskcpf.SetFocus
      Exit Sub
     End If
    End Sub
    


    MSN: poseidonfba@hotmail.com
    • Marked as answer by Justiceira Tuesday, June 08, 2010 2:15 PM
    Tuesday, June 08, 2010 1:10 AM
  • serviu agora!!!!

     

    e mais uma duvidaminha mask esta configurada assim ###.###.###-##
    no access esta com mascara de entrada assim 999/.999/.999/-99
    e as vezes clico para visualizar e não aparece no campo do formulario
    mesmo estando preenchido no banco,e os campos depois dela tambem não mostram nada e não são maskedits

    no botão de visualizar eu so coloquei isso referente a este campo
    mskcpf.Text = Format$(TBcadfunc!Cpf & "", "@@@@@@@@@@@")

    Tuesday, June 08, 2010 1:35 AM
  • Porque vc não tira a máscara de entrada do access e armazena apenas os numeros?

    Ai no form vc só mostra assim:

     

    mskcpf.Text = TBcadfunc!Cpf


    MSN: poseidonfba@hotmail.com
    • Marked as answer by Justiceira Tuesday, June 08, 2010 2:15 PM
    Tuesday, June 08, 2010 1:41 AM
  • Funcionou valeu POSEIDON!!
    Tuesday, June 08, 2010 2:15 PM