对于VBA中的每个-从第三个样式表开始

时间:2019-03-26 14:16:18

标签: excel vba

我在Excel的Workbook中有很多样式表,并且几乎需要对每个样式表进行一些更改。应该跳过其中的前两个和后几个。

我正在使用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 个答案:

答案 0 :(得分:1)

尝试:

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的最后一个工作表,然后退出循环。

答案 1 :(得分:-1)

在if语句上使用And来检查更多条件。

  • 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