我希望删除数百张工作簿中的第二张和第三张。因此,请保留1,4,7,10页...并删除其余的
我遇到了问题,因为我删除的每张纸都重置了索引,所以循环显示问题。
有什么想法吗?
谢谢!
答案 0 :(得分:3)
RGA是正确的,你应该在删除时从最后一个循环到第一个。索引模式3将返回1表示1,4,7,10,13,16 .ect。
Sub DeleteEvery2ndAnd3rdSheet()
Application.DisplayAlerts = False
Dim i As Integer
For i = Worksheets.Count To 1 Step -1
If i Mod 3 <> 1 Then Worksheets(i).Delete
Next
Application.DisplayAlerts = True
End Sub
答案 1 :(得分:2)
托马斯&#39;答案可能是要走的路,这是另一种只运行Delete
语句一次的方法。
Sub Delete2nd3rdSheets()
Dim sSheetsToRemove As String
Dim i As Integer
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Index Mod 3 <> 1 Then
sSheetsToRemove = sSheetsToRemove & "," & ws.Name
End If
Next
sSheetsToRemove = Mid(sSheetsToRemove, 2)
Dim arrDeleteSheets() As String
arrDeleteSheets = Split(sSheetsToRemove, ",")
Application.DisplayAlerts = False
Worksheets(arrDeleteSheets).Delete
Application.DisplayAlerts = True
End Sub
答案 2 :(得分:0)
从结尾循环而不是从开始到结束(在任何编码语言中从列表中删除内容时总是很好的做法)
只要让计数器保持运行,最多可以计数三次并重置,确保首先将其设置正确,以便在最后一张纸上进行操作(也可以通过数学计算出最后一张纸是否为&#34; 1st&#34;,&#34; 2nd&#34;,或&#34; 3rd&#34; sheet)