VBA WORD标识段落是列表还是表

时间:2018-11-12 10:35:23

标签: vba ms-word

我有以下代码:

For Each DocPara In ActiveDocument.Paragraphs
    If (DocPara.style = "Title 1") Then
        ...
    Else

        (if DocPara is LIST then)
            ...
        (else if DocPara is TABLE then)
            ...
    End If
Next DocPara

因此,我需要知道当前段落是否为LIST和TABLE。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以通过获取表计数来测试段落范围是否在表格中:如果它大于零(Range.Tables.Count > 0),则该范围在表格中。还有一个较旧的WordBasic方法:Range.Information(wdWIthinTable) = true

要确定范围是否属于列表(项目符号或编号),可以使用Range.ListFormat.ListType。这将返回WdListType枚举的成员。 wdListNoNumbering0-您可以使用任何一个值。枚举的其他成员可以告诉您是有用的信息还是子弹(和哪种)或数字(什么样的列表)。

我已经更改了检查列表和表的顺序,将表放在第一位的前提是您首先需要了解这一点。 (然后将不会检查列表。)

Sub CheckParaType()
    Dim DocPara As Word.Paragraph
    Dim rngPara As Word.Range       

  For Each DocPara In ActiveDocument.paragraphs
    Set rngPara = DocPara.Range
    If (DocPara.style = "Title") Then
        Debug.Print "Style is OK"
    ElseIf rngPara.Tables.Count > 0 Then
        Debug.Print "It's in a table"
    ElseIf rngPara.ListFormat.ListType <> 0 Then
        Debug.Print "It's a list."
    Else
        Debug.Print "the paragraph is something else"
    End If
  Next DocPara
End Sub