为什么我的VBA循环向后开始?

为什么我的VBA循环向后开始?,vba,excel,loops,Vba,Excel,Loops,我的代码当前为: Sub delsheets() For i = 1 To 9 Step 1 Worksheets(i + 3).Delete Next i End Sub 我的工作簿总共有12页 我已进入宏,并看到宏通过向后和在步骤2中删除工作表来执行,即使我已指定步骤1-即删除的进度:工作表12、工作表10、工作表8、工作表6、工作表4 我不知道为什么会发生这种情况,我想让我的宏以正常的方式执行 我非常希望能详细说明为什么会发生这种情况 您希望向后执行此操作 当使用索引号而

我的代码当前为:

Sub delsheets()

For i = 1 To 9 Step 1

    Worksheets(i + 3).Delete

Next i

End Sub
我的工作簿总共有12页

我已进入宏,并看到宏通过向后和在步骤2中删除工作表来执行,即使我已指定步骤1-即删除的进度:工作表12、工作表10、工作表8、工作表6、工作表4

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


我非常希望能详细说明为什么会发生这种情况

您希望向后执行此操作

当使用索引号而不是图纸名称时,它使用标签沿底部的顺序

因此,当向前迭代时,当您删除工作表(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

将数字更改为字符串将删除名为4、5、6、…、12的工作表。如果您想向后执行此操作,请执行此操作

当使用索引号而不是图纸名称时,它使用标签沿底部的顺序

因此,当向前迭代时,当您删除工作表(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

将数字更改为字符串将删除名为4,5,6,…,12的工作表,也将删除i=0到8的工作表(12-i)。可以删除。。。虽然它像一个直接的
步骤-1
大多数ppl不喜欢带有
步骤的循环。至少就我而言(看看速度),我会使用一些不太容易理解的东西,比如
表单(Application.Transpose(Evaluate)(“ROW(4:12)”))。删除
;谢谢你的帮助!对于i=0到8的
工作表(12-i)。也可以删除
。。。虽然它像一个直接的
步骤-1
大多数ppl不喜欢带有
步骤的循环。至少就我而言(看看速度),我会使用一些不太容易理解的东西,比如
表单(Application.Transpose(Evaluate)(“ROW(4:12)”))。删除
;谢谢你的帮助!每次删除索引编号较低的工作表时,较高工作表的索引都会重新编号每次删除索引编号较低的工作表时,较高工作表的索引都会重新编号