Макрос: Выделение жирным каждое третье слово в тексте

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Aslin
Сообщения: 15
Зарегистрирован: Пн янв 22, 2018 10:02 am

Макрос: Выделение жирным каждое третье слово в тексте

Сообщение Aslin » Вт янв 30, 2018 9:20 am

Здравствуйте, подскажите как создать макрос в ворде, который бы выделял каждое третье слово жирным. Знаю, что там должно быть количество шагов равное 3, но как грамотно написать не знаю, постоянно выдает ошибку

pashulka
Сообщения: 831
Зарегистрирован: Ср ноя 24, 2004 3:46 am
Контактная информация:

Re: Макрос: Выделение жирным каждое третье слово в тексте

Сообщение pashulka » Вт янв 30, 2018 10:19 pm

Код: Выделить всё

Sub Test()
    With ActiveDocument.Words
         Dim iCount&
         For iCount = 1 To .Count Step 3
             .Item(iCount).Font.Bold = True
         Next
    End With
End Sub

Код: Выделить всё

Sub Test2()
    Dim objWord As Word.Range, iCount&
    For Each objWord In ActiveDocument.Words
        If iCount Mod 3 = 0 Then
           objWord.Font.Bold = True
        End If
        iCount = iCount + 1
    Next
End Sub
P.S. Рекомендую ознакомиться с тем, что Word считает Word(словом), ибо запятая это тоже слово :) если Вы с этим не согласны, то можете добавить доп.проверку

Aslin
Сообщения: 15
Зарегистрирован: Пн янв 22, 2018 10:02 am

Re: Макрос: Выделение жирным каждое третье слово в тексте

Сообщение Aslin » Сб фев 10, 2018 9:51 pm

Здравствуйте, данные макросы выделяют первые слова в тройке, а надо наоборот чтобы выделял третье слово, а не первое

pashulka
Сообщения: 831
Зарегистрирован: Ср ноя 24, 2004 3:46 am
Контактная информация:

Re: Макрос: Выделение жирным каждое третье слово в тексте

Сообщение pashulka » Вс фев 11, 2018 1:08 am

В чём проблема? Неужели нельзя взять первый вариант и начать цикл не с 1, а с 3

Aslin
Сообщения: 15
Зарегистрирован: Пн янв 22, 2018 10:02 am

Re: Макрос: Выделение жирным каждое третье слово в тексте

Сообщение Aslin » Вс фев 11, 2018 8:30 am

Спасибо, разобралась. Еще один вопрос какая функция в макросе добавляет исключение? Чтобы макрос не считал за слово знаки пунктуации?

pashulka
Сообщения: 831
Зарегистрирован: Ср ноя 24, 2004 3:46 am
Контактная информация:

Re: Макрос: Выделение жирным каждое третье слово в тексте

Сообщение pashulka » Вс фев 11, 2018 11:50 am

Можете использовать что-то вроде этого :

Код: Выделить всё

Sub Test3()
    Dim objWord As Word.Range, iCount&: iCount = 1
    
    Const chars = "*[.,;:!?(){}" & vbCr & "]*"
    
    For Each objWord In ActiveDocument.Words
        If Not objWord.Text Like chars Then
           If iCount Mod 3 = 0 Then objWord.Font.Bold = True
           iCount = iCount + 1
        End If
    Next
End Sub
Здесь перечислены не все символы, которые Word воспринимает как слово. Впрочем, можно поступить и проще, считать словом то, что содержит минимум 2 символа. Это позволит обойтись без перечисления ненужных символов, правда такой подход отсечёт и с а у я

Ответить