Validando CPF - módulo VBA

Este post detalha os passos para a validação de um campo CPF numa planilha do Excel, desenvolvido na  linguagem VBA. Apliquei este script  em um projeto recente que fiz para uma empresa e garanto que está funcional, acrescento que é sempre interessante aplicar esta validação a fim de evitar que possíveis erros de digitação em suas planilhas apresentem valores inválidos.

Bem, vamos lá: o primeiro passo para dar inicio  ao processo é a formatação do respectivo campo, conforme segue abaixo:

CRIANDO  A FUNÇÃO  CPF

  1. Clique com o botão direito do mouse no  campo e selecione a opção Formatar células;
  2. Em formatar células clique em Personalizado;
  3. Na caixa Tipo digite a seguinte máscara: [<=99999999999]000\.000\.000-00;00\.000\.000\/0000-00
  4. Clique em OK, conforme mostra a  figura abaixo.5
  5. Vamos agora inserir o código VBA – módulo CPF, pressionando  a combinação de teclas ALT+F11
  6. Copie e  cole o  código  abaixo,  Salve e  feche o editor VBA.

4

 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, Redigite"
                    End If

End Function

COMO CHAMAR A  FUNÇÃO CPF

Vou explicar duas formas para fazer funcionar o módulo acima quando da digitação de um CPF no respectivo campo. Vamos partir do princípio de que a célula que será digitada o cpf será H11 e a célula I11 receberá uma mensagem de validação.

Método 1:

  1. Na célula H11 digite um CPF válido;
  2. Selecione a célula I11;
  3. Clique na  ferramenta Inserir Função;6
  4. Na caixa Ou Selecione uma categoria clique na opção Definido pelo usuário;
  5. Veja que logo abaixo será mostrado o nome da função CPF gravada anteriormente;
  6. Clique em OK. Será mostrada a caixa de diálogo Argumentos da Função;
  7. Clique na célula H11. Veja que o endereço H11 será colado no campo XCPF;
  8. Clique mais uma vez em OK;
  9. Veja que o texto “CPF válido” será gravado na célula I11.
  10. Digite na célula H11 um CPF errado e pressione ENTER.
  11. Na célula I11 vai aparecer agora a seguinte mensagem: “CPF inválido, Redigite”
  12. Pronto, é isso. 23

Opcionalmente você pode gravar uma macro para efetuar todas essas ações e adioná-la a um botão de comando.

Método 2:

  1. Na célula I11 digite a seguinte fórmula: SE(H11="";"informar o CPF";SE(NÚM.CARACT(H11)=13;"O valor digitado é um CNPJ";CPF(H11)))
  2. Esse é um método mais simples e mais rápido, veja que na fórmula quando o campo H11 está vazio aparece a mensagem informando que deve ser digitado um CPF;
  3. Se o valor digitado possuir 13 dígitos numéricos a mensagem afirma que se trata de um CNPJ;
  4. Caso contrário  será executado a chamada da função CPF que fará o teste de validação.

É isso, espero  ter ajudado.

Valter Neves

Comentários

Postagens mais visitadas