Вы можете проверить, находится ли диапазон абзаца в таблице, получив количество таблиц: если оно больше нуля (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