为什么我的VBA循环开始倒退?

我的代码目前为:

Sub delsheets() For i = 1 To 9 Step 1 Worksheets(i + 3).Delete Next i End Sub 

我的工作簿总共有12张。

我已经进入了macros,并看到macros执行删除工作表倒退,并在步骤2即使我已经指定步骤1 – 即删除的进展:工作表12,工作表10,工作表8,工作表6,工作表4。

我不知道为什么发生这种情况,我想我的macros以正常的方式执行。

我非常感谢为什么发生这种情况的细分!

你想这样做倒退。

当使用索引号而不是表格名称时,它使用底部的选项卡顺序。

所以当迭代向前,当你删除工作表(4)时,工作表(5)现在变成工作表(4)并被跳过。

所以它跳过其他1.改变你的循环去9到1步-1。 它不会跳过任何表单。

使用表格名称删除或向后循环:

 Sub delsheets() For i = 9 to 1 Step -1 Worksheets(i + 3).Delete Next i End Sub 

如果工作表的名称是1, 2,...那么使用这个:

 Sub delsheets() For i = 1 to 9 Worksheets(Cstr(i + 3)).Delete Next i End Sub 

将数字更改为string将删除名为4,5,6,…,12的工作表