USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Validações)

Título da Dica:  Validar CPF e CNPJ, com Máscara !!!
Postada em 28/12/2001 por RODRIGO      Clique aqui para enviar email para o autor  activexnanet@bol.com.br
'Em um Modulo.bas

Public Formato, Numeros As String

Function Fu_consistir_CgcCpf(Vl_CgcCpf As String)
' Esta Rotina Devolverá True  Se o Cgc/Cpf Informado For valido
'                    ou False Se o Cgc/Cpf Não For Correto

Fu_consistir_CgcCpf = False
Dim VA_CgcCpf           As String
Dim VA_Digito           As String
Static Numero(15)       As Integer
Dim VA_Resto            As Integer
Dim VA_Resultado        As Integer
Dim VA_SomaDigito10     As Integer
Dim VA_resto1           As Integer

VA_CgcCpf = Format(SóNumeros(Vl_CgcCpf), "@@@@@@@@@@@@@@")
VA_Digito = Mid(VA_CgcCpf, 13, 2)
'frmCritica_CPCCGC.LblVerificador.Caption = VA_Digito

Numero(1) = Val(Mid(VA_CgcCpf, 1, 1))
Numero(2) = Val(Mid(VA_CgcCpf, 2, 1))
Numero(3) = Val(Mid(VA_CgcCpf, 3, 1))
Numero(4) = Val(Mid(VA_CgcCpf, 4, 1))
Numero(5) = Val(Mid(VA_CgcCpf, 5, 1))
Numero(6) = Val(Mid(VA_CgcCpf, 6, 1))
Numero(7) = Val(Mid(VA_CgcCpf, 7, 1))
Numero(8) = Val(Mid(VA_CgcCpf, 8, 1))
Numero(9) = Val(Mid(VA_CgcCpf, 9, 1))
Numero(10) = Val(Mid(VA_CgcCpf, 10, 1))
Numero(11) = Val(Mid(VA_CgcCpf, 11, 1))
Numero(12) = Val(Mid(VA_CgcCpf, 12, 1))
Numero(13) = Val(Mid(VA_CgcCpf, 13, 1))
Numero(14) = Val(Mid(VA_CgcCpf, 14, 1))

If Len(Trim(VA_CgcCpf)) > 11 Then  ' Cgc
    Formato = Format(Numeros, "@@.@@@.@@@/@@@@-@@")


    VA_Resultado = (Numero(1) * 5) + (Numero(2) * 4) _
            + (Numero(3) * 3) + (Numero(4) * 2) _
            + (Numero(5) * 9) + (Numero(6) * 8) + _
            (Numero(7) * 7) + (Numero(8) * 6) + _
            (Numero(9) * 5) + (Numero(10) * 4) + _
            (Numero(11) * 3) + (Numero(12) * 2)
    ' Atribui para resto o resto da divisão
    ' de VA_resultado dividido por 11
    VA_Resto = VA_Resultado Mod 11
    If VA_Resto < 2 Then
        VA_resto1 = 0
    Else
        VA_resto1 = 11 - VA_Resto
    End If
    If VA_resto1 <> Numero(13) Then
        Exit Function
    End If
    VA_Resultado = (Numero(1) * 6) + _
            (Numero(2) * 5) + (Numero(3) * 4) + _
            (Numero(4) * 3) + (Numero(5) * 2) + _
            (Numero(6) * 9) + (Numero(7) * 8) + _
            (Numero(8) * 7) + (Numero(9) * 6) + _
            (Numero(10) * 5) + (Numero(11) * 4) + _
            (Numero(12) * 3) + (Numero(13) * 2)
    ' Atribui para resto o resto da divisão
    ' de VA_resultado dividido por 11
    VA_Resto = VA_Resultado Mod 11
    If VA_Resto < 2 Then
        VA_resto1 = 0
    Else
        VA_resto1 = 11 - VA_Resto
    End If
    If VA_resto1 <> Numero(14) Then
        Exit Function
    End If
Else  ' Cpf
    Formato = Format(Numeros, "@@@.@@@.@@@ - @@")
    VA_Resultado = (Numero(4) * 1) + (Numero(5) * 2) _
            + (Numero(6) * 3) + (Numero(7) * 4) _
            + (Numero(8) * 5) + (Numero(9) * 6) _
            + (Numero(10) * 7) + (Numero(11) * 8) + (Numero(12) * 9)
    VA_Resto = VA_Resultado Mod 11

    If VA_Resto > 9 Then
        VA_resto1 = VA_Resto - 10
    Else
        VA_resto1 = VA_Resto
    End If
    'frmCritica_CPCCGC.LblC1.Caption = VA_resto1
    If VA_resto1 <> Numero(13) Then
        GoTo Sairr
    End If

    VA_Resultado = (Numero(5) * 1) _
            + (Numero(6) * 2) + (Numero(7) * 3) _
            + (Numero(8) * 4) + (Numero(9) * 5) + _
            (Numero(10) * 6) + (Numero(11) * 7) + _
            (Numero(12) * 8) + (VA_resto1 * 9)
    VA_Resto = VA_Resultado Mod 11
    If VA_Resto > 9 Then
        VA_resto1 = VA_Resto - 10
    Else
        VA_resto1 = VA_Resto
    End If
    'frmCritica_CPCCGC.LblC2.Caption = VA_resto1
    If VA_resto1 <> Numero(14) Then
        Exit Function
    End If

End If

Fu_consistir_CgcCpf = True
Exit Function
Sairr:
VA_Resultado = (Numero(5) * 1) _
        + (Numero(6) * 2) + (Numero(7) * 3) _
        + (Numero(8) * 4) + (Numero(9) * 5) + _
        (Numero(10) * 6) + (Numero(11) * 7) + _
        (Numero(12) * 8) + (VA_resto1 * 9)
VA_Resto = VA_Resultado Mod 11
If VA_Resto > 9 Then
    VA_resto1 = VA_Resto - 10
Else
    VA_resto1 = VA_Resto
End If
'frmCritica_CPCCGC.LblC2.Caption = VA_resto1
If VA_resto1 <> Numero(14) Then
    Exit Function
End If

End Function
Function SóNumeros(x As String) As String
On Error Resume Next
Dim temp As String
Dim j As Integer
temp = ""
For j = 1 To Len(x)
    If Mid(x, j, 1) = "0" Or _
            Mid(x, j, 1) = "1" Or _
            Mid(x, j, 1) = "2" Or _
            Mid(x, j, 1) = "3" Or _
            Mid(x, j, 1) = "4" Or _
            Mid(x, j, 1) = "5" Or _
            Mid(x, j, 1) = "6" Or _
            Mid(x, j, 1) = "7" Or _
            Mid(x, j, 1) = "8" Or _
            Mid(x, j, 1) = "9" Then

        temp = temp + Mid(x, j, 1)
    End If
Next
Numeros = temp
SóNumeros = temp
End Function
'Para Chamar a Funcao !
'If Fu_consistir_CgcCpf(MskCPF) = False Then
'    MsgBox "Cpf Informado não é valido", 64
'    TxtCPF.SetFocus
'    Exit Sub
'Else
'    MskCPF.Text = Formato
'End If
'End Sub

'Utilizo em meus sistemas essa rotina e funciona muito bem :)
'Até Mais

 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página