VBA para cada exemplo (referência rápida)

Este tutorial mostrará exemplos de uso do For Each Loop no VBA. Clique aqui para saber mais sobre loops em geral.

Para Cada Loop

O For Each Loop permite que você faça um loop através cada objeto em uma coleção:

  • Todas as células em um intervalo
  • Todas as planilhas em uma pasta de trabalho
  • Todas as pastas de trabalho abertas
  • Todas as formas em uma planilha
  • Todos os itens em uma matriz
  • e mais!

Para cada um: exemplos básicos

Esses exemplos demonstrarão como configurar os loops For Each para percorrer diferentes tipos de objetos.

Loop Through Cells

Este procedimento percorrerá cada célula no intervalo A1: A10, configurando a célula para que seja igual a si mesma.

12345678 Sub ForEachCell ()Dim Cell As RangePara cada célula nas planilhas ("Planilha1"). Intervalo ("A1: A10")Cell.Offset (0, 1) .value = Cell.valuePróxima CélulaEnd Sub

Loop Through Sheets

Este procedimento percorrerá cada folha em uma pasta de trabalho, exibindo cada folha.

12345678 Sub ForEachSheets ()Dim ws como planilhaPara cada ws nas folhasws.Visible = TruePróxima FolhaEnd Sub

Percorrer as pastas de trabalho

Este procedimento percorrerá cada pasta de trabalho, fechando cada uma.

12345678 Sub ForEachWorkbooks ()Dim wb como pasta de trabalhoPara cada wb nas pastas de trabalhowb.FecharPróximo wbEnd Sub

Loop Through Shapes

Este procedimento percorrerá cada forma na Folha1, excluindo cada uma.

12345678 Sub ForEachShape ()Dim Shp como formaPara cada envio nas folhas ("Folha1"). FormasShp.DeletePróximo ShpEnd Sub

Loop Through Charts

Este procedimento percorrerá cada Gráfico na Folha1, excluindo cada um.

12345678 Sub ForEachCharts ()Dim cht As ChartObjectPara cada cht em planilhas ("Planilha1"). ChartObjectscht.DeletePróximo chtEnd Sub

Loop por meio de tabelas dinâmicas

Este procedimento percorrerá cada Tabela Dinâmica na Folha1, limpando cada uma

12345678 Sub ForEachPivotTables ()Dim pvt como tabela dinâmicaPara cada pvt em folhas ("Folha1"). Tabelas dinâmicaspvt.ClearTablePróximo pvtEnd Sub

Loop por meio de tabelas

Este procedimento percorrerá cada Tabela na Folha1, excluindo cada uma.

12345678 Sub ForEachTables ()Dim tbl As ListObjectPara cada tbl em folhas ("Folha1"). ListObjectstbl.DeletePróximo tblEnd Sub

Loop Through Items in Array

Este procedimento percorrerá cada item em um Array, exibirá cada valor em uma msgbox,

12345678910 Sub ForEachItemInArray ()Dim arrValue As VariantDim item como variantearrValue = Array ("Item 1", "Item 2", "Item 3")Para cada item em um valorItem MsgBoxPróximo itemEnd Sub

Loop Through Numbers

Este procedimento percorrerá cada número em um Array, exibirá cada valor em uma msgbox,

12345678910111213 Sub ForEachNumberInNumbers ()Dim arrNumber (1 a 3) As IntegerDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Para cada número em arrNumberMsgbox NumPróximo numEnd Sub

Para Cada Construtor de Loop

Os exemplos neste artigo foram construídos com o Loop Builder na nossa Suplemento VBA: AutoMacro.

o Loop Builder torna muito fácil gerar código para percorrer objetos. AutoMacro também contém muitos outros Geradores de código, um extenso Biblioteca de Código, e poderoso Ferramentas de codificação.

Para cada um - se

Você também pode usar instruções If dentro de loops para testar se os objetos atendem a certos critérios, realizando apenas ações nos objetos que atendem aos critérios. Aqui está um exemplo de loop através de cada célula em um intervalo:

Para cada célula no intervalo - se

1234567891011121314 Sub If_Loop ()Dim Cell como RangePara cada célula no intervalo ("A2: A6")Se Cell.Value> 0 ThenCell.Offset (0, 1) .Value = "Positivo"ElseIf Cell.Value <0 ThenCell.Offset (0, 1) .Value = "Negativo"OutroCell.Offset (0, 1) .Value = "Zero"Fim sePróxima CélulaEnd Sub

Para cada exemplo comum

Fechar todas as pastas de trabalho

Este procedimento fechará todas as pastas de trabalho abertas, salvando as alterações.

123456789 Sub CloseAllWorkbooks ()Dim wb como pasta de trabalhoPara cada wb nas pastas de trabalhowb.Close SaveChanges: = TruePróximo wbEnd Sub

Ocultar todas as planilhas

Este procedimento irá ocultar todas as planilhas.

12345678 Sub HideAllSheets ()Dim ws como planilhaPara cada ws nas folhasws.Visible = xlSheetHiddenPróximo wsEnd Sub

Reexibir todas as planilhas

Este procedimento irá exibir todas as planilhas.

12345678 Sub UnhideAllSheets ()Dim ws como planilhaPara cada ws nas folhasws.Visible = xlSheetVisiblePróximo wsEnd Sub

Proteja todas as planilhas

Este procedimento protegerá todas as planilhas.

12345678 Sub ProtectAllSheets ()Dim ws como planilhaPara cada ws nas folhasws.Protect Password: = "…"Próximo wsEnd Sub

Desproteger todas as planilhas

Este procedimento irá desproteger todas as planilhas.

12345678 Sub UnprotectAllSheets ()Dim ws como planilhaPara cada ws nas folhasws.Unprotect Password: = "…"Próximo wsEnd Sub

Excluir todas as formas em todas as planilhas

Este procedimento excluirá todas as formas em uma pasta de trabalho.

123456789101112 Sub DeleteAllShapesOnAllWorksheets ()Dim Sheet As WorksheetDim Shp como formaPara cada ws nas folhasPara cada Shp em ws.ShapesShp.DeletePróximo ShpPróximo wsEnd Sub

Atualizar todas as tabelas dinâmicas

Este procedimento atualizará todas as tabelas dinâmicas em uma planilha.

12345678 Sub RefreshAllPivotTables ()Dim pvt como tabela dinâmicaPara cada pvt em folhas ("Folha1"). Tabelas dinâmicaspvt.RefreshTablePróximo pvtEnd Sub

Usando For Each em Access VBA

O loop For Each funciona da mesma maneira no Access VBA e no Excel VBA. O exemplo a seguir removerá todas as tabelas do banco de dados atual.

123456789 Sub RemoveAllTables ()Dim tdf As TableDefDim dbs como banco de dadosDefinir dbs = CurrentDbPara cada tdf em dbs.TableDefsDoCmd.DeleteObject tdf.NameCicloDefinir dbs = NothingEnd Sub
wave wave wave wave wave