Olá bruno,
Qualquer um daqueles aplicativos possue um código que faz tanto uma coisa quanto outra ou ambos. Tente adaptar para sua necessidade:
Veja como eu fiz para calcular o DV do CPF:
Public Function VerificaCPF(sCPF As Variant) As Boolean
Dim Dig1, Dig2, Dig3, Dig4, Dig5, Dig6, Dig7, Dig8, Dig9, Dig10, Dig11 As Long
Dim Soma, Soma1, DigVer1 As Integer, DigVer2 As Integer
Dim chkExibirDigitos As Boolean
Dim strMsg As String
Dim txtMatricula As String
Dim Total, Total1 As Integer
sCPF = Format(sCPF, "00000000000")
'Cálculo do primeiro dígito verificador
'DigVer1 = Right(sCPF, 2)
'Multiplica-se cada dígito da cadeia pelo coeficiente decrescente
Dig1 = Mid(sCPF, 1, 1) * 10
Dig2 = Mid(sCPF, 2, 1) * 9
Dig3 = Mid(sCPF, 3, 1) * 8
Dig4 = Mid(sCPF, 4, 1) * 7
Dig5 = Mid(sCPF, 5, 1) * 6
Dig6 = Mid(sCPF, 6, 1) * 5
Dig7 = Mid(sCPF, 7, 1) * 4
Dig8 = Mid(sCPF, 8, 1) * 3
Dig9 = Mid(sCPF, 9, 1) * 2
Soma = Dig1 + Dig2 + Dig3 + Dig4 + Dig5 + Dig6 + Dig7 + Dig8 + Dig9
Soma1 = Soma Mod 11
If Soma1 < 2 Then
DigVer1 = 0
Else
DigVer1 = 11 - Soma1
End If
'Cálculo do segundo dígito verificador
'DigVer2 = Right(sCPF, 1)
Dig1 = Mid(sCPF, 1, 1) * 11
Dig2 = Mid(sCPF, 2, 1) * 10
Dig3 = Mid(sCPF, 3, 1) * 9
Dig4 = Mid(sCPF, 4, 1) * 8
Dig5 = Mid(sCPF, 5, 1) * 7
Dig6 = Mid(sCPF, 6, 1) * 6
Dig7 = Mid(sCPF, 7, 1) * 5
Dig8 = Mid(sCPF, 8, 1) * 4
Dig9 = Mid(sCPF, 9, 1) * 3
Dig10 = Mid(sCPF, 10, 1) * 2
Total = Dig1 + Dig2 + Dig3 + Dig4 + Dig5 + Dig6 + Dig7 + Dig8 + Dig9 + Dig10
Total1 = Total Mod 11
If Total1 < 2 Then
DigVer2 = 0
Else
DigVer2 = 11 - Total1
End If
If Not IsNull(Forms!VerificaCPFeCNPJ!txtCPF.Text) And DigVer1 = Mid(sCPF, 10, 1) And DigVer2 = Mid(sCPF, 11, 1) Then 'Se o campo txtCPF(caixa de texto) não estiver nulo e o primeiro dígito verificador identificado for igual ao penúltimo dígito da cadeia e o segundo dígito verificador for igual ao último dígito da cadeia
MsgBox "CPF válido!", vbInformation, "Validar CPF"
Else
MsgBox "CPF inválido!", vbCritical, "Validar CPF"
If (Forms!VerificaCPFeCNPJ!chkExibirDigitos) Then
strMsg = strMsg & vbCrLf & vbCrLf
strMsg = strMsg & "(Para o CPF " & Forms!VerificaCPFeCNPJ!txtCPF.Text
strMsg = strMsg & " o primeiro dígito verificador correto é " & DigVer1 & ","
strMsg = strMsg & " o segundo dígito verificador correto é " & DigVer2 & ")"
End If
MsgBox strMsg, vbQuestion, "DV de CPF?"
End If
DoCmd.CancelEvent
End Function
Private Sub txtCPF_BeforeUpdate(Cancel As Integer)
On Error Resume Next
Dim nCPF As String
If IsNull(Me.txtCPF.Text) Or IsEmpty(Me.txtCPF.Text) Then
MsgBox ("Campo em Branco. Digite um CPF válido"), vbInformation
Else
nCPF = Format(txtCPF, "00000000000") 'Formata o CPF sem o hífen com máscara de entrada igual que limita a digitação a 11(onze) dígitos.
Call VerificaCPF(nCPF) 'nCPF é o nosso CPF variável digitado usado como parâmetro por referência a variável nCPF da função
'VerificaCPF(sCPF As Variant)
End If
End Sub