Notifications
Clear all

VBA de Filtragem - Utilizando Caixa de Combinação

25 Posts
3 Usuários
0 Reactions
3,846 Visualizações
(@gleiner)
Posts: 0
New Member
Topic starter
 

Ola a Todos!
Sou novo no fórum no quesito participação, já algum tempo venho pesquisando algumas informações simples para algumas das minhas planilhas.
Atualmente estou me aventurando nas macros e VBA, em uma nova planilha.

O problema é o seguinte:

Quero utilizar uma caixa de combinação (ActiveX) para ativar a filtragem de uma determinada coluna.
No inicio ate pensei em usar macros, mas não estava dando certo.

Private Sub ComboBox1_Change()

If ComboBox1.Value = "Novo" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Novo"

ElseIf ComboBox1.Value = "Orçando" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Orçando"

ElseIf ComboBox1.Value = "Aguardando" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Aguardando"

ElseIf ComboBox1.Value = "Declinado" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Declinado"

ElseIf ComboBox1.Value = "Aprovado" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Aprovado"

ElseIf ComboBox1.Value = "Reprovado" Then

ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17, Criteria1:="Reprovado"

Else
ActiveSheet.Range("$A$4:$BD$65536").AutoFilter Field:=17

End If
End Sub

Infelizmente não para de da erro.
Se acaso for envio a planilha.

 
Postado : 11/11/2014 2:12 pm
(@edcronos)
Posts: 1006
Noble Member
 

Gleiner
A planilha esta um pouco pesada (6mb), por isso esta travando um pouco, mas funciona.

6 Mb dependendo da sua configuração de sistema não deixaria a planilha pesada nem travando,

isso tem a ver de como vc fez a planilha
muitas formulas matriciais
funções
eventos
e nas macros, é questão de usar os comandos corretos de maneira eficiente e "principalmente" bem estruturados.

conforme for aprendendo e definindo sua necessidade tente ir reestruturando sua planilha aos pouco, otimizando formulas e macros.

 
Postado : 13/11/2014 8:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro e Alexandre,
A planilha esta um pouco pesada (6mb), por isso esta travando um pouco, mas funciona.
O modelo que anexou tem muitas linhas que apesar de estarem em branco estão com formatação, com isto o excel entende como celulas preenchidas e é uma das razões do tamanho do arquivo, de uma olhada nos links abaixo para uma possivel redução do tamanho:

Reduza o tamanho das planilhas !
http://www.tomasvasquez.com.br/forum/vi ... GToDtghMxo

Como reduzir o tamanho de uma planilha?
viewtopic.php?f=28&t=3023

Perguntas finais
- Esse filtro pode ser estendido a qualquer valor informado entre as colunas "A" e "R", caso eu inclua na listagem?
- Seria possível (pratico) substituir a caixa de combinação por uma caixa de texto, pesquisando e filtrando qualquer termo na planilha?

De uma olhada nos links abaixo e baixe os dois modelos, acredito que os mesmos te ajudarão muito:
Planilha com Filtro Automático
http://guiadoexcel.com.br/planilha-com- ... automatico

Lista com Filtro de Dados Automático 3
http://guiadoexcel.com.br/lista-com-fil ... tomatico-3

- É possível implementar um alerta ao abrir a planilha referente a coluna "O" (informar quando o prazo para envio estiver próximo)?

Sim, e conforme o Alexandre já disse, pesquise aqui no forum que já existem alguns tópicos relacionados a este assunto.

[]s

 
Postado : 13/11/2014 12:24 pm
(@gleiner)
Posts: 0
New Member
Topic starter
 

Pessoal, estou aprendendo bastante no modo tentativa!
Juntamente com as dicas e orientações recebidas aqui no forum.

Resolvi alterar a caixa de combinação pela caixa de texto (acho mais pratico digitar do que selecionar, alem do mais estou pensando em uma nova perspectiva)

Cheguei ate o ponto de filtrar a coluna "Status" com a caixa. Perfeitamente
Utilizando o modelo do http://guiadoexcel.com.br/planilha-com-filtro-automatico#comment-54461
Agora travei, não sei como incluir as outras colunas e critérios de pesquisa.

Obrigado Mauro pela dica de redução de tamanho do arquivo, funcionou perfeitamente.

Quanto ao alerta, vou pesquisar a fundo no fórum e na net procurando alguma referencia.
Vou incluir a planilha novamente, pois fiz varias modificações.

 
Postado : 13/11/2014 1:35 pm
(@edcronos)
Posts: 1006
Noble Member
 

pq não tenta usar um combobox?
assim a pessoa pode até escolher o q quer na própria lista

 
Postado : 13/11/2014 3:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Cheguei ate o ponto de filtrar a coluna "Status" com a caixa. Perfeitamente
Utilizando o modelo do http://guiadoexcel.com.br/planilha-com-filtro-automatico#comment-54461
Agora travei, não sei como incluir as outras colunas e critérios de pesquisa.

