none
Auto filtro e Classificar RRS feed

  • Pergunta

  • Olá, gostaria da ajuda da comunidade sobre VBA no Excel. O cenário é o seguinte, tenho um planilha com dados formatado como tabela (recurso Formatar como Tabela) com 8 campos, o campo "nome" está classificado por ordem crescente e existe um filtro aplicado para o campo estado mostrando apenas um dado. A pergunta é a seguinte: como eu faço para retornar via VBA qual campo foi classificado e qual campo está com filtro aplicado bem como qual o critério que foi selecionado?

    Por exemplo, o campo "nome" está classificado em ordem crescente e o campo "estado" está filtrando somente estados de "SP", como verificar se o campo que foi classificado foi "nome" e se o filtro foi aplicado para o campo "estado" somente estado de "SP"?? Grato.

    domingo, 21 de junho de 2015 22:23

Respostas

  • bom dia, o exemplo abaixo verifica os critérios ativos, armazena no array ativos e exibe na tela através de msgbox.

    Const QTDCAMPOS = 3
    
    Dim i As Integer
    Dim j As Integer
    Dim filtros(QTDCAMPOS) As Variant
    
    Erase filtros
    
    j = 0
    
    For i = 1 To QTDCAMPOS
    
        With Worksheets("NOMEDASUAPLANILHA")
         
         If .AutoFilterMode Then
            With .AutoFilter.Filters(i)
               If .On Then
                    filtros(j) = .Criteria1
                    j = j + 1
               End If
            End With
         
         End If
        
        End With
    
    Next i
    
    For i = 0 To j - 1
        MsgBox filtros(i)
    Next i

    Não esqueça de alterar NOMEDASUAPLANILHA para o nome da sua sheet ativa e a constante QTDCAMPOS para a quantidade de campos do seu filtro.

    Se a resposta lhe foi útil, por favor marque como resposta.

    Abs

    • Marcado como Resposta SenseiMatsumoto segunda-feira, 22 de junho de 2015 15:26
    segunda-feira, 22 de junho de 2015 11:37

Todas as Respostas

  • bom dia, o exemplo abaixo verifica os critérios ativos, armazena no array ativos e exibe na tela através de msgbox.

    Const QTDCAMPOS = 3
    
    Dim i As Integer
    Dim j As Integer
    Dim filtros(QTDCAMPOS) As Variant
    
    Erase filtros
    
    j = 0
    
    For i = 1 To QTDCAMPOS
    
        With Worksheets("NOMEDASUAPLANILHA")
         
         If .AutoFilterMode Then
            With .AutoFilter.Filters(i)
               If .On Then
                    filtros(j) = .Criteria1
                    j = j + 1
               End If
            End With
         
         End If
        
        End With
    
    Next i
    
    For i = 0 To j - 1
        MsgBox filtros(i)
    Next i

    Não esqueça de alterar NOMEDASUAPLANILHA para o nome da sua sheet ativa e a constante QTDCAMPOS para a quantidade de campos do seu filtro.

    Se a resposta lhe foi útil, por favor marque como resposta.

    Abs

    • Marcado como Resposta SenseiMatsumoto segunda-feira, 22 de junho de 2015 15:26
    segunda-feira, 22 de junho de 2015 11:37
  • Muito obrigado, era isso mesmo, valeu!
    segunda-feira, 22 de junho de 2015 15:36