我在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
如果我将在启动时退出循环,则不会对其余文档进行更改。
答案 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