Página 1 de 1

Checar se há duplicidade no cadastro

Enviado: 27 Mai 2022 às 12:45
por Dunguinha
Olá à todos.
Pesquisei num monte de lugar e só acho código para impedir duplicidade varrendo uma coluna apenas.
A necessidade é fazer a consulta em duas colunas simultaneamente e impedir o cadastro em duplicidade.

Anexo explicação detalhada.

Re: Checar se há duplicidade no cadastro

Enviado: 27 Mai 2022 às 14:21
por osvaldomp
Por Validação de dados não serve ?

Personalizado | =CONT.SES($B$3:$B$100;$B3;$C$3:$C$100;$C3)<2

Re: Checar se há duplicidade no cadastro

Enviado: 27 Mai 2022 às 15:40
por Dunguinha
Puxa, até agradeço, mas vou usar um formulário de cadastro, a lista é grande. Gostaria que ao clicar num botão fosse feito a verificação na palnilha.

Re: Checar se há duplicidade no cadastro

Enviado: 27 Mai 2022 às 16:27
por osvaldomp
Utilize a fórmula que passei, substitua CONT.SES por Application.CountIf e no lugar dos endereços das células com os critérios (B3 e C3) coloque os valores/textos que estão nos Controles do Form.

"... e só acho código para impedir duplicidade varrendo uma coluna apenas"
Ou coloque aqui o código que você encontrou e que "varre" uma coluna apenas ... de repente, aumentando a largura da vassoura já resolve ... :)

Re: Checar se há duplicidade no cadastro

Enviado: 28 Mai 2022 às 09:51
por Dunguinha
Osvaldomp, seguindo sua linha de raciocínio expandi a procura para a TextBox2 no código, e não é que deu certo!
Deixo no anexo a planilha funcionando como era esperado.

Muito obrigado.

Re: Checar se há duplicidade no cadastro

Enviado: 28 Mai 2022 às 15:57
por osvaldomp
Você adotou o Loop, que é um processo lento, para verificar os registros.
Imagine uma tabela com 5 mil linhas, o Loop deverá fazer 5 mil comparações na coluna A e mais 5 mil na coluna B , até concluir que o registro não existe. Ainda, se houver uma célula vazia no meio da tabela o Loop irá interromper sem verificar toda a tabela.

A função que eu sugeri faz a verificação beeeeem mais rápido.
Código: Selecionar todos
Private Sub CommandButton1_Click()
 If Application.CountIfs(Range("A2:A100"), TextBox1.Text, Range("B2:B100"), TextBox2.Text) > 0 Then
  MsgBox "Já tem"
 Else: MsgBox "Novo Registro"
 End If
 TextBox1 = "": TextBox2 = "": TextBox1.SetFocus
End Sub

Re: Checar se há duplicidade no cadastro

Enviado: 29 Mai 2022 às 07:42
por Dunguinha
Foi o que eu tinha achado e que deu certo, mas você tem razão, já estou mudando para o código que sugeriu.
Mais uma vez muito obrigado, estou aprendendo muito.

Re: Checar se há duplicidade no cadastro

Enviado: 29 Mai 2022 às 08:50
por osvaldomp
E no lugar da linha 100 que eu coloquei de forma arbitrária na função, você pode inserir uma variável que represente a última linha da tabela.