Logo Hardware.com.br
Josebeca
Josebeca Novo Membro Registrado
12 Mensagens 0 Curtidas

[Resolvido] Combobox filtrando entre si

#1 Por Josebeca 10/07/2015 - 09:57
om dia amigos,
Estou com uma dúvida a respeito da filtragem entre combobox.
Tenho uma planilha com várias colunas, porém três fundamentais que usarei para servirem de filtros de busca das outras informações. Coluna ANO, Coluna TIPO e coluna FISCALIZAÇÃO. O que quero é poder filtrá-las entre si, por exemplo, escolho um ano na combobox ANO e ela filtra as outras duas; escolho um tipo na combobox TIPO e ela filtra as outras duas; ou até mesmo escolho ano e tipo e filtra a fiscalização. O que eu quero é deixa-las independentes entre si, podendo filtrar com uma, ou com duas simultaneamente. O código já está trazendo os dados ANO,TIPO E FISCALIZAÇÃO nas respectivas combobox, consigo filtrar de uma pra outra também. Porém por exemplo, quando filtro o ano e me da só as opçoes de tipo desse ano e escolho alguma dá erro. Acho que por que no momento que escolho o valor filtrado ele filtra novamente a outra coluna e fica nesse loop. Abaixo segue o código q estou usando para o filtro em uma combobox por exemplo:
--------------------------------------------------------------------------------------------------------------------------
[code=VB]Private Sub box_ano_Change()
Sheets("filtro").Select
Range("A2:A" & Range("A1").End(xlDown).Row).Select
Selection.Clear
Sheets("Plan1").Activate
ActiveSheet.Range("$A$2:$AF" & Range("A2").End(xlDown).Row).AutoFilter Field:=1, Criteria1:=box_ano
Range("H2:H" & Range("H2").End(xlDown).Row).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("filtro").Activate
Range("A2").Select
ActiveSheet.Paste
'Tirando duplicatas e colocando em ordem alfabética
Columns("A:A").Select
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$A$500").RemoveDuplicates Columns:=1, Header:=xlYes
ActiveWorkbook.Worksheets("filtro").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("filtro").Sort.SortFields.Add Key:=Range("A2:A500") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("filtro").Sort
.SetRange Range("A1:A500")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
box_tipo.RowSource = "filtro!A2:A" & Range("A1").End(xlDown).Row
Sheets("plan1").Activate
End Sub
[/code]
----------------------------------------------------------------------------------------------------------------------
Quando faço o mesmo código para filtrar ano pelo tipo (ou seja, o oposto do de cima)
Ele me volta um erro na terceira linha: Selection.Clear
Alguém poderia me ajudar?
Desde já agradeço!!
Abraço,
José Beça
Josebeca
Josebeca Novo Membro Registrado
12 Mensagens 0 Curtidas
#3 Por Josebeca
10/07/2015 - 20:32
Walhart disse:
Mais fácil ajudar se compartilhar uma planilha exemplo... senão quem for te ajudar vai ter q montar a planilha inteira pra tentar chegar na resposta


Tranquilo.. estou enviando em anexo... meu objetivo é utilizar essas três combobox : FISCALIZAÇÃO, ANO e TIPO como filtro para as outras infos. A combo FISCALIZAÇÃO filtra direto, pois só tem valores únicos, as outras duas filtram entre si. Então gostaria que, quando filtrasse por FISCALIZAÇÃO já preenchesse as outras duas combos e quando fosse por ANO e TIPO fosse filtrando. Não queria estabelecer ordem de filtor. Fiz um código, mas ele entra em loop eu acho, pq quando defino a combo FISCALIZAÇÃO ele atribui um valor a ANO ai vai pra change() de ano e nao pára mais. se alguem tiver uma idéia agradeço muito.

Abraço

Anexos

Josebeca
Josebeca Novo Membro Registrado
12 Mensagens 0 Curtidas
#5 Por Josebeca
11/07/2015 - 19:14
Basole disse:
Josebeca, vj. se eh isso que precisa...(anexo)

Fala Basole.. obrigado pela resposta.

Vê.. ainda não é isso.. acho q me expliquei mal.. vou tentar ser mais claro. Eu preciso que essas três combobox se filtrem entre si. EX:
Um usuário que procurar sobre uma fiscalização q ele já sabe o nome vai na combo FISCALIZAÇÃO e já filtra lá direto, automaticamente a combo ANO e TIPO se preenchem automaticamente pois a FISCALIZAÇÃO é única, depois disso clico no botão q vou criar, buscar, e as textbox que vou por abaixo trazem as outras infos. Mas vamos supor que o usuário não sabe o nome da fiscalização, mas sabe o tipo que quer buscar, logo ele vai na combo TIPO e escolhe lá técnica, automaticamente na combo ANO só aparecerão anos que tiveram técnica e na combo FISCALIZAÇÕES aparecerão apenas as fiscalizações técnicas, depois o usuário pode escolher o ano ou o próprio nome da fiscalização em suas respectivas combos. Mesma coisa se ele começar pela combo ANO.

Resumindo... preciso que as combos se filtrem simultaneamente, a de FISCALIZAÇÃO já dará direto pois é única, as outras duas tem mais opções. Com as três combos preenchidas o usuário clia em buscar e as textbox que botarei embaixo trarão outras infos da linha.

Obrigado pela atenção e pela ajuda.. qq dúvida só perguntar

abraço
Josebeca
Josebeca Novo Membro Registrado
12 Mensagens 0 Curtidas
#7 Por Josebeca
14/07/2015 - 09:14
Basole disse:
Bom se quer que carregue os dados da mesma linha da opção selecionada em fiscalizacao, acho q nao precisaria usar combobox e sim textbox, p/ os espaços para ano e tipo:
Segue anexo c/ alteração.


Fala Basole, obrigado pela ajuda!!

Vê, em relação ao combo FISCALIZAÇÃO é exatamente isso que quero, que ela já dê o resultado de ANO e TIPO, mas dessa forma que vc mandou, essas duas combobox não servem de filtro tb (ANO e TIPO), e meu objetivo é deixar todas as combos se filtrando.

Tenho uma outra dúvida, existe como eu "chamar" um procedimento específico? Porque o loop que está dando é que quando o código de FISCALIZAÇÃO roda e modifica a combo ANO, o change do ano é rodado... gostaria de depois da mudança da combo ANO, pelo código do FISCALIZAÇÃO a rotina não fosse direto para o change do ANO. Existe algum comanto que desabilite o procedimento?

Valeuuuu
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal