NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Quer Receber Novidades e E-books Gratuitos de Excel? * Junte-se a mais de 103.000 pessoas!

Curso Grátis de Excel Avançado - Módulo 6 - Lição: Calculando o DV do CPF - Criando a Função

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.

Exercício:

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.

  1. 1. Abra o Excel.
  2. 2. Abra a planilha C:\ExcelAvancado\Números de CPF.xls.
  3. 3. Selecione o comando Ferramentas -> Macro -> Editor Visual Basic...
  4. 4. Vamos criar a função ValidaCPF de tal maneira que ele possa ser utilizada em qualquer local da planilha. Para isso vamos cria-la como uma função Pública, dentro de um módulo do VBA.
  5. 5. Para inserir um módulo, selecione o comando Inserir -> Módulo . Será criado o Módulo 1. Agora vamos inserir uma função, dentro desse módulo.
  6. 6. Selecione o comando Inserir -> Procedimento.
  7. 7. Será aberta a janela Adicionar procedimento. Preencha os dados conforme indicado na Figura a seguir:

Excel Avançado em 120 Lições - Júlio Battisti

  1. 8. Clique em OK.
  2. 9. Será inserido o código básico para a criação de uma função pública (que pode ser utilizada em qualquer parte da planilha), conforme indicado a seguir:
Public Function ValidaCPF()
End Function
  1. 10. A função ValidaCPF deverá receber um parâmetro: o número do CPF no formato 111.111.111-11. A definição dos parâmetros que serão recebidos pela função é feito dentro dos parênteses. Fora dos parênteses, definimos o tipo da função, isto é, que tipo de valor a função irá retornar: inteiro, real, texto, data, etc. No nosso exemplo a função retornará um valor do tipo Texto: Válido ou Inválido. Altere o código para definir o parâmetro a ser recebido e o tipo da função, conforme indicado a seguir:
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.

  1. 11. Agora vamos digitar o código de validação do CPF. Esse código é digitado entre os comandos " Public Function ValidaCPF(CPF As String) As String" e "End Function".

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: _

  1. 12. Digite o código da listagem a seguir:
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
  1. 13. Clique no botão ( Excel Avançado em 120 Lições - Júlio Battisti ) para salvar a função ValidaCPF.
  2. 14. Feche a janela do Editor do Visual Basic.
  3. 15. Você estará de volta à planilha Números de CPF. a Próxima lição aprenderemos a utilizar a função ValidaCPF para verificar se os CPFs da planilha são válidos ou não.
  4. 16. Salve e feche a planilha.

[LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI