2013-02-20 273 views
1

我在MS Word的Visual Basic编辑器中有这个VBA代码;VBA跳过For循环 - 为什么?

这意味着重置页码,以便它们连续工作。但是,它似乎跳过循环的全部内容而不执行此操作。

Sub Macro3() 
' 
' Macro3 Macro 
' Test 3 
' 
Dim GetNumberOfPages 

    For IncVar = 1 To GetNumberOfPages 
     WordBasic.ViewFooterOnly 
     ActiveDocument.AttachedTemplate.BuildingBlockEntries(" Blank").Insert _ 
      Where:=Selection.Range, RichText:=True 
     WordBasic.ViewFooterOnly 
     ActiveDocument.AttachedTemplate.BuildingBlockEntries("Plain Number 3"). _ 
      Insert Where:=Selection.Range, RichText:=True 
     ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument 
     Selection.WholeStory 
     With Selection.Sections(IncVar).Headers(IncVar).PageNumbers 
      .NumberStyle = wdPageNumberStyleArabic 
      .HeadingLevelForChapter = 0 
      .IncludeChapterNumber = False 
      .ChapterPageSeparator = wdSeparatorHyphen 
      .RestartNumberingAtSection = False 
      .StartingNumber = 0 
     End With 
     Selection.WholeStory 
     Selection.EscapeKey 
     ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _ 
      ShowAll 
     Selection.EscapeKey 
     Selection.EscapeKey 
    Next IncVar 
End Sub 

这是为什么? 我该如何解决它?

感谢,

巴里·史密斯

+5

'GetNumberOfPages'未分配 – 2013-02-20 10:49:46

+0

请用正确的数据类型定义GetNumberOfPages和循环 – 2013-02-20 10:55:50

回答

5

如果使用f8Step Into...您的序列,并检查GetNumberOfPages的价值,你会看到GetNumberOfPages = Empty和整个循环被跳过

+0

感谢之前分配一个值!这真的很有帮助......但是我怎样才能制作一个脚本来返回文档中的页面数呢? – 2013-02-20 10:58:20

+1

如果你知道你有10页,你可以简单地使用'GetNumberOfPages = 10'。否则,你需要调用一些方法,返回页面上列出的页面数量http://support.microsoft.com/kb/185509 – JustinJDavies 2013-02-20 11:03:13

+1

顺便说一句。变量GetNumberOfPages的值不是False而是Empty(它是Variant类型的)。 – dee 2013-02-20 11:37:17

1

我认为你是以这种方式思考

Dim GetNumberOfPages as integer = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) //check the syntax . i'm not sure. 

但忘记初始化GetNumberOfPages

3

GetNumberOfPages是一个变量,默认为空白。

您首先需要为其指定一些值,例如,

Dim numberOfPages as Integer 
Dim currentPage as Integer 
numberOfPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) 
For currentPage = 1 To numberOfPages 
    ... 
Next currentPage