vba中For循环的循环行为不一致

May*_*yur 1 vba loops ms-word word-vba

我已经编写了一个用于删除MS Word 2010页面的宏,如下所示 -

Sub deleteAlternatePages()
    CurrentPage = Selection.Information(wdActiveEndPageNumber)
    TotalPages = Selection.Information(wdNumberOfPagesInDocument)

    maxLoop = TotalPages - 1

    Dim loopCtr As Integer
    loopCtr = (maxLoop / 2)

    For i = 1 To loopCtr
        boolDelete = Selection.Information(wdActiveEndPageNumber)
        Call deleteOnePage
        CurPage = Selection.Information(wdActiveEndPageNumber)
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

从word运行宏时,循环无法正常工作.但是,当我调试代码时,它可以正常工作.

pin*_*x33 6

这只是一种预感,但我打赌你要删除你不想要的页面?而不是循环UP,向后循环

 For i =loopCtr to 1 step -1
Run Code Online (Sandbox Code Playgroud)

在您的循环中,如果您删除了一个页面,其余页面会向上移动一页,并且在您继续向前检查时会有不正确的页码.如果您从头开始删除,前面的页面将不会被搞乱

  • +1从VBA中的集合中删除时,必须始终向后循环或使用对象名称,因为集合在删除时会发生变化. (2认同)