Ir ao conteúdo

Excel Impedir duplicidade no cadastro excel vba


Ir à solução Resolvido por Edson Luiz Branco,

Posts recomendados

Postado

Olá, estou tentando fazer um código para não permitir duplicidade de nome e de CPF na base de dados de cadastros.

A parte de evitar duplicidade do nome está funcionando, já a do CPF não. Alguém saberia me dizer o motivo? Segue código e plan em anexo

Sheets("cadastro").Activate
L = Range("b4").End(xlDown).Row + 1
    lin = 2
    While lin < L
       If Cells(lin, 2) = TextBoxNOME.Value Then 'verificar duplicidade nome
            MsgBox "Este nome já está cadastrado", vbInformation, "Cadastro já existente!"
            Exit Sub
        End If
        lin = lin + 1
     Wend

Sheets("cadastro").Activate
L2 = Range("e4").End(xlDown).Row + 1
     lin = 2
     While lin < L2
     If Cells(lin, 5) = Val(TextBoxCPF.Value) Then 'verificar duplicidade cpf
            MsgBox "Este CPF já está cadastrado", vbInformation, "Cadastro já existente!"
            Exit Sub
            End If
        lin = lin + 1
    Wend

 

CONTROLE NOVO - Copia.rar

  • Solução
Postado
23 horas atrás, Jefferson TS disse:

...Alguém saberia me dizer o motivo?

 

23 horas atrás, Jefferson TS disse:

     If Cells(lin, 5) = Val(TextBoxCPF.Value) Then 'verificar duplicidade cpf

 

A função Val que você está usando é muito limitada e não consegue transformar, por exemplo, a string "111.111.111-11" da TextBox no número puro 11111111111 conforme conteúdo real da célula (Range.Value) da sua planilha. Você teria que antes eliminar o ponto e o hífen do texto com Replace.

Entretanto, a meu ver, o mais simples nesse caso seria comparar a TextBox com o conteúdo da célula como está formatado usando a propriedade Range.Text ao invés de Range.Value, eliminando também a função Val. Ficaria assim:

 

   If Cells(lin, 5).Text = TextBoxCPF.Value Then 'verificar duplicidade cpf

 

_________________

Uma dica: você poderia reduzir significativamente seu código se ao invés de usar referência de intervalos aproveitar - já que seus dados estão em uma tabela - as referências de tabela. Por exemplo, o trecho de nomes duplicados poderia ficar simplesmente assim:

...
    If Application.CountIf([Tabela_CADASTRO[NOME]], Me.TextBoxNOME.Value) > 0 Then
      MsgBox "Este nome já está cadastrado", vbInformation, "Cadastro já existente!"
      Exit Sub
    End If

 

  • Curtir 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!