Как просматривать электронные таблицы в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *