使用循环删除工作表

时间:2013-11-26 15:03:33

标签: excel-vba vba excel

你能否告诉我某人为什么只删除每一张纸,但是如果我关闭工作纸。删除行,则会在消息框中显示所有工作表名称。

Sub tor()
    Dim wsz As Integer

    wsz = Application.Worksheets.Count

    For i = 2 To wsz
        MsgBox Application.Worksheets(i).Name
        Application.DisplayAlerts = False
        Application.Worksheets(i).Delete
    Next i
End Sub

2 个答案:

答案 0 :(得分:3)

当您从Worksheets集合中删除工作表时,下一个工作表将获取您刚刚删除的工作表的索引。然后,您递增i,跳过您想要删除的下一张表。

最简单的解决方案是从头开始删除工作表。

For i = ThisWorkbook.Worksheets.Count To 2 Step -1
    Application.Worksheets(i).Delete
Next i

答案 1 :(得分:2)

反向删除工作表。每次删除工作表时,工作表索引都会被移动。

Sub tor()
    Dim wsz As Integer, i as Long

    wsz = ThisWorkbook.Worksheets.Count

    Application.DisplayAlerts = False

    For i = wsz To 2 Step -1
        ThisWorkbook.Worksheets(i).Delete
    Next i

    Application.DisplayAlerts = True
End Sub