Usuário com melhor resposta
Como varrer com For Each so as celulas nao vazias de uma area nomeada

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
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
- Marcado como Resposta Antonio Tadao kano quinta-feira, 5 de janeiro de 2017 11:44
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
- Marcado como Resposta Antonio Tadao kano quinta-feira, 5 de janeiro de 2017 11:44
-
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
-
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
-
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