none
Como varrer com For Each so as celulas nao vazias de uma area nomeada RRS feed

  • Pergunta

  • Bom dia.

    Tenho uma area nomeada como tabela1 nas celulas A1:C10 e na celula A1 tem uma formula =If(H1="","",H1). Queria apresentar os dados da coluna A com MsgBox caso os dados nao sejam vazias e utilizei o Cells.SpecialCells(xlCellTypeVisible) mas nao tive sucesso como mostrado abaixo.

    Sub teste()
    Dim celula As Range
    On Error Resume Next
    For Each celula In Range("tabela1").Columns("a").Cells.SpecialCells(xlCellTypeVisible)
        MsgBox celula.Value 
    Next
    End Sub

    Tem como substituir esse Cells.SpecialCells(xlCellTypeVisible) com um codigo que diz <>"" ?

    Tadao

    quinta-feira, 5 de janeiro de 2017 04:34

Respostas

  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Sub Main()
        Dim iCell As Range
        
        For Each iCell In Range("A1:C10").Cells
            If IsEmpty(iCell) Then GoTo Continue
            
            MsgBox iCell.Value, vbInformation
    Continue:
        Next iCell
        
    End Sub
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 5 de janeiro de 2017 08:57
    Moderador

Todas as Respostas

  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Sub Main()
        Dim iCell As Range
        
        For Each iCell In Range("A1:C10").Cells
            If IsEmpty(iCell) Then GoTo Continue
            
            MsgBox iCell.Value, vbInformation
    Continue:
        Next iCell
        
    End Sub
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 5 de janeiro de 2017 08:57
    Moderador
  • Obrigado pelo pronto retorno Felipe.............e Feliz Ano Novo.

    Testei o codigo e funcionou perfeitamente.

    Tomei a liberdade de fazer uma pequena modificacao pois a coluna A tem formulas que retornam "" quando a coluna H for vazia e a range A1:C10 renomeei de tabela ficando como abaixo.

    Tadao

    Sub Main()
        Dim iCell As Range
        
        For Each iCell In Range("tabela").Columns("A").Cells
            If iCell.Value = "" Then GoTo Continue
            
            MsgBox iCell.Value, vbInformation
    Continue:
        Next iCell
        
    End Sub
    

    quinta-feira, 5 de janeiro de 2017 11:52
  • Que bom que resolveu seu problema.

    Sugiro que use uma tabela "de verdade" ao invés de um intervalo nomeado: http://ambienteoffice.com.br/blog/objeto-tabela/


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 5 de janeiro de 2017 12:05
    Moderador
  • Obrigado pela sugestao Felipe.

    Ja uso em alguns casos a Tabela de verdade, mas ainda nao domino totalmente.

    No proxino trabalho pretendo usar com mais frequencias as Tabelas de verdade e o seu blog que mandaste ira ser de muita ajuda e caso tenha duvidas gostaria de contar novamente com a sua ajuda.  Obrigado.

    Tadao

    sexta-feira, 6 de janeiro de 2017 04:21