none
COMO OBTER O NÚMERO DA LINHA FILTRADA NO VBA RRS feed

  • Pergunta

  • Senhores

    Tenho o código abaixo simples que funciona bem, mas preciso identificar o número da linha resultado do filtro.

         

    Sub FILTRA_VALOR_TABELA_LOCAL_FIXO_TEMP()

    Dim VALOR As String
    Dim LINHA As Long do 
        Windows("TrovaoFilmes_APP1.xlsm").Activate
        Sheets("LOCAL FIXO TEMP").Select
        Cells(2, 1).Select

        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$B$50000").AutoFilter Field:=1, Criteria1:= _
            "00101D222"


        'VALOR?


            VALOR = Cells(LINHA, 2).Value
        MsgBox "SEGUE O VALOR : " & VALOR
        Selection.AutoFilter
    End Sub

    quarta-feira, 21 de agosto de 2019 20:47

Todas as Respostas

  • Felix Mauricio Gasiglia,

       Seria isso?

    LINHA = Selection.Column

       Ou

    LINHA = Selection.Row

       Mas... O certo não seria "coluna"?

    Dim COLUNA As Long
    
    ...
    
       COLUNA = Selection.Column
       VALOR = Cells(2, LINHA).Value


    []'s,
    Fabio I.

    • Editado Fabio I quinta-feira, 22 de agosto de 2019 12:50
    quinta-feira, 22 de agosto de 2019 12:48
  • Olá Fábio

    Muito obrigado.

    Mas eu quero mesmo é identificar o número da linha do resultado do filtro.

    Por exemplo:

    Vamos supor que a linha resultado do filtro foi a linha = 3500, então, no código assim que o filtro for realizado eu quero selecionar esta linha e obter o número da mesma (3500). Tentarei com a sua dica.

    Muito obrigado amigo.

    quarta-feira, 2 de outubro de 2019 21:38
  • Fábio,

    Ele retorna a linha do visual e não linha real do dado.

    Observe que ele retorna a linha 2, porque o resultado do filtro é mostrado na linha 2, mas esse dado pertence a linha 28.

    Eu preciso do valor real que é o 28.

    Veja abaixo

    Sub teste_filtro()

    Dim LINHA As Long
    '
    ' teste_filtro Macro
    '

    '
    'DESABILITAR FILTRO ANTERIOR POR GARANTIA
    Windows("TrovaoFilmes_APP1.xlsm").Activate
    Sheets("LOCAL FIXO TEMP").Select

     
    For Each sht In Worksheets
      If sht.AutoFilterMode = True Then
        sht.AutoFilter.ShowAllData
      End If
    Next

    'FILTRAR
    Windows("TrovaoFilmes_APP1.xlsm").Activate
    Sheets("LOCAL FIXO").Select

    Range("A2").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$50000").AutoFilter Field:=1, Criteria1:="00101D028"
        
        
      LINHA = Selection.Row
        MsgBox "LINHA : " & LINHA
        
        
       
        
            
    End Sub


     

    quarta-feira, 2 de outubro de 2019 22:00
  • FELIX MAURICIO GASIGLIA,

       Não estou entendendo, você quer o valor da célula ou o número da linha e coluna célula?

      LINHA = Selection.Row
      COLUNA = Selection.Column
      VALOR = Cells(LINHA, COLUNA).Value
      MsgBox "VALOR : " & VALOR
    


    []'s,
    Fabio I.
    quinta-feira, 3 de outubro de 2019 11:10
  • Olá Fábio,

    Bom dia.

    Primeiramente lhe agradeço muito pela ajuda e pelo seu tempo dispensado nesta questão.

    Vamos lá outro exemplo:

    Tenho uma tabela, fiz um filtro automático, o conteúdo encontrado está na linha 20.

    Este conteúdo filtrado da linha 20 é exibido na linha 2, após o filtro, certo?

    Preciso que após o filtro, retorne em que linha foi encontrado o valor pesquisado (=20).

    Entendeu?

    Usando selection.row me retorna linha=2 e não 20, porque este conteúdo está exibido na linha 2.

    Atenciosamente,

    Felix Mauricio

    domingo, 27 de outubro de 2019 15:56
  • FELIX MAURICIO GASIGLIA,


       Para pegar o número da linha, basta usar o "ActiveCell.Row" ou o "ActiveCell.Address"

    Sub myActiveRow () 
       myRow = ActiveCell.Row 
       MsgBox myRow 
    End Sub 


    =================================
    Como obter o número da linha de uma célula em VBA

    http://ptcomputador.com/Software/spreadsheets/168438.html
    =================================
    Como obter o endereço da célula ativa no Excel?

    https://www.extendoffice.com/pt/documents/excel/2497-excel-get-active-cell.html
    =================================

    []'s,
    Fabio I.
    segunda-feira, 28 de outubro de 2019 10:49
  • Boa noite Fábio

    Ele continua trazendo a linha 2 onde a linha filtrada é exibida, não trás a linha onde foi encontrado o dado, a linha real.

    Mas de qq maneira, muito obrigado mesmo pelo tempo e ajuda, continuarei pesquisando, deve ter algum recurso.

    Forte abraço,

    terça-feira, 29 de outubro de 2019 00:32
  • FELIX MAURICIO GASIGLIA,

        Não... acho que eu que estou raciocinando errado, desculpe.
        Este exemplo localiza todas as células no intervalo A1:A500 na planilha um, que contém o valor 2 e o altera para o valor de "c.Address".
        O que você precisa é isso "c.Address":

    Sub teste()
    
        With Worksheets(1).Range("a1:a500")
            Set c = .Find(2, LookIn:=xlValues)
            
            If Not c Is Nothing Then
                'firstAddress = c.Address
                
                Do
                    'c.Value = firstAddress
    		c.Value = c.Address
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing
                
            End If
            
        End With
    
    End Sub

    =============================
    Método Range.Find (Excel)

    Valor de retorno
    Um objeto Range que representa a primeira célula onde essas informações são encontradas.

    https://docs.microsoft.com/pt-br/office/vba/api/excel.range.find
    =============================

    []'s,
    Fabio I.

    terça-feira, 29 de outubro de 2019 11:06
  • Olá Fábio 

    Valeu mesmo, era isso que eu precisava, ótima dica.

    Muito obrigado,

    Felix Mauricio

    terça-feira, 29 de outubro de 2019 14:20
  • FELIX MAURICIO GASIGLIA,

        Legal que deu certo!
        Por favor, se você gostou, não esqueça de me pontuar. 

    []'s,
    Fabio I.
    terça-feira, 29 de outubro de 2019 14:41