Как перебрать все листы с помощью vba в excel?

Есть два способа просмотреть все листы рабочей книги.

  • ДЛЯ СЛЕДУЮЩЕГО ЦИКЛА
  • ДЛЯ КАЖДОГО КУДРА

1. Используйте для каждого цикла

Как вы знаете, с помощью FOR EACH вы можете перебирать все объекты в коллекции и в рабочей книге, а рабочие листы представляют собой коллекцию всех рабочих листов.

Используйте следующие шаги:

  1. Сначала объявите переменную, которая будет ссылаться на рабочий лист цикла.
    declare-a-variable-to-refer
  2. После этого запустите цикл с ключевым словом «Для каждого» и обратитесь к каждому листу в книге.
    start-the-loop-with-the-keyword
  3. Теперь предположим, что вы хотите ввести значение в ячейку A1 каждого листа. Вы можете использовать код записи следующим образом.
    want-to-enter-a-value-in-the-cell
  4. В конце используйте ключевое слово «End», чтобы завершить цикл.
    use-the-keyword-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 , где вы можете использовать количество листов, чтобы решить, сколько циклов нужно сделать, и использовать счетчик циклов для ссылки на каждый лист.

Вот шаги, которые вам необходимо выполнить:

  1. Во-первых, вам нужно объявить две переменные для хранения значения счетчика цикла и одну для количества листов в книге.
    declare-to-variable-to-write-count-value
  2. Теперь установите значение переменной «shtCount», эквивалентное количеству листов в вашей книге.
    set-the-value-for-the-shtcount
  3. После этого запустите код цикла, используя ключевое слово «For i», и используйте количество листьев максимального значения для счетчика цикла.
    start-the-code
  4. Отсюда вам нужно использовать счетчик циклов, чтобы просмотреть все листы и ввести значение «Да» в ячейку A1 каждого листа.
    use-the-loop-counter-to-loop

Полный код

 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