Notifications
Clear all

Validar CNPJ e CPF na mesma célula

7 Posts
3 Usuários
0 Reactions
2,376 Visualizações
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Olá

Baixei essa planilha na net e estou tentando modifica-lá para atender minha necessidade.
Seria possível validar CNPJ e CPF na mesma célula na planilha "PRETENDIDO".
pela minha linha de raciocínio funcionou até o CNPJ, no CPF me perdi. Teria como acrescentar o CPF também. Ou deve ser feito de outro jeito?

:oops:

 
Postado : 30/09/2016 9:23 am
(@xandrinho)
Posts: 0
Estimable Member
 

Boa Tarde!!!
Se a sua intenção é colocar Mascara (Separadores) tanto para CNPJ qto para CPF, segue anexo.
Desta forma qualquer CNPJ/CPJ digitado no Range: “B”. Assume a mascara.

Abraços.

 
Postado : 30/09/2016 10:16 am
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

A máscara é só na "B12" mesmo, e já está feita.

Quando eu cito "VALIDAÇÃO", é a validação do CNPJ ou CPF se eles existem mesmo. Já está tudo funcionando conforme código no Módulo1 e na planilha "PRETENDIDO".

Queria saber se é possível fazer na mesma célula "B12" ( digitar tanto o CNPJ e CPF )

A planilha original está na planilha "ORIGINAL".

:cry:

 
Postado : 30/09/2016 10:34 am
Basole
(@basole)
Posts: 487
Reputable Member
 

Sgue exemplo, considerando a celula B12 da aba Original:
Alterei considerando as condiçoes abaixo:
CNPJ: 14 posições
CPF: 11 posições
Entao se o usuario inserir 14 digitos procura o cnpj, caso contrario o cpf.
Substitua este codigo na aba original:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Dig, Nvar
  
    If Target.Address = Range("B12").Address Then
        If IsNumeric(Range("B12")) Then  'se não preencher o campo ignora

            If Len(Range("B12")) > 11 And Len(Range("B12")) <= 14 Then
                Dig = Right(Format(Range("B12"), "00000000000000"), 2)
                Nvar = Módulo1.DVCNPJ(Format(Range("B12"), "00000000000000"))
                If Dig = Nvar Then
                Else
                    Range("B12") = "CNPJ INVÁLIDO"
                End If

            Else
                If IsNumeric(Range("B12")) Then  'se não preencher o campo ignora
                    Dig = Right(Format(Range("B12"), "00000000000"), 2)
                    Nvar = Módulo1.DVCPF(Format(Range("B12"), "00000000000"))
                    If Dig = Nvar Then
                    Else
                        Range("B12") = "CPF INVÁLIDO"
                    End If
                                   
              End If
            End If
            
        End If
    End If
End Sub

Click em se a resposta foi util!

 
Postado : 30/09/2016 12:02 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Perfeito Basole!
Agradeço mais uma vez :mrgreen:

Só uma coisa a mais.... se eu teclar delete na célula "B12" dá erro "intMais = intNumero * i" em "Function DVCPF(Cpf As String) As String" no Módulo.1.

É pelo motivo de ele só aceitar numeração? não entendi essa parte. É possível contornar isso?

Estou preocupado pois, o usuário é mais leigo do que eu. :lol: Vai que ele tecle delete ai.... :o

 
Postado : 30/09/2016 1:22 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Acrescente essas duas linhas no inicio do codigo que postei :
Para tratar essa situação e que atenderá a condição se a celula B12 estiver vazia.
Ou se for selecionada duas celuas.

   If Target.Count > 1 Then Exit Sub
  If Target.Value = Empty Then Exit Sub 

Click em se a resposta foi util!

 
Postado : 30/09/2016 1:55 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Funcionou perfeitamente!
Agradeço mais uma vez.
Um ótimo final de semana. :mrgreen:

 
Postado : 01/10/2016 4:52 am