Непоследовательное циклическое поведение цикла For в vba - PullRequest
1 голос
/ 18 ноября 2010

Я написал макрос для удаления страниц 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

Цикл не работает должным образом, когда я запускаю макрос из слова.Но работает правильно, когда я отлаживаю код.

1 Ответ

6 голосов
/ 18 ноября 2010

Это всего лишь догадка, но держу пари, что вы удаляете страницы, которые не собираетесь делать?Вместо зацикливания UP, зацикливайтесь назад

 For i =loopCtr to 1 step -1

В вашем цикле, если вы удалили страницу, остальные страницы будут перемещены вверх на страницу и будут иметь неправильные номера страниц, поскольку вы продолжаете проверять их вперед.Если вы сначала удалите с конца, страницы на передней панели не будут перепутаны с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...