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
- Clique com o botão direito do mouse no campo e selecione a opção Formatar células;
- Em formatar células clique em Personalizado;
- Na caixa Tipo digite a seguinte máscara: [<=99999999999]000\.000\.000-00;00\.000\.000\/0000-00
- Vamos agora inserir o código VBA – módulo CPF, pressionando a combinação de teclas ALT+F11
- Copie e cole o código abaixo, Salve e feche o editor VBA.
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:
Na célula H11 digite um CPF válido; Selecione a célula I11; Na caixa Ou Selecione uma categoria clique na opção Definido pelo usuário; Veja que logo abaixo será mostrado o nome da função CPF gravada anteriormente; Clique em OK. Será mostrada a caixa de diálogo Argumentos da Função; Clique na célula H11. Veja que o endereço H11 será colado no campo XCPF; Clique mais uma vez em OK; Veja que o texto “CPF válido” será gravado na célula I11. Digite na célula H11 um CPF errado e pressione ENTER. Na célula I11 vai aparecer agora a seguinte mensagem: “CPF inválido, Redigite”
Opcionalmente você pode gravar uma macro para efetuar todas essas ações e adioná-la a um botão de comando.
Método 2:
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))) 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; Se o valor digitado possuir 13 dígitos numéricos a mensagem afirma que se trata de um CNPJ; 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
Postar um comentário