1

MS Word Visual Basic Editor にこの VBA コードがあります。

ページ番号が連続して機能するようにページ番号をリセットするためのものです。ただし、これを実行せずにループの内容全体をスキップするようです。

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

どうしてこれなの?どうすれば修正できますか?

ありがとう、

バリー・スミス

4

3 に答える 3

5

シーケンスに使用f8して値を確認すると、ループ全体がスキップされていることがわかりますStep Into...GetNumberOfPagesGetNumberOfPages = Empty

于 2013-02-20T10:52:40.080 に答える
3

GetNumberOfPagesは変数で、デフォルトでは空白です。

最初にそれに何らかの値を割り当てる必要があります。

Dim numberOfPages as Integer
Dim currentPage as Integer
numberOfPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
For currentPage = 1 To numberOfPages
    ...
Next currentPage
于 2013-02-20T10:57:41.970 に答える
1

私はあなたがそのように考えていると思います

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

しかし、初期化することを忘れてくださいGetNumberOfPages

于 2013-02-20T10:54:45.573 に答える