Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#10790
Bom dia,
Estou com o seguinte problema.
Eu consigo fazer com que o listbox seja preenchido atraves do combobox, porem não consigo fazer o filtro de acordo com o combobox, pois quanto seleciono outra planilha pelo combobox ai o filtro atraves do textbox não da certo por que não consigo vincular com o combobox.
Ou seja eu queria que ao selecionar uma planilha pelo combobox quando eu fosse filtrar uma palavra da listbox ele filtrasse da planilha selecionada pelo combobox.
Ex:
selecione plan JAN16 pelo combobox, então a listbox é preenchida com os dados desta planilha e que ao filtrar pela textbox ela filtre referente a este dados do listbox.
se eu selecionar plan FEV16 pelo combobox, então a listbox é preenchida com os dados desta planilha e que ao filtrar pela textbox ela filtre referente a este dados Ttbm do listbox.


Não sei se fui claro no que disse mas espero que me ajudem.
#10797
Boa tarde!!

Por favor quando postar a dúvida em mais de um fórum, poste o linque cruzado!!
http://www.planilhando.com.br/forum/vie ... 23&t=20403

Onde está seu arquivo modelo?


Nestes casos eu recomendo, fazer o filtro na guia e mostrar na lisbox o resultado do filtro.

Att
#10925
AndersonLeal escreveu:Olá,

Para adicionar mais colunas será preciso uma pequena adaptação nos códigos do ComboBox e do TextBox. Teria como postar um exemplo, ficaria mais fácil para te explicar! Me avise se não for possível.

Abraço!

Olá AndersonLeal

Aquele exemplo que vc postou deu certinho, só que no meu caso em cada planilha alem da coluna A eu uso a B, C, D E até a K em todas planilhas dos meses.

Quando apliquei o codigo na minha planiha funcionou tudo certo, porem mostrou somente a primeira coluna.
#10937
AndersonLeal escreveu:Olá,

O ListBox aceita somente 10 colunas (de 0 a 9) pelo método AddItem.
Utilizando a propriedade RowSource é possível adicionar até 256 colunas.

Mas para isso é preciso ter os dados ordenados (classificados). Outra solução seria usar um ListView.

Abraço!

No caso como eu faria com a Propriedade RowSource?
#10942
Ficaria mais ou menos assim:

ListBox1.Rowsource = Janeiro!A1:K10

Lembrando que a planilha é variável (depende do valor selecionado na ComboBox) e o intervalo de células também.

Ah, para exibir mais de uma coluna no listbox deve-se definir a propriedade ColumnCount com o número desejado.
#10951
AndersonLeal escreveu:Ficaria mais ou menos assim:

ListBox1.Rowsource = Janeiro!A1:K10

Lembrando que a planilha é variável (depende do valor selecionado na ComboBox) e o intervalo de células também.

Ah, para exibir mais de uma coluna no listbox deve-se definir a propriedade ColumnCount com o número desejado.
OK compreendi, mas aonde eu faria essa alteração ai no codigo?

Private Sub Combomes_Change()
Dim Plan As Worksheet
Dim UltLin As Long
Dim i As Long
ListBox1.ColumnCount = 11
ListBox1.Clear

For Each Plan In Sheets
If Plan.Name = Combomes.Value Then
UltLin = Plan.Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To UltLin
With ListBox1
.AddItem
.List(i - 1) = Plan.Cells(i, 1)



End With
Next i
End If
Next Plan

TextBox1.SetFocus
End Sub
#10952
Olá AndersonLeal,

Primeiramente venho me desculpar pela minha falta de entendimento .

Mas peço que de uma olhada no arquivo que te mando que é exatamente que estou querendo resolver.
Gostaria que ao selecionar o mês desejado no combobox, o listbox listasse as 10 colunas contendo as informações cindida na planilha correspondente. E ao digitar na textbox ela fizesse o filtro na 2ª coluna contendo todas as informação respequitivas a linha que tivesse os dados relacionados a palavra digitada.

ex:
foi selecionado o mes de janeiro na text box;
a listbox foi preenchida com os dados das 10 colunas;
foi digitado no textbox a palavra para ser filtrada na listbox = 4
então na coluna 2 ele ira mostrar todas as linha que possuem o 4 e suas respectivas informação.

segue abaixo ex:
1 - 4 - JOAQUIM ASDURBAL 3,56- 3,11- 4,53- 12,24- 8,68- 452 - 361
3 - 4 - ADMILSON FERREIRA PINTO 2,58- 3,13- 4,70- 11,41- 8,83- 135 - 1016
5 - 4 - JONAS PEREIRA DE CARVALHO 3,15- 3,12- 4,42- 11,73- 8,58- 556 - 180
20 - 4 - JOSÉ PEREIRA FARIAS 3,18- 3,14- 4,59- 11,94- 8,76- 250 - 4596
21 - 4 - VALDECIR RUFINO DE SOUZA 3,20- 3,31- 4,66- 121,21- 9,01- 181 - 99
#10971
Olá,

Para adicionar os dados no ListBox quando é selecionado o mês utilizei a propriedade RowSource. O método AddItem também funciona, mas quando se tem um número muito grande de linhas fica mais lenta a atualização dos dados na ListBox, com o RowSource a atualização é instantânea.

Agora para filtar os itens de acordo com o texto do TextBox será necessário filtrar os dados em algum outro local da planilha e depois puxar esses dados para o listbox, vou tentar explicar:

Suponha que está selecionado o mês de janeiro. Daí você insere o número 4 no TextBox. Precisamos copiar todos os registros da tabela cujo campo ROTA seja 4 para um outro lugar da planilha e depois inserir esses dados filtrados na ListBox.

Uma outra forma mais viável seria classificar as tabelas pelo campo "Rota" (o campo que será filtrado no TextBox). Assim fica bem mais fácil de fazer o que você quer.

Também podemos utilizar o AddItem para alimentar a ListBox, mas se sua planilha contiver muitas linhas a atualização dos dados vai demorar de acordo com a quantidade de linhas da tabela.

Aguardo seu retorno para prosseguir.

Abraço!
#10972
Olá AndersonLeal

Compreendi oque vc disse, e vejo que com a propriedade ROWSOURCE seria a ideal.
E como seria esse processo de classificar a tabela pelo campo "rota" . ou seja como seria os codigos para escrever do vba.

e teria como nos fazer essa alteração neste formulário que postei ai ficaria mais facil.
#10983
Veja se pode ser assim. A planilha com os dados de janeiro já está classificada, as demais não.

Para classificar faça assim:

- Clique em qualquer lugar da tabela;
- Vá na guia DADOS -> CLASSIFICAR;
- Na primeira combobox escolha ROTA;
- Na última combobox escolha Do Menor para o Maior;
- Clique em OK.

OBS: apague as linhas em branco entre o cabeçalho da tabela e a primeira linha com dados.

Abraço!
#10993
Caro AndersonLeal,

Com satisfação lhe agradeço pela grande ajuda que tem prestado com seu conhecimento e experiencia neste assunto
O formulário funcionou certinho suprindo as necessidades que eu tinha encontrado, parabéns cara pelo teu esforço em me ajudar agradeço. E tenho certeza que este tópico vai servir para outros também. ;)

Este tópico pode ser considerado como RESOLVIDO.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord