篇首语:本文由小常识网(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验证的主要内容,如果未能解决你的问题,请参考以下文章