Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Combobox sem duplicar dados [RESOLVIDO]

Dúvidas gerais sobre Excel
FDWX
Colaborador
Colaborador
Mensagens: 11
Registrado em: Qui Abr 07, 2016 10:06 am

Re: Combobox sem duplicar dados

Mensagem por FDWX »

Mikel Silveira Fraga escreveu:FDWX, boa tarde.

Abri seu modelo agora e segue as orientações para que você possa organizar a planilha.

Antes de iniciarmos, é preciso inserir em um módulo, a função que realiza a verificação da existência de duplicidade do ComboBox. Segue abaixo o código, sendo este o mesmo do exemplo postado anteriormente:

Código: Selecionar todos

Public Function VerificaDuplicidade(ByRef ctrlList As MSForms.Control, _
                                    ByVal strValor As String) As Boolean

    Dim intList As Integer
    
    VerificaDuplicidade = False
    
    With ctrlList
        
        For intList = 0 To .ListCount - 1
        
            If VBA.LCase(VBA.Trim(.List(intList, 0))) = _
                VBA.LCase(VBA.Trim(strValor)) Then
            
                VerificaDuplicidade = True
                Exit Function
                
            End If
        
        Next intList
    
    End With
    
End Function
Para o preenchimento do ComboBox com os Fornecedores, por exemplo, você esta utilizando o comando abaixo:

Código: Selecionar todos

Sheets("Forn").Visible = True
Sheets("Forn").Select
Range("a2").Select
Do Until ActiveCell.Value = ""
If ActiveCell.Value <> "" And ActiveCell.Value <> "xxx" Then
ComboBox10.AddItem (ActiveCell.Value)
End If
ActiveCell.Offset(1, 0).Select
Loop
Para conseguir utilizar a função, será necessário inserir um bloco IF, antes da linha de comando ComboBox10.AddItem, conforme abaixo:

Código: Selecionar todos

Sheets("Forn").Visible = True
Sheets("Forn").Select
Range("a2").Select
Do Until ActiveCell.Value = ""
If ActiveCell.Value <> "" And ActiveCell.Value <> "xxx" Then
If Not VerificaDuplicidade(Me.ComboBox10, ActiveCell.Value) Then 'Iniciamos um novo bloco IF, que testa a função VerificaDuplicidade.
ComboBox10.AddItem (ActiveCell.Value)
End If ' Aqui estamos encerrando esse novo bloco IF.
End If
ActiveCell.Offset(1, 0).Select
Loop
Dessa forma, antes da inclusão de um novo valor no ComboBox, será feita uma checagem se já existe o mesmo valor em outra linha da lista. Caso exista, não será feita a inclusão da informação.

Teste e nos retorne com o resultado.

Abraços.
Bom dia!

eu coloquei esse código em todos os combobox change, mas parece que no caso da combobox 12 e da combobox13 ainda está carregando dados em duplicidade. Lhe enviei novamente o arquivo por e-mail. Poderia verificar?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Combobox sem duplicar dados

Mensagem por Mikel Silveira Fraga »

FDWX, boa tarde.

Cara, testei esse novo modelo que você me enviou e não conseguir enxergar nenhuma duplicidade nos Combos 12 e 13.

Teria como você me enviar um print do formulário, destacando essa duplicidade nos Combos?

Fico no aguardo.


FDWX
Colaborador
Colaborador
Mensagens: 11
Registrado em: Qui Abr 07, 2016 10:06 am

Re: Combobox sem duplicar dados

Mensagem por FDWX »

Mikel Silveira Fraga escreveu:FDWX, boa tarde.

Cara, testei esse novo modelo que você me enviou e não conseguir enxergar nenhuma duplicidade nos Combos 12 e 13.

Teria como você me enviar um print do formulário, destacando essa duplicidade nos Combos?

Fico no aguardo.
boa tarde!
Anexo dois exemplo um mostrando os dados duplicado em cada combobox (no 12 e no 13).
duplicidade ex2.jpg
duplicidade ex2.jpg (219.38 KiB) Exibido 8702 vezes
duplicidade1.jpg
duplicidade1.jpg (218.65 KiB) Exibido 8702 vezes


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Combobox sem duplicar dados

Mensagem por Mikel Silveira Fraga »

FDWX, bom dia.

Bem, como no modelo que você me enviou não tinha essa duplicidade, não consegui enxergar um possível erro. Mas vou arriscar o seguinte. Acredito que essa duplicidade pode estar sendo gerada, pela existência de espaços em branco, antes e depois das informações. Por exemplo: o valor "Amarelo", é diferente de " Amarelo", "Amarelo " e " Amarelo ". Observe os espaço antes e depois do nome.

Pare removermos esses espaços, altere os comandos abaixo, adicionando a parte em destacada em vermelhor:
- If Not VerificaDuplicidade(Me.ComboBox12, VBA.Trim(ActiveCell.Value))

O mesmo para a linha abaixo:
- ComboBox12.AddItem (VBA.Trim(ActiveCell.Offset(0, 14).Value))

Também faça o mesmo para o ComboBox13.

A função Trim, elimina qualquer espaço que existir antes e depois de uma String.

