Для каждого в VBA - начиная с третьей таблицы стилей - PullRequest
0 голосов
/ 26 марта 2019

У меня есть много таблиц стилей в Workbook в Excel, и мне нужно внести некоторые изменения почти в каждую таблицу стилей. Первые два из них и последние несколько должны быть пропущены.

Я использую цикл For Each и действительно не знаю, как пропустить 2 первых элемента. С последними проблем нет, потому что я проверяю имя таблицы стилей и, если оно совпадает с моим условием, я разрываю цикл и выхожу.

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    ws.Activate
    If ws.Name = "03.2016PTF" Then Exit For
    'here's my code
Next

Если я выйду из цикла при запуске, я не буду вносить изменения в остальные документы.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Попробуйте:

With ThisWorkbook

maxsht = .Sheets.Count

For i = 3 To maxsht
    If .Sheets(i).Name = "03.2016PTF" Then Exit For
    'here's my code
Next i

End With

Он проходит по всем листам, используя Index, поэтому вы можете эффективно начать с n-го листа, в данном случае с третьего.

Код повторяется до последнего листа в wb, если только он не встречает вышеупомянутый лист с именем 03.2016PTF, с которого завершается цикл.

0 голосов
/ 26 марта 2019

Использование And в операторе if для проверки дополнительных критериев.

  • Or любой из них может вызвать оператор if.
  • And все они должны быть истинными, поэтому срабатывает if.

Таким образом, вы можете заполнить столько листов, сколько вам нужно, и не будете беспокоиться об их заказе.

Dim ws As Worksheet, arrWs As Variant, Skiped As Boolean

arrWs = Array("Sheet1ToAvoid", "Sheet2ToAvoid", "...") 'fill this with as much sheets you need

For Each ws In ThisWorkbook.Worksheets
    Skiped = Application.Match(ws.Name, arrWs, 0)
    If Not Skiped Then
        'here's my code
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...