excel vba删除表单运行时错误下标超出范围

我尝试删除从Sheet5开始到最后一张表的所有工作表,但我得到了“运行时错误下标超出范围”。

Dim x as Long For x = 5 To ThisWorkbook.Worksheets.Count Application.DisplayAlerts = False ThisWorkbook.Sheets(x).Delete Application.DisplayAlerts = True Next 

结果删除,但只有Sheet5,Sheet7和Sheet9,但Sheet6和Sheet8仍然存在。 灰色的debuggingbutton,我想知道错误在哪里。 请帮忙,因为在这方面挣扎,不能通过。 非常感谢你!

我相当确定这是删除工作表的逻辑问题。 在循环的开始ThisWorkbook.Sheets(x).Delete将删除Sheet5。

但是,一旦Sheet5被删除,Sheet6将取代它,所以ThisWorkbook.Sheets(5)将等于Sheet6。

这个时候你的计数器是x = 6,所以它会删除位于ThisWorkbook.Sheets(6)的Sheet7。

工作表8将取代它的位置,此时您的计数器将为x = 7。 这将删除位于ThisWorkbook.Sheets(7)的Sheet9。

该计数器现在将x = 8,代码将尝试删除ThisWorkbook.Sheets(8),但是,此工作表不存在 – >下标超出范围