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

0 excel vba loops excel-vba

我的代码目前为:

Sub delsheets()

For i = 1 To 9 Step 1

    Worksheets(i + 3).Delete

Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

我的工作簿总共有12张.

我已经步入宏观并且通过在步骤2中向后删除纸张来执行宏,即使我已经指定了步骤1-即删除的进展:纸张12,纸张10,纸张8,纸张6,纸张4.

我不知道为什么会发生这种情况,我希望我的宏能够以正常的方式执行.

我非常感谢为什么会发生这种情况!

Sco*_*ner 5

你想倒退.

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

因此,当向前迭代时,当您删除工作表(4)时,工作表(5)现在变为工作表(4)并被跳过.

因此它会跳过其他1.将你的循环改为9到1步-1.它不会跳过任何床单.

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

Sub delsheets()

For i = 9 to 1 Step -1

    Worksheets(i + 3).Delete

Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

如果表单的名称是1, 2,...使用此:

Sub delsheets()

For i = 1 to 9

    Worksheets(Cstr(i + 3)).Delete

Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

将数字更改为字符串将删除名为4,5,6,...,12的工作表