Как перебрать все листы с помощью vba в excel?
Есть два способа просмотреть все листы рабочей книги.
- ДЛЯ СЛЕДУЮЩЕГО ЦИКЛА
- ДЛЯ КАЖДОГО КУДРА
1. Используйте для каждого цикла
Как вы знаете, с помощью FOR EACH вы можете перебирать все объекты в коллекции и в рабочей книге, а рабочие листы представляют собой коллекцию всех рабочих листов.
Используйте следующие шаги:
- Сначала объявите переменную, которая будет ссылаться на рабочий лист цикла.
- После этого запустите цикл с ключевым словом «Для каждого» и обратитесь к каждому листу в книге.
- Теперь предположим, что вы хотите ввести значение в ячейку A1 каждого листа. Вы можете использовать код записи следующим образом.
- В конце используйте ключевое слово «End», чтобы завершить цикл.
Полезные ссылки: Запуск макроса – Средство записи макросов – Редактор Visual Basic – Персональный справочник по макросам
Sub vba_loop_sheets() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Range("A1").Value = "Yes" Next ws End Sub
Этот код проходит каждый лист и вводит значение в ячейку A1 каждого листа. Преимущество использования этого метода заключается в том, что он проходит через все листы книги.
А если вы хотите просмотреть все листы в закрытой книге, используйте код, как показано ниже.
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. Используйте цикл «Для следующего»
Вы также можете использовать цикл FOR NEXT , где вы можете использовать количество листов, чтобы решить, сколько циклов нужно сделать, и использовать счетчик циклов для ссылки на каждый лист.
Вот шаги, которые вам необходимо выполнить:
- Во-первых, вам нужно объявить две переменные для хранения значения счетчика цикла и одну для количества листов в книге.
- Теперь установите значение переменной «shtCount», эквивалентное количеству листов в вашей книге.
- После этого запустите код цикла, используя ключевое слово «For i», и используйте количество листьев максимального значения для счетчика цикла.
- Отсюда вам нужно использовать счетчик циклов, чтобы просмотреть все листы и ввести значение «Да» в ячейку A1 каждого листа.
Полный код
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
А если вы хотите просмотреть закрытую книгу, используйте следующий код.
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