Ocultar uma coluna quando o filtro automático está ativo

0

Li este Mostrar informações de filtro de coluna do Excel nas células e basicamente faz o que é suposto. Mas eu quero esconder e mostrar a coluna A quando um filtro está ativo. Então eu coloquei o seguinte esconderijo código

Function CheckFilters(r As Range) As String

Set AWS = ActiveSheet
fstate = ""

If AWS.FilterMode Then
c = AWS.AutoFilter.Filters.Count

'go through each column and check for filters
For i = 1 To c Step 1
   If AWS.AutoFilter.Filters(i).On Then
        ActiveSheet.Columns(1).Hidden = True
        fstate = fstate & r(i).Value & ", "
   End If
Next i

'removes the last comma
fstate = Left(fstate, Len(fstate) - 2)

Else
ActiveSheet.Columns(1).Hidden = False
fstate = "Keine aktiven Filter"
End If

CheckFilters = fstate

End Function

Mas ActiveSheet.Columns(1).Hidden = True parece ser ignorado quando chamado de uma função. Quando eu chamo de um sub ele funciona.

Alguém pode me ajudar?

    
por mowses 24.09.2014 / 13:12

2 respostas

1

Eu encontrei uma solução link .

Eu tenho o seguinte sub

Sub HideUnHide()
Set AWS = ActiveSheet
fstate = ""

If AWS.FilterMode Then
    c = AWS.AutoFilter.Filters.Count

    For i = 1 To c Step 1
        If AWS.AutoFilter.Filters(i).On Then
            ActiveSheet.Columns(1).Hidden = True
        End If
    Next i

Else
    ActiveSheet.Columns(1).Hidden = False
End If
End Sub

E isso é chamado de Worksheet_Calculate

Sub Worksheet_Calculate()
    Call Modul1.HideUnHide
End Sub
    
por 24.09.2014 / 16:29
0

Em VBA funções são pouco confiáveis quando se trata de modificar a planilha (elas são ótimas para retornar valores). É melhor você usar um sub . O sub teria dois parâmetros; O intervalo de entrada e a string de saída.

    
por 24.09.2014 / 15:01