Notifications
Clear all

Macro destacar seleção no Auto Filtro

6 Posts
3 Usuários
0 Reactions
2,041 Visualizações
(@danyahoo)
Posts: 49
Trusted Member
Topic starter
 

Prezados boa tarde!!!

Gostaria da ajuda de vocês novamente.

Tenho uma plhanilha com 36 colunas, todas com auto fitro.

Gostaria que, quando selecionasse algo pelo alto filtro, a coluna inteira mudasse de cor.

Isso facilitaria muito, depois da análise dos dados, a achar a coluna que está com o auto filtro.

É possível através do VBA?

Obrigado.

 
Postado : 18/05/2012 12:37 pm
(@tomamais)
Posts: 26
Eminent Member
 

Colega,

Acho que é isso que procura:

http://blog.livedoor.jp/andrewe/archives/19415538.html

Tem uma pitada de VBA, mas faz o efeito desejado. Se aplicar a formatação condicional a toda a coluna, deve funcionar.

Abraços

 
Postado : 18/05/2012 1:52 pm
(@danyahoo)
Posts: 49
Trusted Member
Topic starter
 

Olá Timamais,

Tentei acessar aqui do serviço e o link foi bloqueado, la em casa testei e acessou, porem não estava com a planilha para testar.

Vou iniciar uma pesquisa aqui para encontrar alguma solução, caso não encontre a noite verificarei de casa.

Daniel

 
Postado : 21/05/2012 7:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Esse código faz algo que deve te ajudar....faça o DownLoad no link

Ao selecionar e filtrar, a coluna ficará colorida!!
Fonte: http://www.vbaexpress.com/kb/getarticle.php?kb_id=365

Option Explicit

'This sub goes in a regular module sheet
Sub ColorAutoFilter()
'This sub should be triggered by the recalculation of the worksheet and then called by a
    'Worksheet_Calculate sub. You can force a recalculation after an AutoFilter by using the "trick"
    'of including at least one volatile cell in your worksheet. A volatile cell has a formula using
    'volatile functions like NOW, TODAY, OFFSET, INDIRECT, RAND, INFO or CELL (except when CELL
    'uses the "filename" parameter).
'If more than one worksheet uses AutoFilter, then each Worksheet_Calculate sub can call ColorAutoFilter
Dim FilterNum As Long
With ActiveSheet
    If .AutoFilterMode Then
        For FilterNum = 1 To .AutoFilter.Filters.Count
            If .AutoFilter.Filters(FilterNum).On Then
                .AutoFilter.Range.Columns(FilterNum).Interior.ColorIndex = 6   'yellow
            Else
                .AutoFilter.Range.Columns(FilterNum).Interior.ColorIndex = xlNone
            End If
         Next
    Else
        .Cells.Interior.ColorIndex = xlNone
    End If
End With
End Sub
 
Postado : 21/05/2012 11:36 am
(@tomamais)
Posts: 26
Eminent Member
 

DanyahoO,

Segue anexo o modelo usado na página do link.

Abraços

 
Postado : 21/05/2012 12:30 pm
(@danyahoo)
Posts: 49
Trusted Member
Topic starter
 

Olá Pessoal,

Duas excelentes soluções, porem nas duas encontrei barreiras. O legal é que o ponto forte de um código é o ponto fraco do outro e vice versa hehehe

Solução do Alexandre: Consigo implantar na planilha, porem perco a cor do preenchimento da linha onde está o AutoFiltro. A velocidade de execução é muito boa, mesmo quando há uma grande quantidade de dados. O ideal era o código manter a formatação onde está o AutoFiltro e mudar a cor apenas dos dados abaixo.

Solução Tomamais: Consegui implantar na planilha, acrescentei no código principal para inserir a formatação condicional apenas na quantidade de linhas que há (É uma planilha de pesquisa e traz dados apenas procurados, podendo trazer de 1 a 57k de linhas). Ficaria perfeito se não fosse pela velocidade de execução, quando tem poucos dados a execução é veloz, mas quanto mais dados, maior é o tempo de execução, inviabilizando este código.

Como resolver este problema? Tem como fundir os dois códigos?

A formatação da Linha do AutoFiltro é uma cor gradiente, com range de A6 até AT6.

 
Postado : 21/05/2012 2:33 pm