使用VBA删除工作簿中的第二张和第三张纸



我希望删除包含数百张工作表的工作簿中的第二张和第三张纸。所以,请保留工作表 1,4,7,10...并删除其余部分

遇到了问题,因为索引会随着我删除的每个工作表而重置,因此循环使用 i 会带来问题。

有什么想法吗?

谢谢!

RGA 是正确的,删除时应该从最后一个循环到第一个。 索引 mod 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

虽然托马斯的答案可能是要走的路,但这是另一种只会运行一次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

从头到尾而不是从头到尾循环(在任何编码语言中从列表中删除内容时总是很好的做法)

只需保持一个计数器运行,最多计数三并重置,首先确保它被正确设置为对最后一张纸进行操作(也就是用数学计算最后一张纸是"第一张"、"第二张"还是"第三张"一张)

相关内容

  • 没有找到相关文章

最新更新