Public Function CPF(xCPF As String) As String Dim d1 As Integer Dim d2 As Integer Dim d3 As Integer Dim d4 As Integer Dim d5 As Integer Dim d6 As Integer Dim d7 As Integer Dim d8 As Integer Dim d9 As Integer Dim d10 As Integer Dim d11 As Integer Dim digito_1 As Integer Dim digito_2 As Integer Dim UltDig As Integer Dim sxCPF As String sxCPF = Right("00000000000" + Trim(xCPF), 11) If Len(sxCPF) < 11 Then sxCPF = String(11 - Len(sxCPF), "0") & sxCPF End If UltDig = Len(sxCPF) If sxCPF = "00000000000" Then CPF = "" Exit Function End If d1 = CInt(Mid(sxCPF, UltDig - 10, 1)) d2 = CInt(Mid(sxCPF, UltDig - 9, 1)) d3 = CInt(Mid(sxCPF, UltDig - 8, 1)) d4 = CInt(Mid(sxCPF, UltDig - 7, 1)) d5 = CInt(Mid(sxCPF, UltDig - 6, 1)) d6 = CInt(Mid(sxCPF, UltDig - 5, 1)) d7 = CInt(Mid(sxCPF, UltDig - 4, 1)) d8 = CInt(Mid(sxCPF, UltDig - 3, 1)) d9 = CInt(Mid(sxCPF, UltDig - 2, 1)) d10 = CInt(Mid(sxCPF, UltDig - 1, 1)) d11 = CInt(Mid(sxCPF, UltDig, 1)) digito_1 = d1 + (d2 * 2) + (d3 * 3) + (d4 * 4) + (d5 * 5) + (d6 * 6) + (d7 * 7) + (d8 * 8) + (d9 * 9) digito_1 = digito_1 Mod 11 xdigito_1 = digito_1 If digito_1 = 10 Then xdigito_1 = 0 End If digito_2 = d2 + (d3 * 2) + (d4 * 3) + (d5 * 4) + (d6 * 5) + (d7 * 6) + (d8 * 7) + (d9 * 8) + (xdigito_1 * 9) digito_2 = digito_2 Mod 11 xdigito_2 = digito_2 If digito_2 = 10 Then xdigito_2 = 0 End If If d10 = xdigito_1 And d11 = xdigito_2 Then CPF = "CPF Válido" Else CPF = "CPF Inválido" End If End Function