2010-11-18 62 views
1

環路我寫了一個宏刪除MS Word 2010次中的頁面如下 -不一致循環行爲對於VBA

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 

當我運行從Word宏循環將不會正常工作。但是,當我調試代碼時能正常工作。

+0

混淆當您說循環無法正常工作時,究竟發生了什麼不應該發生? – 2010-11-18 09:17:40

+0

循環直到計數器的最大值和一些頁面保持最後的狀態纔會完成。 – Mayur 2010-11-18 09:26:11

回答

6

這只是一個預感,但我敢打賭你正在刪除你不想要的頁面?相反循環向上,向後循環

For i =loopCtr to 1 step -1 

在你的循環,如果你刪除的頁面,頁面的其他人怎麼移動了一個頁面,都會有不正確的頁碼,你繼續向前檢查。如果從頭開始刪除,則前面的頁面不會與

+2

+1從VBA中的集合中刪除時,您必須始終向後循環或使用對象名稱,因爲集合在刪除時正在更改。 – Fionnuala 2010-11-18 11:35:20