Как просматривать электронные таблицы в vba (с примерами)
Для навигации по листам книги Excel с помощью VBA можно использовать следующие методы:
Способ 1. Просмотрите все таблицы.
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
End Sub
Этот конкретный макрос проходит через каждый лист книги и устанавливает значение в ячейке A1 каждого листа равным 100.
Способ 2. Просмотрите все листы, за исключением определенных.
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
Этот конкретный макрос проходит по каждому листу книги и устанавливает значение в ячейке A1 каждого листа равным 100, за исключением листов с именами Sheet2 и Sheet3 .
В следующих примерах показано, как использовать каждый из этих методов на практике с книгой Excel, содержащей четыре пустых листа:
Пример 1. Просмотр всех листов
Мы можем использовать следующий макрос, чтобы установить значение ячейки A1 на каждом листе нашей книги равным 100:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
Когда мы запустим этот макрос, значение ячейки A1 на каждом листе книги будет равно 100:
Пример 2. Просмотр всех листов, за исключением определенных.
Допустим, мы хотим просмотреть каждый лист и установить значение ячейки A1 на каждом листе равным 100, за исключением листов с именами Sheet2 и Sheet3 .
Для этого мы можем создать следующий макрос:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
Когда мы запустим этот макрос, мы увидим, что Sheet1 и Sheet4 имеют значение 100 в ячейке A1 .
Однако Лист2 и Лист3 не будут иметь значения в ячейке A1 , поскольку мы использовали функцию Case , чтобы игнорировать эти листы:
Обратите внимание, что в этих примерах мы просмотрели каждый рабочий лист и установили значение ячейки, равное определенному значению, просто для простоты.
Однако при желании вы можете использовать аналогичный синтаксис с оператором For Each для выполнения гораздо более сложных задач на каждом листе.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как подсчитать количество строк в диапазоне
VBA: как подсчитать ячейки с определенным текстом
VBA: как писать функции COUNTIF и COUNTIFS