在PowerPoint VBA中模拟“增加字体大小”

时间:2015-07-10 21:03:00

标签: vba com powerpoint textrange

在PowerPoint中,如果我选择了多种尺寸的文字,我可以点击“增加字体大小”或“减小字体大小”,让每个TextRange增长/缩小一个“步”:

Increase/Decrease Font Size icons

我几乎有一个手动解决方案如下:

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,它应该返回ArrayTextRange个具有相同大小的文本的对象。有没有办法在不逐个字符的情况下循环?我最终会将此代码移动到COM应用程序中。

2 个答案:

答案 0 :(得分:1)

尝试基于此的内容:

For each sub_range in t_range.Runs

格式与上一个文本不同的每个文本位都是Run。

答案 1 :(得分:1)

您也可以尝试

  Application.CommandBars.ExecuteMso ("FontSizeIncrease")

您需要添加一些错误检查