Como usar o loop For Each no Excel VBA

Como usar o loop For Each no Excel VBA
Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Loops e VBA andam juntos, e por um bom motivo também. Ao lidar com objetos do Microsoft Office, como pastas de trabalho, planilhas e intervalos, os loops podem ajudá-lo a alternar entre cada um deles com relativa facilidade.





Embora mais ou menos todos os loops VBA funcionem bem com objetos, o loop 'for each' é uma das melhores opções para trabalhar com coleções de objetos. Se você é novo no Excel VBA e deseja dominar o loop for each, pode aprender rapidamente com alguns desses exemplos. Aqui está tudo o que você precisa saber sobre esse loop por excelência.





MAKEUSEDO VÍDEO DO DIA ROLE PARA CONTINUAR COM O CONTEÚDO

Para a sintaxe de cada loop

A sintaxe do loop for each é bastante semelhante ao loop for usual no Excel VBA. Aqui está a sintaxe:





 For each variable_name in object_collection 

[statement]

[statement]

[statement]

Next variable_name

O loop começa com a palavra-chave 'for each'; você pode usar qualquer nome de variável, seguido pela coleção de objetos. O objeto em cada loop pode ser células, intervalos, planilhas e até pastas de trabalho. Tal é a beleza deste loop; oferece a flexibilidade de trabalhar com diferentes coleções do Excel.

O loop percorre cada valor de coleção e armazena a referência no nome da variável definida. Após a execução, o VBA executa as instruções armazenadas no loop e move para o próximo objeto na coleção (o próximo palavra-chave é útil aqui). Vamos entender a estrutura do código com um exemplo básico.



Como usar o loop For Each no Excel VBA

Suponha que você queira imprimir um número nas células A1 a A10. A melhor abordagem é usar for each loop com a função range e deixar o código fazer o necessário. Veja como você pode fazer essa tarefa simples:

Por que os downloads do Chrome são tão lentos?
  1. Abra o editor de código VBA pressionando Tudo + F11 .
  2. Insira um módulo clicando no botão Módulo opção dentro do Inserir aba.   Planilha do Excel com uma saída de coluna's code editor
  3. Crie uma sub-rotina usando o comando sub() na janela do módulo do editor de código. Certifique-se de atribuir um nome significativo à sub-rotina. Para este exemplo, você pode usar o nome for_each_loop .

Agora que o básico está fora do caminho, é hora de começar a escrever o código. Dentro da sub-rotina, digite os seguintes comandos:





 Dim cell as range 

For each cell in Sheets("Sheet1").Range("A1:A10")

cell.value = 10

Next cell

Quando o código é executado, o c variável irá armazenar o valor de A1. Em seguida, ao passar para a instrução dentro do loop, ele avalia o comando e insere um valor de 10 na célula definida, ou seja, a célula A1.

Por fim, à medida que se move para a palavra-chave Next, ele se move para o próximo valor, ou seja, a célula A2. O loop é executado até atingir a célula A10. Esta é a saída final:





  Trecho de código VBA dentro do editor e saída do Excel

Usando o loop com objetos: células, planilhas e pastas de trabalho

O Excel tem três tipos principais de objetos com os quais você trabalha regularmente. São células, planilhas e pastas de trabalho. Veja como você pode usar o loop com todos os três tipos de objeto.

criando um Windows 10 install usb

Trabalhando com células e loops juntos

Suponha que você queira adicionar um valor e algumas condições de formatação a um intervalo de células em Sheet1. Como primeiro passo, você precisa definir as condições dentro do loop, seguidas dos comandos de formatação.

Digite o seguinte código dentro de uma sub-rotina.

 Sub for_each_loop() 



Dim c As Range



For Each c In Sheets("Sheet1").Range("A1:A10")



With c

.Value = 10

.Font.Color = vbRed

.Font.Bold = True

.Font.Strikethrough = True



End With



Next c



End Sub
  Trecho de código VBA dentro do editor de codificação

O com A função é útil ao executar várias funções com um objeto específico. Como você deseja executar uma série de tarefas com a variável c, você pode combiná-las usando a função with..end with.

O loop iguala o valor de c com o valor de cada célula e insere o valor como 10. Além disso, ele altera a cor da célula para vermelho, coloca o valor em negrito e o risca. Depois de concluir todas as etapas, ele se move para o próximo valor definido no intervalo.

wi-fi lento no telefone, mas rápido no laptop

Usando o loop para planilhas de controle

Semelhante ao exemplo acima, você pode usar o loop for each para controlar as planilhas. Que tal mudar o nome de Sheet1 para Sheet3 usando VBA?

Você pode usar o seguinte código para renomear uma planilha existente no Excel usando o VBA:

 Sub for_each_loop_sheets() 



For Each sht In ThisWorkbook.Sheets



If sht.Name = "Sheet1" Then



sht.Name = "Sheet3"



End If



Next sht



End Sub
  Trecho de código VBA dentro do editor

O código percorre cada planilha dentro da pasta de trabalho e verifica o nome de cada planilha. Se encontrar o nome Sheet1, ele o altera para Sheet3. Ele avança pelas planilhas restantes, se houver, dentro da pasta de trabalho. Uma vez que a execução do código atinge a última planilha, ela sai do loop e da sub-rotina.

Entre alguns outros usos comuns, você pode mesclar várias planilhas usando VBA e atualize o conteúdo em uma única folha usando loops.

Alternar entre pastas de trabalho com o loop

Por fim, você pode usar o loop for each para alternar entre pastas de trabalho diferentes e executar tarefas específicas. Vamos demonstrar esta função com um exemplo.

Você pode usar comandos VBA para adicionar três novas pastas de trabalho e fechar todas as abertas juntas. Veja como você pode fazer isso:

 Sub loop_wrkbook() 



Dim wrkbook as workbook



Workbooks.Add

Workbooks.Add

Workbooks.Add



For Each wrkbook In Workbooks



wrkbook.



Next wrkbook



End Sub