O Gerador De CPF O Gerador De CPF

Função para Validar CPF no Excel (VBA)

Função VBA para validar CPF direto no Excel usando o algoritmo de módulo 11. Funciona como fórmula nativa — basta referenciar uma célula com =lfValidaCPF(A1).

Código

'Função que valida CPF
Public Function lfValidaCPF(ByVal lNumCPF As String) As Boolean
    Application.Volatile

    Dim lMultiplicador  As Integer
    Dim lDv1            As Integer
    Dim lDv2            As Integer

    lMultiplicador = 2

    'Realiza o preenchimento dos zeros à esquerda
    lNumCPF = String(11 - Len(lNumCPF), "0") & lNumCPF

    'Realiza o cálculo do dividendo para o dv1 e o dv2
    For i = 9 To 1 Step -1
        lDv1 = (Mid(lNumCPF, i, 1) * lMultiplicador) + lDv1

        lDv2 = (Mid(lNumCPF, i, 1) * (lMultiplicador + 1)) + lDv2

        lMultiplicador = lMultiplicador + 1
    Next

    'Realiza o cálculo para chegar no primeiro dígito
    lDv1 = lDv1 Mod 11

    If lDv1 >= 2 Then
        lDv1 = 11 - lDv1
    Else
        lDv1 = 0
    End If

    'Realiza o cálculo para chegar no segundo dígito
    lDv2 = lDv2 + (lDv1 * 2)

    lDv2 = lDv2 Mod 11

    If lDv2 >= 2 Then
        lDv2 = 11 - lDv2
    Else
        lDv2 = 0
    End If

    'Realiza a validação e retorna na função
    If Right(lNumCPF, 2) = CStr(lDv1) & CStr(lDv2) Then
        lfValidaCPF = True
    Else
        lfValidaCPF = False
    End If
End Function

Análise do código

String(11 - Len(lNumCPF), "0") & lNumCPF faz o padding com zeros à esquerda caso o CPF tenha menos de 11 caracteres (ex: CPFs que começam com 0).

O loop For i = 9 To 1 Step -1 percorre os 9 primeiros dígitos de trás pra frente, acumulando simultaneamente as somas ponderadas para ambos os dígitos verificadores. lDv1 usa pesos de 2 a 10, lDv2 usa pesos de 3 a 11 (multiplicador + 1).

Após o loop, cada soma passa por Mod 11 com a regra: resto >= 2 → 11 - resto, senão → 0. Para o segundo dígito, soma-se lDv1 * 2 antes do módulo (incorporando o primeiro verificador no cálculo).

Right(lNumCPF, 2) compara os dois últimos dígitos com os calculados.

Uso no Excel

  1. Abra o editor VBA: Alt+F11
  2. Insira um novo módulo: Inserir > Módulo
  3. Cole o código acima
  4. Use como fórmula:
=lfValidaCPF(A1)

Retorna TRUE para CPFs válidos, FALSE para inválidos.

Testes

Sub de teste para validar no editor VBA (F5):

Sub TestValidaCPF()
    ' Testa CPF válido
    Debug.Assert lfValidaCPF("52998224725") = True

    ' Testa CPF válido com zeros à esquerda
    Debug.Assert lfValidaCPF("03827793637") = True

    ' Testa CPF com dígitos repetidos (inválido)
    Debug.Assert lfValidaCPF("11111111111") = False

    ' Testa CPF com dígito verificador incorreto
    Debug.Assert lfValidaCPF("52998224726") = False

    MsgBox "Todos os testes passaram!"
End Sub

Para gerar CPFs válidos e preencher a planilha de teste, use o gerador de CPF online.