Notifications
Clear all

Listbox contar dados repetidos

20 Posts
4 Usuários
0 Reactions
3,652 Visualizações
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Boa noite,

Pessoal como eu faço para contar itens repetidos na listbox vba Excel sem adiciona-los na planilha simplesmente direto no userform. Um exemplo base disso seria:

Tenho 3 textbox:
txtItem ; txtReferencia ; txtQtde

Sempre que eu entro com os dados ele vai contando, digamos entro com nome maça na txtItem e R1010 na txtReferencia, minha txtQtde já recebe sempre 1 automático, queria que quando entra-se de novo aparece-se 2 e assim por diante e eu entrar com outro item ele fosse somando se eu adiciona-se ele novamente.

Item.............Referencia.............Qtde
Maça............R1010....................01
Banana..........R1011....................01

se entra-se com maça novamente tipo "02" e assim sucessivamente.
Obrigado.

 
Postado : 16/11/2015 7:39 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Segue um exemplo, veja se consegue adaptar.

Click em se a resposta foi util!

 
Postado : 16/11/2015 9:18 pm
(@edivan)
Posts: 119
Estimable Member
 

Olá, para fazer o que você quer vai precisar usar um loop...

Vou criar uma função que retorna quantas vezes o produto aparece em seu listbox tenta adaptar a sua necessidade..
Function ContarProduto(PRODUTO As String) As Integer

Dim LINHA As Integer
LINHA = 0

Dim CONTADOR As Integer
CONTADOR = 0

Do Until LINHA = Seu_ListBox.ListCount
If PRODUTO = Seu_ListBox.List(LINHA, 0) Then CONTADOR = CONTADOR + 1
LINHA = LINHA + 1
Loop

ContarProduto = CONTADOR

End Function

Para usar basta fazer assim, suponhamos que eu quero jogar o resultado em uma textbox chamada txtQtd então vou fazer assim:

txtQtd.Text = ContarProduto()

Dentro dos parenteses eu tenho que dizer onde esta o produto que quero contar veja abaixo um exemplo se o seu Textbox fosse txtProduto

txtQtd.Text = ContarProduto(txtProduto.Text)

Isso iria entrar no função e jogar o retorno dela que no caso seria a soma de quantas vezes o produto existe no listbox..

Bom espero que tenha ficado claro e que voce tenha entendido...

Visite meu blog quando tiver um tempo livre:

programacaopassoapasso.wordpress.com

 
Postado : 17/11/2015 6:39 am
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Edivam esse é o código que eu uso para inserir os dados na listbox, tentei adaptar o teu acima mas só deu erro.

Private Sub btnSalvar_Click()
On Error Resume Next
Dim i

If Me.txtItem.Text = Empty Then
MsgBox "Favor informar o item!", , "Mensagem"
txtItem.SetFocus
Exit Sub
End If

If Me.ListBox1.ListCount = 0 Then
i = 0
Else
i = Me.ListBox1.ListCount
End If

ListBox1.ColumnWidths = "80;60;30"

Me.ListBox1.AddItem txtItem.Text

ListBox1.List(i, 0) = txtItem.Value
ListBox1.List(i, 1) = txtLote.Value
ListBox1.List(i, 2) = txtQtde.Value

txtItem.Text = Empty
txtQtde.Text = Empty
txtLote.Text = Empty

txtItem.SetFocus

End Sub

 
Postado : 18/11/2015 9:05 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Parceiro, oque me diz de trocar o controle Listbox por uma ListView, nessa posso te passar uns macetes legais, se falar que visualmente ela é muito melhor e facil de se interagir, posta seu modelo ae que tento te ajudar o/

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 18/11/2015 11:03 am
(@edivan)
Posts: 119
Estimable Member
 

Cara o meu código apenas conta quantas vezes o produto ja esta no listbox...

Você vai usar o resultado disso apenas, nao precisa incluir ele dentro do seu método...

Pelo que entendi você deve usar minha função no eventro Afterupdate do seu textbox txtItem... mais ou menos assim:

Private Sub txtItem_afterupdate()
txtQtd.Text = ContarProduto(txtItem.Text)
End Sub

Tenta aí para ver se funciona...

 
Postado : 18/11/2015 11:35 am
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

E ai amigão ainda não funcionou tipo sei que a listview fica mais show mais a intenção é futricar na listbox mesmo.
Olha meu exemplo:
Em vez do item somar quando é igual entrou igual soma 2 lá e não ele esta se repetindo na linha abaixo ele tem q somar a linha que ele encontrar o item

 
Postado : 18/11/2015 12:29 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

araujors, poste sua planilha ou o codigo que carrega o listbox, para que o possamos trabalhar em cima dele.

Click em se a resposta foi util!

 
Postado : 18/11/2015 1:21 pm
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Segue a planilha em anexo, conforme pedistes. Na textbox UPC não precisa fazer nada porque futuramente quero criar algo, mas não usarei no momento.
Obrigado.

 
Postado : 18/11/2015 2:10 pm
(@edivan)
Posts: 119
Estimable Member
 

CARA O QUE ESTAVA ERRADO ERA O NOME DO SEU OBJETO TEXTBOX TXTQTDE QUE EU ESCREVI TXTQTD, SEGUE ANEXO A PLANILHA CORRIGIDA VEJA SE É ISSO QUE PRECISA

 
Postado : 18/11/2015 3:50 pm
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Amigão ainda não é isso tipo se o item já esta na listbox quando entrar de novo soma a qtde de item tipo tinha 1 já e quando entrar de novo soma 2

 
Postado : 19/11/2015 5:43 am
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Ainda não amigão tipo ele tem q somar se o item for igual tipo maça entrou uma vez 1 e na mesma linha se ele viu que ja existe maça soma 2

 
Postado : 19/11/2015 6:33 am
Basole
(@basole)
Posts: 487
Reputable Member
 

araujors, segue em anexo veja se é isso mesmo.

Se preferir anule a linha da msg de alerta qdo. o item que ja existe inserido na listbox.

Click em se a resposta foi util!

 
Postado : 19/11/2015 11:02 am
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

araujors, segue em anexo veja se é isso mesmo.

Se preferir anule a linha da msg de alerta qdo. o item que ja existe inserido na listbox.

PERFEITOOOOOO!!!! Brother isso mesmo muito mas muito obrigado mesmo.

 
Postado : 19/11/2015 2:02 pm
(@araujors)
Posts: 79
Estimable Member
Topic starter
 

Amigão ao inves de somar o item igual somar o lote ou referencia desse item como eu poderia fazer onde no código eu mudaria essa opção, se puder comentar te agradeço.

 
Postado : 21/11/2015 12:28 pm
Página 1 / 2