VBA WORD Определить, является ли абзац списком или таблицей - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть следующий код:

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

Итак, мне нужно знать, является ли текущий абзац списком или таблицей.

Спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете проверить, находится ли диапазон абзаца в таблице, получив количество таблиц: если оно больше нуля (Range.Tables.Count > 0), то диапазон находится в таблице.Существует также более старый метод WordBasic: Range.Information(wdWIthinTable) = true.

. Чтобы определить, является ли диапазон частью списка (маркеры или нумерация), вы можете использовать Range.ListFormat.ListType.Возвращает член перечисления WdListType.wdListNoNumbering равно 0 - вы можете использовать любое значение.Другие члены перечисления могут сказать вам, будут ли это маркеры (и какой тип) или числа (какой тип списка), если эта информация будет полезна.

Я изменил порядок проверки списков и таблиц,ставя таблицы на первое место, предполагая, что в первую очередь вы должны это знать.(Проверка списка не произойдет.)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...