Inquiridor
COMO OBTER O NÚMERO DA LINHA FILTRADA NO VBA

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
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
-
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.
-
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
-
-
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
-
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. -
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,
-
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.- Editado Fabio I terça-feira, 29 de outubro de 2019 11:15
- Marcado como Resposta FELIX MAURICIO GASIGLIA terça-feira, 29 de outubro de 2019 14:18
- Não Marcado como Resposta FELIX MAURICIO GASIGLIA terça-feira, 29 de outubro de 2019 14:18
-
-