2

Мне нужно выделить каждую третью строку документа и отформатировать текст жирным шрифтом, подчеркнутым и синим цветом. У меня уже есть код для этого, но мне нужно зациклить его в течение установленного количества раз.

Проблема в том, что все циклические учебники, которые я нахожу, используют переменные или состояние, чтобы сделать это, пока не будет выполнено какое-то условие. Как я могу установить, чтобы это условие было «достигнуто в нижней части документа?"

Код, который я настроил, приведен ниже, а строки в квадратных скобках - вот что мне нужно для помощи:

Selection.HomeKey Unit:=wdStory

[Do the following code until the end of the document]

        Selection.HomeKey Unit:=wdLine
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        With Selection.Font
            .Bold = wdToggle
            .Color = 12611584
            .Underline = wdUnderlineSingle
        End With

        Selection.MoveDown Unit:=wdLine, Count:=3

[end of loop]

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

1 ответ1

2

Это должно работать

Dim lastRow As Long
lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
MsgBox lastRow

BuiltInDocumentProperties КБ

Так что что-то вроде этого будет работать и будет таким же типом цикла for как в Excel -

Sub CountLines()

Dim lastRow As Long
Dim i As Long
lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
For i = 1 To lastRow
    If i Mod 3 = 0 Then
        'Do Stuff
    End If
Next

End Sub

Или быть более тщательным -

Sub CountLines()

    Dim lastRow As Long
    Dim i As Long
    lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
    For i = 1 To lastRow
        If i Mod 3 = 0 Then
            ActiveDocument.Paragraphs(i).Range.Font.Bold = True
            'Do other stuff
        End If
    Next

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .