text ValidaçãodeCPF em VBA - VBA中的CPF验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text ValidaçãodeCPF em VBA - VBA中的CPF验证相关的知识,希望对你有一定的参考价值。

Option Explicit

Public Function fxValidarCPF(ByVal CPF As String) As Boolean

    'Declaração de variáveis utilizadas na função de validação
    Dim arrDigits(1 To 11) As Byte, digtVer1 As Byte, digtVer2 As Byte, i As Byte
    Dim sum1 As Integer, sum2 As Integer
    Dim tmp As String
    
    'Retira todos caracteres que não são números do valor passado
    For i = 1 To Len(CPF)
        If Mid(CPF, i, 1) Like "[0-9]" Then tmp = tmp & Mid(CPF, i, 1)
    Next i
    
    'Se houver + de 11 números, termina a função com valor FALSE
    If Len(CPF) > 11 Then Exit Function
    
    'Se houver - de 11 números, inser 0 'zeros' a frente do valor até
    'completar 11 números
    For i = 1 To (11 - Len(CPF))
        CPF = "0" & CPF
    Next i
    
    'Verifica se o valor passado não é um valor repetido
    'como 00000000000, 11111111111, 22222222222, etc...
    'Estes valores retornam VERDADEIRO na validação
    'mas não existem para a Receita Federal
    For i = 0 To 9
        If CPF = Application.WorksheetFunction.Rept(i, 11) Then Exit Function
    Next i
    
    'Armazena cada numero passado para uma matriz (Array)
    For i = LBound(arrDigits) To UBound(arrDigits)
        arrDigits(i) = CByte(Mid(CPF, i, 1))
    Next i
    
    'Armazena a soma dos números nas variáveis sum1 e sum2
    For i = 1 To 10
        If i < 10 Then sum1 = sum1 + (arrDigits(i) * i)
        If i > 1 Then sum2 = sum2 + (arrDigits(i) * (i - 1))
    Next i
    
    'Verifica o MOD dos valores de sum1 e sum2 e adiciona
    'o resultado nas variáveis digtVer1 e digtVer2
    If sum1 Mod 11 = 10 Then digtVer1 = 0 Else digtVer1 = sum1 Mod 11
    If sum2 Mod 11 = 10 Then digtVer2 = 0 Else digtVer2 = sum2 Mod 11
    
    'Verifica se o valor de digtVer1 é igual ao 10º número do CPF
    'e se o valor de digtVer2 é igual ao 11º número do CPF
    'Caso positivo, a função retorna que o número de CPF passado é VERDADEIRO
    'Caso contrário, a função retorna FALSO
    If digtVer1 = arrDigits(10) And digtVer2 = arrDigits(11) Then fxValidarCPF = True
    
End Function

以上是关于text ValidaçãodeCPF em VBA - VBA中的CPF验证的主要内容,如果未能解决你的问题,请参考以下文章

html Máscara和ValidaçãoparaCPF e CNPJ no mesmo campo

text iniciaraplicação

text RecibosparaintegraçãoEBS

text Paginação.txt

text Associaçãodedois tipos没有graphql

text Mascara de dataevalidaçãode数据