Как сделать шрифт каждого жирного символа в документе на 4 пункта больше - PullRequest
0 голосов
/ 01 ноября 2019

У меня уже есть следующий код, который удаляет абзац, следующий за абзацем, и полностью жирный абзац (т.е. очищает пустые строки после подзаголовков). Я пытался изменить его, чтобы создать еще один макрос, который увеличивает размер шрифта каждого жирного символа на 4 пункта.

Dim para As Paragraph
Dim searchRange As Range

Set searchRange = Selection.Range
searchRange.End = ActiveDocument.Content.End

    For Each para In searchRange.Paragraphs
        If para.Range.Font.Bold = True Then para.Next.Range.Delete
    Next para

Это то, что я пытался сделать, но продолжал получать метод или данныеошибка "Range" не найдена в "Если char.Range.Font.Bold = True" ниже, и я не достаточно хорошо разбираюсь в VBA, чтобы понять, в чем проблема. Могу ли я не использовать символы для поиска каждого символа в документе? Персонажи работают иначе, чем абзацы? Моему неосведомленному мозгу кажется, что я мог бы просто отключить части макроса выше (поиск по каждому абзацу), чтобы применить его к тому, что я хотел бы сделать здесь (поиск по каждому символу).

Dim char As Characters
Dim searchRange As Range

Set searchRange = Selection.Range
searchRange.End = ActiveDocument.Content.End

    For Each char In searchRange.Paragraphs
        If char.Range.Font.Bold = True Then
            char.Font.Size = char.Font.Size + 4
    Next char

Я не женат на части о диапазоне поиска, я рад, что он выполняет поиск от курсора до конца или просто ищет весь документ, я просто скопировал другой код, чтобы увеличить свои шансы на его работу!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Есть несколько проблем с кодом в вопросе, которые не совсем понятны для распознавания.

  1. В объектной модели Word отсутствует тип данных Character, только Characters
  2. Объект Character относится к типу данных Range Итак: Dim char as Range
  3. Объект Character не эквивалентен объекту Paragraph, поэтому перечисление For...Each For Each char in searchRange.Paragraphs вызывает «Несоответствие типов». Необходимо зациклить searchRange.Characters.

Следующие компилируются и запускаются для меня:

Dim char As Word.Range
Dim searchRange As Range

Set searchRange = Selection.Range
searchRange.End = ActiveDocument.content.End

    For Each char In searchRange.Characters
        If char.Font.Bold = True Then
            char.Font.Size = char.Font.Size + 4
        End If
    Next char
0 голосов
/ 01 ноября 2019

Вам не нужен VBA для этого. Найти и заменить сделает эту работу. Установите Найдите значение для поиска полужирное форматирование с размером текущего текста, затем установите Замените на на размер, который на 4 пункта больше. Даже если у вас несколько разных размеров текста, быстрее найти и заменить несколько раз, чем написать макрос.

...