Como iterar por todas as planilhas usando vba no excel?
Existem duas maneiras de examinar todas as planilhas que você possui em uma pasta de trabalho.
- PARA O PRÓXIMO LOOP
- PARA CADA CURL
1. Use para cada loop
Como você sabe, com FOR EACH você pode iterar sobre todos os objetos da coleção e em uma pasta de trabalho, as planilhas são uma coleção de todas as planilhas.
Use as seguintes etapas:
- Primeiro, declare uma variável para referenciar uma planilha para o loop.
- Depois disso, inicie o loop com a palavra-chave “For each” e consulte cada planilha da pasta de trabalho.
- Agora suponha que você queira inserir um valor na célula A1 de cada planilha, você pode usar o código de gravação da seguinte forma.
- No final, use a palavra-chave “End” para encerrar o loop.
Links úteis: Executar uma macro – Gravador de macro – Editor Visual Basic – Manual pessoal de macros
Sub vba_loop_sheets() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Range("A1").Value = "Yes" Next ws End Sub
Este código percorre cada planilha e insere o valor na célula A1 de cada planilha. A vantagem de usar esse método é que ele percorre todas as planilhas da pasta de trabalho.
E se você quiser navegar por todas as planilhas em uma pasta de trabalho fechada, use o código abaixo.
Sub vba_loop_sheets() Dim wb As Workbook Dim ws As Worksheet Application.DisplayAlerts = False Set wb = Workbooks.Open("C:UsersDellDesktopsample-file.xlsx") For Each ws In wb.Worksheets ws.Range("A1").Value = "Done" Next ws wb.Close SaveChanges:=True Application.DisplayAlerts = True End Sub
2. Use o loop For Next
Você também pode fazer um loop usando o loop FOR NEXT , onde você pode usar o número de folhas para decidir quantos loops fazer e usar o contador de loops para se referir a cada folha.
Aqui estão as etapas que você precisa seguir:
- Primeiro, você precisa declarar duas variáveis para armazenar o valor de contagem do loop e uma para o número de planilhas que você possui na pasta de trabalho.
- Agora, defina o valor da variável “shtCount” equivalente ao número de planilhas que você possui na pasta de trabalho.
- Depois disso, inicie o código do loop usando a palavra-chave “For i” e use a contagem de folhas do valor máximo para o contador do loop.
- A partir daqui, você precisa usar o contador de loops para percorrer todas as planilhas e inserir o valor “Sim” na célula A1 de cada planilha.
Código completo
Sub vba_loop_sheets() Dim i As Long Dim shtCount As Long shtCount = Sheets.Count For i = 1 To shtCount Sheets(i).Range("A1").Value = "Yes" Next i End Sub
E se você quiser navegar em uma pasta de trabalho fechada, use o código a seguir.
Sub vba_loop_sheets() Dim i As Long Dim shtCount As Long Set wb = Workbooks.Open("C:UsersDellDesktopsample-file.xlsx") shtCount = wb.Sheets.Count Application.DisplayAlerts = False For i = 1 To shtCount wb.Sheets(i).Range("A1").Value = "Yes" Next i wb.Close SaveChanges:=True Application.DisplayAlerts = True End Sub