Notifications
Clear all

LISTBOX MULTIPLO PASSANDO VALOR PARA AUTOFILTRO

4 Posts
2 Usuários
0 Reactions
1,093 Visualizações
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Galera,

Estou com a seguinte situação:

->Tenho um listbox multiplo e quero passar os valores selecionados para um autofiltro, porém não tenho ideia de como fazer.
-> Os valores selecionado seriam adicionado a uma array talvez, ou uma variável tipo Range ...
-> Assim incrementaria o array para utilizá-lo depois.

With Sheets("BDV").Range("D9:H10000")
.AutoFilter Field:=1, Criteria1:= EMPRESA
.AutoFilter
End With
 
Postado : 24/09/2015 3:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ericson, não entendi quando diz ter um listox multiplo, e quanto ao filtro, veja no link abaixo é o que pretende, tem até um exemplo para baixar.

Excel AutoFilter With Criteria in a Range
http://blog.contextures.com/archives/20 ... n-a-range/

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/09/2015 6:26 am
(@ericsson)
Posts: 54
Trusted Member
Topic starter
 

Resolvi o meu problema...

Mauro, listbox multiplo permite várias seleções de dados ao mesmo tempo, exemplo:

-> De um listbox que apresenta 1 empresas eu consigo seleciona 3 destas ao mesmo tempo.

Eu vi algo parecido com o seu link, mas não optei por utilizar Application.Transpose por tratar com incremento com objeto Range.

Encontrei algo mais fácil o Split que separa dados de uma string formando um Array, que no caso também dá certinho no que eu queria.

O código ficou assim:

'Filtro Empresa______________________________________________________
'Inicializo a variável EMPRESA com um valor em branco
EMPRESA = ""
'Um loop básico para percorrer o Listbox
For L = 1 To 10
'Um IF para definir o que ocorrerá primeiro porque não devemos começar 
a Concatenar as empresas selecionadas com vírgula
If Sheets("RCE").ListBox1.Selected(L - 1) = True Then
    If EMPRESA = "" Then
        EMPRESA = Sheets("RCE").ListBox1.List(L - 1)
    ElseIf EMPRESA <> "" Then
        EMPRESA = EMPRESA & "," & Sheets("RCE").ListBox1.List(L - 1)
    End If
End If
Next L

'Como ficou o autofiltro________________________________

With Sheets("BANCO").Range("B1:V100000")  

'Com Split o tratamento fica assim:
     Variável EMPRESA sem SPLIT está assim -> "EMPRESA1,EMPRESA2,EMPRESA3";
     Variável EMPRESA com SPLIT está assim -> "EMPRESA1","EMPRESA2","EMPRESA3";
     Inclui o Arryay e então fica assim -> Array("EMPRESA1","EMPRESA2","EMPRESA3").

If EMPRESA <> "" Then
     .AutoFilter Field:=2, Criteria1:=Array(Split(EMPRESA, ",")), Operator:=xlFilterValues
ElseIf EMPRESA = "" Then
     .AutoFilter Field:=2, Criteria1:="<>""", Operator:=xlFilterValues
End If

Espero que tenha ficado claro, pelo menos tentei...

Vlw!!

 
Postado : 25/09/2015 9:27 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ericson, se possivel anexe um modelo, ficara mais facil procurar ajudar.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/09/2015 10:22 am