Gleiner, no próprio link onde baixou o exemplo tem a explicação e um passoa passo de como fazer apos inserir novos textbox, é só seguir a lógica e ajustar para outras colunas que queira acrescentar.

 
Postado : 13/11/2014 6:02 pm
(@gleiner)
Posts: 0
New Member
Topic starter
 

Gleiner, no próprio link onde baixou o exemplo tem a explicação e um passo a passo de como fazer apos inserir novos textbox, é só seguir a lógica e ajustar para outras colunas que queira acrescentar.

Mauro, quanto a isso eu vi e analisei.
contudo o que estou querendo e analisando e a possibilidade de deixar apenas UMA caixa de pesquisa e edição para todas as colunas.

pq não tenta usar um combobox?
assim a pessoa pode até escolher o q quer na própria lista

Ed a ideia e ate boa, já vi vários exemplos, o problema talvez seria na praticidade e na edição.

 
Postado : 14/11/2014 8:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Gleiner, realmente não entendi o quer dizer com :
contudo o que estou querendo e analisando e a possibilidade de deixar apenas UMA caixa de pesquisa e edição para todas as colunas

Se puder detalhar melhor.

[]s

 
Postado : 14/11/2014 9:54 am
(@gleiner)
Posts: 0
New Member
Topic starter
 

Gleiner, realmente não entendi o quer dizer com :
contudo o que estou querendo e analisando e a possibilidade de deixar apenas UMA caixa de pesquisa e edição para todas as colunas

Se puder detalhar melhor.

[]s

Beleza,
Como você já tem uma copia da planilha fica mais fácil de explicar.
1º - Eu criei uma caixa de pesquisa no topo da coluna D
2º - Preciso que essa caixa de pesquisa funcione com todos os dados e todas as colunas (Ex.: Numero, data, local, status, etc.), atualmente esta filtrando a coluna de "status".
3º - Esse filtro tem que deixar a opção de edição nas células (igual o que esta ocorrendo na coluna "status")

 
Postado : 14/11/2014 11:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Gleiner, cheguei a ver o seu ultimo anexo e não entendi, pois diz que está funcionando mas não está, a rotina está incorreta, acredito ter anexado o modelo errado.
No modelo que eu havia enviado, esta funcionando corretamente, filtrando pela Coluna STATUS, não entendi porque modificou a rotina neste seu modelo.

Mas conforme solicitou agora:
1º - Eu criei uma caixa de pesquisa no topo da coluna D
Esta implementação está no modelo que enviei e funcionando
2º - Preciso que essa caixa de pesquisa funcione com todos os dados e todas as colunas (Ex.: Numero, data, local, status, etc.), atualmente esta filtrando a coluna de "status".
Se a intenção é utilizar somente um ComboBox conforme está no modelo que enviei e no mesmo ter varias opções de filtragem com dados em outras colunas, terá de criar algumas condições utilizando "IF" ou o "Select Case" para capturar o Valor selecionado no Combo e direcionar
Por exemplo na rotina que eu havia passado :
ActiveSheet.Range("$A$4:$R$65536").AutoFilter Field:=17, Criteria1:=sFiltra, VisibleDropDown:=True
O Filtro está sendo realizado pela coluna 17 ou seja Coluna "Q" que contem o Rótulo STATUS, se quer outra coluna, é só alterar o 17, ou seja, se for pela coluna "R" - "ANEXOS" a instrução ficaria:
ActiveSheet.Range("$A$4:$R$65536").AutoFilter Field:=18, Criteria1:=sFiltra, VisibleDropDown:=True

com IF seria mais ou menos assim :

If sFiltra = "Novo" Then
ActiveSheet.Range("$A$4:$R$65536").AutoFilter Field:=17, Criteria1:=sFiltra, VisibleDropDown:=True

Else IF sFiltra = "ValorEmAnexo" Then
ActiveSheet.Range("$A$4:$R$65536").AutoFilter Field:=18, Criteria1:=sFiltra, VisibleDropDown:=True

Não testei, mas é a lógica.

3º - Esse filtro tem que deixar a opção de edição nas células (igual o que esta ocorrendo na coluna "status")
Esta realmente não entendi, que opção de Edição, as celulas na Coluna STATUS estão com Validação e podem ser alteradas, mas depois teria de filtrar novamente.

[]s

 
Postado : 19/11/2014 7:26 am
(@gleiner)
Posts: 0
New Member
Topic starter
 

Mauro, desculpe a minha ignorância, realmente esta sendo um pouco complicado explicar. Necessidade para execução.
Vou tentar praticar com o que me disse acima, contudo, vou deixar a planilha em anexo caso queira ver a ultima modificação que fiz.
Atualmente, esta com o primeiro item incluso.

Private Sub Filtro_Change()

If Filtro.Text <> "" Then
Selection.AutoFilter Field:=17, Criteria1:=CStr("*" + Filtro.Text) + "*"
Else
Selection.AutoFilter Field:=17
End If

End Sub

 
Postado : 19/11/2014 1:30 pm
Página 2 / 2