120 Lições | Gratuito Online | Autor: Júlio Battisti
Nessa lição vamos criar a função ValidaCPF. Essa função recebe, como parâmetro, um valor de CPF no formato 111.111.111-11 ou o endereço de uma célula que contém um CPF nesse formato. A função retorna a palavra Válido se o CPF for Válido e Inválido se o CPF for inválido.
Para criar uma função que possa ser utilizada na planilha, devemos criar a função dentro de um Módulo do VBA. Criaremos a função ValidaCPF, dentro do Módulo1 da planilha Números de CPF.xls, a qual está na pasta C:\ExcelAvancado.
Criar a função chamada ValidaCPF, no Módulo 1 da planilha Números de CPF. Em seguida utilizar essa função para verificar se os CPFs da planilha são ou não válidos.
Public Function ValidaCPF()
End Function
Public Function ValidaCPF(CPF As String) As String
End Function
Observe que o "As String" dentro do parênteses, define que o parâmetro CPF é do tipo texto. Já o "As String" fora do parênteses, define o tipo da função, isto é, a função irá retornar um valor do tipo Texto.
Nota: Cada comando do VBA deve ser digitado em uma única linha. Se você precisa "quebrar" uma linha, deve ser colocado um caractere de sublinhado no final da linha: _
Public Function ValidaCPF(CPF As String) As String
'Função para cálculo do dígito verificador do CPF
'Iniciamos a função declarando as variáveis que serão utilizadas
' As variáveis d1 até d11, conterão os dígitos individuais
' do CPF. Por exemplo, ao digitar o CPF: 123.456.789-11, essas
' variáveis conterão os seguintes valores:
' d1=1 d2=2 d3=3 d4=4 d5=5 d6=5 d7=7 d8=8 d9=9 d10=1 d11=1
Dim d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11 As Integer
' As demais variáveis que serão utilizadas para o cálculo do DV
Dim Soma1, Soma2, Resto As Integer
Dim Resto1, Resto2 As Integer
Dim DV1, DV2 As Integer
' Em primeiro lugar testo se a célula com o CPF contém um valor
' válido, isto é, um valor Não Nulo.
If Not (IsNull(CPF)) Then
'*************************************************************************
' Os comandos a seguir desmembram o CPF um a um , atribuindo os valores *
' de d1 ... d11 , usando as funções Mid$ e Val *
' Como o CPF está no formato de Texto, vamos extrair os dígitos do CPF *
' um a um, converter o respectivo valor de texto para número e atribuir *
' esse valor para as variáveis d1 até d11. *
'*************************************************************************
d1 = Val(Mid$(CPF, 1, 1))
d2 = Val(Mid$(CPF, 2, 1))
d3 = Val(Mid$(CPF, 3, 1))
d4 = Val(Mid$(CPF, 5, 1))
d5 = Val(Mid$(CPF, 6, 1))
d6 = Val(Mid$(CPF, 7, 1))
d7 = Val(Mid$(CPF, 9, 1))
d8 = Val(Mid$(CPF, 10, 1))
d9 = Val(Mid$(CPF, 11, 1))
d10 = Val(Mid$(CPF, 13, 1))
d11 = Val(Mid$(CPF, 14, 1))
'*************************************************************************
' A partir de agora passo a utilizar os valores anteriores para cálculo *
' do dígito verificador do CPF *
'*************************************************************************
' Cálculo do primeiro DV
Soma1 =((d1*10)+(d2*9)+(d3*8)+(d4*7)+(d5*6)+(d6*5)+(d7*4)+(d8*3)+(d9*2))
Resto1 = (Soma1 Mod 11)
If (Resto1 <= 1) Then
DV1 = 0
Else
DV1 = 11 - Resto1
End If
' Agora inicio o cálculo do segundo DV, já incorporando
' o segundo DV como parte do CPF, para o cálculo.
Soma2=(d1*11)+(d2*10)+(d3*9)+(d4*8)+(d5*7)+(d6*6)+(d7*5)+(d8*4)+(d9*3)+(DV1* 2)
Resto2 = (Soma2 Mod 11)
If (Resto2 <= 1) Then
DV2 = 0
Else
DV2 = 11 - Resto2
End If
' Agora faço o teste para saber se os DVs calculados (DV1 e DV2)
' conferem com os DVs do CPF - d10 e d11
If ((DV1 <> d10) Or (DV2 <> d11)) Then
' Atribuo a palavra "Inválido" para uma variável com o mesmo
' nome da função - ValidaCPF.
' Essa é a maneira de fazer com que a função retorne um valor,
' ou seja, atribuindo o valor a ser retornado, à uma variável
' com o mesmo nome da função.
ValidaCPF = "Inválido"
Else
' Atribuo a palavra "Válido" para uma variável com o mesmo
' nome da função - ValidaCPF.
' Essa é a maneira de fazer com que a função retorne um valor,
' ou seja, atribuindo o valor a ser retornado, à uma variável
' com o mesmo nome da função.
ValidaCPF = "Válido"
End If
End If
End Function
VOCÊ CONHECE A UNIVERSIDADE DO EXCEL? |
UNIVERSIDADE PRÁTICA DO EXCEL - Domine o Excel, do Básico até a Criação de Planilhas Profissionais com Excel e VBA! Aplica-se ao Excel 2019, 2016, 2013 e 2010! |
22 Cursos - 925 Vídeo-Aulas - 120:42 horas - Só R$ 97,00 |
Para Todos os Detalhes, Acesse: |