Имитация "Увеличение размера шрифта" в PowerPoint VBA

В PowerPoint, если я выделил текст нескольких размеров, я могу нажать "Увеличить размер шрифта" или "Уменьшить размер шрифта", чтобы TextRange расти / уменьшаться на один "шаг":

Значки увеличения / соответствующего размера шрифта

У меня почти есть ручное решение следующим образом:

Sub GrowText(ByRef t_range as TextRange)
    Dim sub_range as TextRange
    For Each sub_range in SplitBySizes(t_range)
        sub_range.Font.size = NextSize(sub_range.Font.size)
    Next sub_range
End Sub

NextSize функция использует статический массив (8, 9, 10, 10.5, 11, 12, 14, 16, 18, 20, 24, 28, 32, 26, 40, 44, 48, 54, 60, 66, 72, 80, 88, 96) найти следующий по величине размер шрифта, и я знаю, как его реализовать. То, что я не знаю, как это сделать, это реализовать SplitBySizes, который должен вернуть Array из TextRange объекты с текстом одинакового размера. Есть ли способ сделать это без зацикливания символа за символом? В конце концов я собираюсь переместить этот код в приложение COM.

2 ответа

Решение

Попробуйте что-то на основе этого вместо этого:

For each sub_range in t_range.Runs

Каждый бит текста с форматированием, отличным от предыдущего текста, является Run.

Вы также можете попробовать

  Application.CommandBars.ExecuteMso ("FontSizeIncrease")

Вы хотите добавить некоторые проверки ошибок

Другие вопросы по тегам