Ir ao conteúdo

Posts recomendados

Postado

Segue sugestào em vba.

Cole o codigo abaixo no modulo da respectiva aba. Ao digitar um numero de cpf na coluna A a macro verifica e converte no formato CPF.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column <> 1 Or _
     Target.Count > 1 Then Exit Sub
   
     Target.NumberFormat = "General"
     Target.Interior.ColorIndex = xlNone
   numCPF = Target.Value
   numCPF = VBA.Replace(numCPF, ".", "")
   numCPF = VBA.Replace(numCPF, "-", "")
   
   If VBA.Val(numCPF) = 0 Or validaCPF(numCPF) <> "OK" Then
   Target.Interior.ColorIndex = 3
      Exit Sub
   Else
      Target.Value = VBA.Left(numCPF, 3) & "." & _
                     VBA.Mid(numCPF, 4, 3) & "." & _
                     VBA.Mid(numCPF, 7, 3) & "-" & _
                     VBA.Right(numCPF, 2)
   End If
   
End Sub

E em um modulo padrão, a funcao que verifica se o cpf é valido.

Function validaCPF(numCPF)
   If VBA.Len(numCPF) < 11 Then numCPF = VBA.String(11 - VBA.Len(numCPF), "0") & numCPF
   For caracter = 1 To 9
        DV1 = VBA.Val(Vba.Mid(numCPF, caracter, 1)) * caracter + DV1
        If caracter > 1 Then DV2 = VBA.Val(Mid(numCPF, caracter, 1)) * (caracter - 1) + DV2
   Next
   DV1 = VBA.Right(DV1 Mod 11, 1)
   DV2 = VBA.Right((DV2 + (DV1 * 9)) Mod 11, 1)
   If VBA.Mid(numCPF, 10, 1) = DV1 And VBA.Mid(numCPF, 11, 1) = DV2 Then validaCPF = "OK"
End Function

  fonte da funcao valida...: http://twixar.me/tPbT  

  • Curtir 1
Postado
Em 17/12/2019 às 23:53, Basole disse:

Segue sugestào em vba.

Cole o codigo abaixo no modulo da respectiva aba. Ao digitar um numero de cpf na coluna A a macro verifica e converte no formato CPF.


Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column <> 1 Or _
     Target.Count > 1 Then Exit Sub
   
     Target.NumberFormat = "General"
     Target.Interior.ColorIndex = xlNone
   numCPF = Target.Value
   numCPF = VBA.Replace(numCPF, ".", "")
   numCPF = VBA.Replace(numCPF, "-", "")
   
   If VBA.Val(numCPF) = 0 Or validaCPF(numCPF) <> "OK" Then
   Target.Interior.ColorIndex = 3
      Exit Sub
   Else
      Target.Value = VBA.Left(numCPF, 3) & "." & _
                     VBA.Mid(numCPF, 4, 3) & "." & _
                     VBA.Mid(numCPF, 7, 3) & "-" & _
                     VBA.Right(numCPF, 2)
   End If
   
End Sub

E em um modulo padrão, a funcao que verifica se o cpf é valido.


Function validaCPF(numCPF)
   If VBA.Len(numCPF) < 11 Then numCPF = VBA.String(11 - VBA.Len(numCPF), "0") & numCPF
   For caracter = 1 To 9
        DV1 = VBA.Val(Vba.Mid(numCPF, caracter, 1)) * caracter + DV1
        If caracter > 1 Then DV2 = VBA.Val(Mid(numCPF, caracter, 1)) * (caracter - 1) + DV2
   Next
   DV1 = VBA.Right(DV1 Mod 11, 1)
   DV2 = VBA.Right((DV2 + (DV1 * 9)) Mod 11, 1)
   If VBA.Mid(numCPF, 10, 1) = DV1 And VBA.Mid(numCPF, 11, 1) = DV2 Then validaCPF = "OK"
End Function

  fonte da funcao valida...: http://twixar.me/tPbT  

 

adicionado 1 minuto depois
Em 17/12/2019 às 23:53, Basole disse:

Segue sugestào em vba.

Cole o codigo abaixo no modulo da respectiva aba. Ao digitar um numero de cpf na coluna A a macro verifica e converte no formato CPF.


Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column <> 1 Or _
     Target.Count > 1 Then Exit Sub
   
     Target.NumberFormat = "General"
     Target.Interior.ColorIndex = xlNone
   numCPF = Target.Value
   numCPF = VBA.Replace(numCPF, ".", "")
   numCPF = VBA.Replace(numCPF, "-", "")
   
   If VBA.Val(numCPF) = 0 Or validaCPF(numCPF) <> "OK" Then
   Target.Interior.ColorIndex = 3
      Exit Sub
   Else
      Target.Value = VBA.Left(numCPF, 3) & "." & _
                     VBA.Mid(numCPF, 4, 3) & "." & _
                     VBA.Mid(numCPF, 7, 3) & "-" & _
                     VBA.Right(numCPF, 2)
   End If
   
End Sub

E em um modulo padrão, a funcao que verifica se o cpf é valido.


Function validaCPF(numCPF)
   If VBA.Len(numCPF) < 11 Then numCPF = VBA.String(11 - VBA.Len(numCPF), "0") & numCPF
   For caracter = 1 To 9
        DV1 = VBA.Val(Vba.Mid(numCPF, caracter, 1)) * caracter + DV1
        If caracter > 1 Then DV2 = VBA.Val(Mid(numCPF, caracter, 1)) * (caracter - 1) + DV2
   Next
   DV1 = VBA.Right(DV1 Mod 11, 1)
   DV2 = VBA.Right((DV2 + (DV1 * 9)) Mod 11, 1)
   If VBA.Mid(numCPF, 10, 1) = DV1 And VBA.Mid(numCPF, 11, 1) = DV2 Then validaCPF = "OK"
End Function

  fonte da funcao valida...: http://twixar.me/tPbT  

Obrigado, vou testar !

adicionado 1 minuto depois

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!