2016-03-19 5 views
2

У меня есть макрос, который находит некоторые свойства слова абзацы. Мне нужно найти абзацы «4 строки или больше», используя макрос.Как найти несколько свойств абзаца с помощью макроса MS Word

Я попробовать этот код:

If oPar.LineCount = LineCount + 4 Then 

Ниже всего код:

Sub CheckKeepLinesTogether() 
Application.ScreenUpdating = False 
Const message As String = "Check Keep Lines Together" 
Dim oPar As Paragraph 
Dim oRng As Word.Range 
Dim LineCount As Long 

For Each oPar In ActiveDocument.Paragraphs 
Set oRng = oPar.Range 

With oRng 
    With .Find 
     .ClearFormatting 
     .Text = "^13" 
     .Execute 
    End With 

    Set oRng = oPar.Range 

     If oPar.KeepTogether = False Then 
     If oPar.LineCount = LineCount + 4 Then 

      .Select 
      Selection.Comments.Add Range:=Selection.Range 
      Selection.TypeText Text:=message 
      Set oRng = Nothing 

     End If 
     End If 
    End With 
Next 
Application.ScreenUpdating = True 
End Sub 
+0

Пожалуйста, попробуйте узнать о диапазоне собственности в MSDN. Диапазон - это сердце всего для VBA. Выберите тег после чтения информации о теге. – Rahul

ответ

3

Замените неисправную линию с незакомментированным кодом:

'If oPar.LineCount = LineCount + 4 Then 
    If oPar.Range.ComputeStatistics(wdStatisticLines) >= 4 Then 

Кстати , вам не нужно дважды устанавливать Set oRng = oPar.Range.

+0

Я не знаю почему, но это необходимо. Без настройки он просто грабли .text как диапазон. Это слово ms находит, что непостоянно. – Rahul

+0

Большое спасибо и Дэви C & Rahul. Я тестирую оба ваших кода, и он работает правильно. Но у меня есть ошибка в этой строке кода Рахула. 'Selection.TypeText Text: = message' Кроме этого, исправно работает. благодаря! – Thilina

+0

@ Тилина: выбор должен быть заменен на oRng – Rahul

1

Не тестировался

Sub CheckKeepLinesTogether() 
    Application.ScreenUpdating = False 
    Const message As String = "Check Keep Lines Together" 
    Dim oPar As Paragraph 
    Dim oRng As Word.Range 
    Dim LineCount As Long 

    For Each oPar In ActiveDocument.Paragraphs 
    Set oRng = oPar.Range 

    With oRng 
     With .Find 
      .ClearFormatting 
      .Text = "^13" 
      .Execute 
     End With 
      If oPar.KeepTogether = False Then 
      If oPar.Range.ComputeStatistics(wdStatisticLines) >= 4 Then 
       Set oRng = oPar.Range 
       oRng.Comments.Add Range:=oRng 
       oRng.TypeText Text:=message 
      Set oRng = Nothing 
      End If 
      End If 
     End With 
    Next 
    Application.ScreenUpdating = True 
    End Sub 
Смежные вопросы