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?
- Abra o editor de código VBA pressionando Tudo + F11 .
- Insira um módulo clicando no botão Módulo opção dentro do Inserir aba.
- 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:
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
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
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