Este assunto é extremamente amplo,
as necessidades são muitas e você pode usar a criatividade para validar
praticamente qualquer coisa.
No nosso caso, vamos aproveitar o
formulário que estamos criando e incrementá-lo para fazer a validação do CPF.
Insira este novo campo.
Já fizemos
este código no item 10.3 do nosso curso, agora vamos apenas adapta-lo ao nosso
formulário. Very Easy!!!
Private Sub Cb_Salvar_Click()
Success =
CPF(Replace(Replace(Txt_CPF, ".", ""), "-",
"")) 'uso Sucess porque
a função precisa retornar algum valor
'o Replace é usado é usado para tirar o
ponto e o hífem
If Success = "Invalido" Then:
Exit Sub 'se não for um CPF
válido, sai da rotina
Salva_Reg
Limpa_Reg
End Sub
Observe que
em vermelho, fizemos uma chamada para a função CPF, que está abaixo:
Agora,
veja a função. Observe que tá tudo explicadinho nos mínimos detalhas. Mas se
houver alguma dúvida, você pode consultar o item 10.3.
Function CPF(NUMEROCPF As String) As
String 'EXCELECIA.BLOGSPOT.COM
'Declaramos as variáveis S1 e S2 para
receberem a soma. A variável QD, ficará com o número de digitos do CPF. A
variável I será o contador.
'A variável D, receberá o DV calculado. As
variáveis R1 e R2, receberão o resto das divisões. Finalmente, DV1 e DV2,
receberão os dígitos calculados.
Dim S1, S2, QD, I, D As Integer
Dim R1, R2 As Integer
Dim DV1, DV2 As Integer '
SOMA1 = 0 'Inicializamos as somas como
zero.
SOMA2 = 0
QD = 11 'A quantidade de digitos de um CPF
é 11.
'Criamos um LOOP que será executado 11
vezes
For I = 1 To 11 Step 1
'D absorverá cada digito do CPF. A cada
giro do loop, ele será um número diferente, sendo um de cada vez
D = Val(Mid$(NUMEROCPF, I, 1))
'Para calcularmos o 1º DV, precisamos
vazer o calculo como explicado no capítulo. Repare que as duas somas são
realizadas de uma só vez.
If I <= 9 Then
S1 = S1 + D * (QD - 1)
End If
If I <= 10 Then
S2 = S2 + D * QD
End If
'Precisamos decrementar esta variável
para que os números possam decrescer.
QD = QD - 1
Next
'Agora é só descobrir o resto da divisão
para usarmos a regra e encontrar os DVs.
R1 = S1 Mod 11
If (R1 <= 1) Then
DV1 = 0
Else
DV1 = 11 - R1
End
If
R2 = S2 Mod 11
If (R2 <= 1) Then
DV2 = 0
Else
DV2 = 11 - R2
End If
'Se tanto o DV1, com o DV2 forem
diferentes do digito 10 e 11 respectivamente do CPF analisado,o mesmo será
invalido, do contrário, válido! Pronto,está feito.
If (DV1 <> Val(Mid$(NUMEROCPF, 10, 1))) Or (DV2 <>
Val(Mid$(NUMEROCPF, 11, 1))) Then
CPF =
"Invalido"
Else
CPF = "Valido"
End If
If CPF = "Invalido" Then
'Txt_CPF = ""
Txt_CPF.SetFocus
End If
End
Function
Após o
usuário digitar o número do CPF e clicar em salvar, a função verificará se
trata-se de um CPF válido. Caso positivo, a informação será salva, do
contrário, uma mensagem será exibida, exigindo a digitação de um número válido.
Fácil demais.
Nenhum comentário:
Postar um comentário