1

以下は、非常に長いドキュメントのパターンを示しています。

<heading1>
<numberedlist>
<heading2>
<numberedlist>
<heading3>
<numberedlist>

使用するDocument.Listsと、ドキュメント内のすべてのリストが取得されます。すべての見出しを取得するDocument.Paragraphs場所を使用して反復する場合 。Document.Paragraphs(i).Style = "Heading 1"

しかし、私が欲しいのは、「見出し1」の直後にあるリスト(リストの段落ではない)です

4

2 に答える 2

2

ドキュメントが下の図のように見えると仮定します。

ここに画像の説明を入力

この提案されたコードを使用すると、最初のリスト (見出しの直後) と見出しの下にある他の同様のリストを選択できますが、2 番目のリストは選択できません (見出しとリストの間に追加の段落があります。その状況については、コード内の追加のコメントを参照してください)。

Sub List_after_Heading()

    Dim rngLIST As Range
    Set rngLIST = ActiveDocument.Content

    With rngLIST.Find
        .Style = "Heading 1"   '<--change into your Heading name
        .Forward = True
        .Wrap = wdFindStop
    End With

    Do
        rngLIST.Find.Execute
        If rngLIST.Find.Found Then

            'I assume that list start in NEXT paragraph, if not, it wouldn't be found
            'or you need to change part of line into .Next.Next paragraphs,
            'alternatively some looping would be needed here

            'we check if paragraph next to Heading contains a list
            If rngLIST.Paragraphs(1).Next.Range.ListParagraphs.Count > 0 Then
                'we have the list, but it's not easy to select at once
                Dim iLIST As List
                For Each iLIST In ActiveDocument.Lists
                    If iLIST.Range.Start = rngLIST.Paragraphs(1).Next.Range.Start Then
                        'here we have it... selected
                        iLIST.Range.Select

                        'or any other of your code here
                    End If
                Next
            End If
        End If
    Loop While rngLIST.Find.Found

End Sub
于 2013-04-21T07:39:53.793 に答える