0

在 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)来查找下一个最大的字体大小,我知道如何实现它。我不知道该怎么做是 implement SplitBySizes,它应该返回一个带有相同大小文本Array的对象。TextRange有没有办法做到这一点而不逐个字符循环?我最终会将此代码移动到 COM 应用程序中。

4

2 回答 2

1

尝试基于此的东西:

For each sub_range in t_range.Runs

格式与先前文本不同的每一位文本都是一个运行。

于 2015-07-10T23:54:44.530 回答
1

你也可以试试

  Application.CommandBars.ExecuteMso ("FontSizeIncrease")

您将需要添加一些错误检查

于 2015-07-14T18:57:32.490 回答