2015-07-10 94 views
0

在PowerPoint中,如果我选择了多种尺寸的文本,我可以按“增大字体大小”或“减小字体大小”,以使每个TextRange增加/步”:模拟PowerPoint中的“增加字体大小”VBA

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,它应该返回一个 TextRange具有相同大小的文本对象。有没有一种方法做到这一点,而不是逐个字符循环?我最终会将这些代码移到COM应用程序中。在此基础上,而不是

回答

1

试试:

For each sub_range in t_range.Runs 

从以前的文本格式不同的每个文本的位是一个运行。

1

您也可以尝试

Application.CommandBars.ExecuteMso ("FontSizeIncrease") 

您将要添加一些错误检查