Procurar valor com dados em mais de uma coluna em VBA


#1

Pessoal,

Novamente estou enfrentando um problema e, gostaria de saber se alguém pode ajudar.
Tenho um formulário de cadastro no excel com três dados:
Cliente que é colocado na coluna A
Fabricante que é colocado na coluna B
Modelo que é colocado na coluna C

Eu posso ter um cadastro em que os três campos sejam preenchidos ou apenas dois (fabricante e modelo).
Assim eu posso ter a seguinte situação em meu cadastro:

Cliente Fabricante Modelo
A Walita W52
B Walita W52
Walita W52
A Walita W60
B Arno W60

Quando eu fizer um novo cadastro, quero que não seja possível repetir um cadastro.
Imaginem que a pessoa digite no formulário: Cliente: A; Fabricante: Walita; Modelo: W60. Deve ocorrer uma mensagem indicando que o cadastro já existe e não permite cadastrar.
O mesmo deve ocorrer se a pessoa digitar: Fabricante: Walita; Modelo: W52 e deixar o Cliente em branco.

Alguém pode me ajudar com esse código?
Obrigado!


#2

A tabela ficou fora de posição:

Cliente / Fabricante / Modelo
…,A…,;/ Walita…,;;/ W52
…,B…,;/ Walita…,;;/ W52
…,.;…,;/ Walita…,;;/ W52
…,A…,;/ Walita…,;;/ W60
…,B…,;/ Arno…,;;/ W52


#3

Você pode fazer da seguinte forma. Primeiro concatenar esses 3 valores em uma coluna > usar cont.se para saber quantas vezes o conjunto se repete no intervalo > se o valor retornado para os valores cadastrados for maior que 1, significa que há duplicidade e você aborta o cadastro.


#4

@angelo.reami A Resposta do Valteson é super valida.

Agora você pode postar seu código de cadastro, fica mais fácil de ajudar!
Um Exemplo genérico seria

Sub Cadastro ( )
Dim CADASTRO as String
Dim REGISTRO as String
CADASTRO = Ucase(textboxCliente.text & textboxFabricante.text & textboxModelo.text)

'Faz um for da sua linha inicial até a final, e vai fazendo a comparação.
For i = 1 to linhafinal
REGISTRO = Ucase(Sheets(“PLANILHAEMQUESTAO”).CELLS(i,1) & Sheets(“PLANILHAEMQUESTAO”).CELLS(i,2) & Sheets(“PLANILHAEMQUESTAO”).CELLS(i,3))
If REGISTRO = CADASTRO then
Msgbox “Registro Existente”
exit sub
End If
Next
'AGORA VC ESCREVE O RESTO DO SEU CÓDIGO DE CADASTRO

End sub


#5

Pessoal,

Obrigado pela ajuda. Vou testar e depois informo se deu certo e como foi feito,
Valeu!

Angelo