Ir ao conteúdo

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


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Boa noite,

 

 

como faço para percorrer com o loop, apenas as células visíveis no filtro? Acredito que se usa o 'xlCellTypeVisible', mas não sei como encaixá-lo em algo como:

 

do while worksheets("Plan1").cells(i,1).value <> ""

 

  i=i+1

 

loop

 

obrigado

  • Solução
Postado


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

Postado
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.

Postado

 

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.

  • 5 anos depois...
Postado

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

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...