Здравствуйте, имеется макрос:
Sub bb()
Dim i&
With ActiveDocument
For i = .Range.End - 1 To 1 Step -1
If .Range(i - 1, i).Font.Size = 14 Then .Range(i, i).InsertAfter "*"
Next
End With
End Sub
В каждом слове, после каждой буквы ставится знак *.
Помогите сделать так: знак вставляется не после каждой буквы, а 2-3 раза в слове и не в каждом слове, а, например, с интервалом через 3 слова. Спасибо!
С понятием "слово" не всё так просто, как может показаться на первый взгляд.
В vba-ворде есть объект "word", но сюда входят и запятые. Кроме того, могут быть сложные слова с дефисом. В этом случае для ворда это три слова: слово до дефиса, дефис и слово после дефиса.
Примерный принцип такой:
Макрос
Sub макрос()
Dim word As Range, counter As Long
Dim i As Long, ii As Long
For i = ActiveDocument.Words.Count To 1 Step -4
' Сброс переменной.
counter = 0
' Присваиваем слову имя "word", чтобы удобнее писать код.
Set word = ActiveDocument.Words(i)
' Цикл по буквам слова.
For ii = word.Characters.Count To 1 Step -1
If word.Characters(ii).Font.Size = 14 Then
word.Characters(ii).InsertAfter "*"
counter = counter + 1
If counter > 3 Then
Exit For
End If
End If
Next ii
Next i
End Sub
Да, это то что нужно, спасибо большое!
Добрый день! Подскажите, а можно сделать так чтоб символ "*" вставлялся через каждое слово в середину слова?
В этой теме специфическое задание. У вас тоже нужно вставлять после символа, у которого размер 14 пунктов? Создайте лучше новую тему.