Ir ao conteúdo
  • Cadastre-se

como percorrer com loop apenas as célular visíveis no filtro - excel 2007


Ir à solução Resolvido por Visitante,

Posts recomendados

  • Solução


Sub LoopPorCélulasVisíveis()

 Dim cél As Range

  For Each cél In Range("A1", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible)

   MsgBox cél.Address(0, 0)

   

  Next cél

End Sub

Link para o comentário
Compartilhar em outros sites

Bom dia osvaldo, é isso mesmo... 
 
eu encontrei uma outra maneira, mas no meu caso estou usando em um filtro. No caso o A15 seria a linha do cabeçalho. E também usei o End(xlDown) pois ele seleciona pra baixo até a última linha. No seu caso xlUp. Acredito que os dois tenha a mesma eficiência né?
 
   
Set rng = Range("A15", Range("A15").End(xlDown)).SpecialCells(xlCellTypeVisible)
    
For Each cell In rng
    
     celula = cell.Address(False, False)
 
Next cell
 
 
Obrigado!

Bom dia diego,

 

o loop é uma estrutura de programação que faz com que o código seja repetido várias vezes com determinadas condições, automatizando e deixando o seu programa muito eficiente e também facilitando a sua vida. Existem diversas estruturas. Aconselho você a procurar apostilas ou na internet mesmo, pois existem explicações completas e fáceis de entender. Eu achei um link legal:

 

http://juliobattisti.com.br/artigos/office/vba_access_p9.asp

 

Abraço.

Link para o comentário
Compartilhar em outros sites

 

E também usei o End(xlDown) pois ele seleciona pra baixo até a última linha. No seu caso xlUp. Acredito que os dois tenha a mesma eficiência né?
 

 

Olá, Tiago.

Cada um dos comandos acima é eficiente pois executa exatamente o que se espera dele e entendo que não cabe comparação entre os dois quanto à eficiência.

 

Talvez você queira dizer que os dois comandos retornam resultados iguais, é isso?

 

Se foi isso que você quis dizer, a resposta é depende! O comando 'xlUp' retorna sempre a última linha preenchida na tabela, na coluna pesquisada, ao passo que o 'xlDown' retorna a última linha preenchida somente se não houver células vazias na tabela, na coluna pesquisada.

 

Por exemplo no seu caso. Se houver dados em 'A15:A20', 'A21' vazia, mais dados em 'A22:A30'.

O comando 'xlUp' irá retornar linha 30, ao passo que o comando 'xlDown' irá retornar linha 20.

 

O uso de um ou de outro depende do resultado desejado. Se o objetivo for obter sempre a última linha preenchida o 'xlUp' é o cara.

Link para o comentário
Compartilhar em outros sites

  • 5 anos depois...

Como eu faço para criar uma linha com o número da segunda celula visivel no filtro

 

 

por exemplo a celula do meu cabeçalho é a1, mas a que filtra, seria a7321, eu quero que ache essa segunda linha, independente do que eu filtrar
 

linha_inicial = Range(A1).end(xlup).row + 1  - essa é a formula que eu usaria, mas não está dando certo, está dando o valor da celula A2

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...