Faça esse teste e nos retorne, ok.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


FDWX
Colaborador
Colaborador
Mensagens: 11
Registrado em: Qui Abr 07, 2016 10:06 am

Re: Combobox sem duplicar dados

Mensagem por FDWX »

Mikel Silveira Fraga escreveu:FDWX, bom dia.

Bem, como no modelo que você me enviou não tinha essa duplicidade, não consegui enxergar um possível erro. Mas vou arriscar o seguinte. Acredito que essa duplicidade pode estar sendo gerada, pela existência de espaços em branco, antes e depois das informações. Por exemplo: o valor "Amarelo", é diferente de " Amarelo", "Amarelo " e " Amarelo ". Observe os espaço antes e depois do nome.

Pare removermos esses espaços, altere os comandos abaixo, adicionando a parte em destacada em vermelhor:
- If Not VerificaDuplicidade(Me.ComboBox12, VBA.Trim(ActiveCell.Value))

O mesmo para a linha abaixo:
- ComboBox12.AddItem (VBA.Trim(ActiveCell.Offset(0, 14).Value))

Também faça o mesmo para o ComboBox13.

A função Trim, elimina qualquer espaço que existir antes e depois de uma String.

Faça esse teste e nos retorne, ok.
Boa tarde!

Na verdade não pode ser esse o problema, porque os itens da combobox 12 e 13 são inseridos via outro formulário (que tirei do arquivo pra não ficar pesado), então são sempre os mesmos, não tem variações com espaços ou digitação diferentes. No segundo e-mail que te enviei já era esse arquivo, vou lhe enviar novamente.
O botão que abre o formulário está na aba "Botão", tem algumas outras abas ocultas com os cadastros. Todas as macros estão dentro do formulário "estoque" lá do VBA.

Obs: Eu fiz o teste agora inserindo esse código e realmente não resolveu :(

Obrigado!


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Combobox sem duplicar dados

Mensagem por Mikel Silveira Fraga »

FDWX, boa tarde.

Descobri o motivo do erro. Veja a parte do seu código abaixo:

Código: Selecionar todos

ComboBox12.Clear
Sheets("Prod").Visible = True
Sheets("Prod").Select
Range("C2").Select
Do Until ActiveCell.Value = ""
If ActiveCell.Offset(0, 1).Value = ComboBox10.Value And ActiveCell.Offset(0, 3).Value = ComboBox11.Value And ActiveCell.Offset(0, 5).Value = ComboBox13.Value Then
If Not VerificaDuplicidade(Me.ComboBox12, ActiveCell.Value) Then 'Iniciamos um novo bloco IF, que testa a função VerificaDuplicidade.
ComboBox12.AddItem (ActiveCell.Offset(0, 14).Value)
End If
End If
ActiveCell.Offset(1, 0).Select
Loop
No exemplo acima, o código preenche o ComboBox12 (combo das cores). O problema que dentro do Userform Estoque, todo esse bloco de códigos é repetido, pelo menos duas vezes. O que ocorreu é que em algumas partes, o código esta diferente de outras. O problema é o seguinte:
If Not VerificaDuplicidade(Me.ComboBox12, ActiveCell.Value) Then
ComboBox12.AddItem (
ActiveCell.Offset(0, 14).Value)

Nos dois casos, destacados em vermelho deve ser iguais. Neste caso, o correto é a debaixo, onde esta referenciado a informação de Cores /u] na aba Prod.

Verifique esse tipo de duplicidade em seu código e corrija, para que todos os preenchimentos sejam feitos da mesma forma.

Qualquer dúvida, a disposição.


FDWX
Colaborador
Colaborador
Mensagens: 11
Registrado em: Qui Abr 07, 2016 10:06 am

Re: Combobox sem duplicar dados

Mensagem por FDWX »

Perfeito!

Deu tudo certo!

Muito obrigado! =D


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Combobox sem duplicar dados [RESOLVIDO]

Mensagem por Mikel Silveira Fraga »

FDWX, perfeito.

Agora é só ir pra galera.

Depois, marque o tópico como Resolvido. Dúvidas, tem instruções na minha assinatura.

Forte abraço e até a próxima.


n0thing
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Abr 26, 2018 9:16 pm

Re: Combobox sem duplicar dados [RESOLVIDO]

Mensagem por n0thing »

Mikel, consigo adaptar o comando para filtrar a minha base?
Ex: Estou usando este codigo que você montou, porém como estou utilizando várias combobox e este comando não filtra, apenas lê a linha em questão, em certos momentos encontro divergência nas informaçoes e acredito que filtrando, nao teria mais este problema.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Combobox sem duplicar dados [RESOLVIDO]

Mensagem por Mikel Silveira Fraga »

N0thing, bom dia.

Não entendi bem sua dúvida. Você esta querendo filtrar os dados, certo!?

Bem, a ideia do código não é filtrar, mas sim evitar que uma determinada informação seja inserida em um ComboBox ou ListBox em duplicidade.

Teria como dar mais detalhes sobre o problema que esta tendo e, de preferência, enviar um modelo para dar uma olhada!?

Fico no aguardo de seu retorno.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder