在VBA中将字体大小缩小1步

7

有没有一种简单的方法在VBA中将Word / Excel等中的字体大小减小1步?

比如说,如果我的字体大小是48,我能否轻松地将其减小到36,就像标准Word 2007字体组中的字体下拉菜单一样,而不是将字体大小减小12个点 - 我不知道下一个字体大小是多少...

因此,与其通过浮点数明确设置字体大小:

MyText.Font.Size = 36;

我可以做类似这样的事情吗:
MyText.Font.Size -= Reduce by 1 step;....  forgive the pseudo code!

为什么你想要这样做?为什么得到与下拉菜单中列出的相同字体大小如此重要? - Jean-François Corbett
哼,客户。让我来重新表述一下:为什么客户想要这样做? - Jean-François Corbett
我正在以编程方式向PowerPoint幻灯片添加文本框 - 他们希望字体大小比幻灯片标题低2个“步骤”.. 我在最初的问题中没有提到Powerpoint,因为我天真地认为我可以将Word / Excel代码转移到Powerpoint - 收缩方法正是我所需要的,可惜它不在Powerpoint中 :-/ - Joe.Net
3个回答

6

对于Excel,您可以在格式化工具栏上检查字体大小组合框。这是2003年的东西,我认为它在2007年及以后仍然有效,但我没有可用于测试。

Sub FontShrink(rng As Range)

    Dim i As Long
    Dim ctl As CommandBarComboBox

    Set ctl = Application.CommandBars("Formatting").Controls("Font Size:")

    If rng.Font.Size > CDbl(ctl.List(ctl.ListCount)) Then
        'if it's bigger than the biggest, make it the biggest
        rng.Font.Size = ctl.List(ctl.ListCount)
    Else
        For i = ctl.ListCount To 2 Step -1
            If rng.Font.Size > CDbl(ctl.List(i)) Then
                rng.Font.Size = CDbl(ctl.List(i))
                Exit For
            ElseIf rng.Font.Size = CDbl(ctl.List(i)) Then
                rng.Font.Size = CDbl(ctl.List(i - 1))
                Exit For
            End If
        Next i
    End If
End Sub

太棒了!+1 请注意,如果初始字体大小不在列表中,则此方法无效,例如如果它是17。更改为 If ctl.List(i) >= rng.Font.Size Then 来处理这种情况。 - Jean-François Corbett
不错的代码,JFC。在中间时将其降至下一级别的编辑代码。 - Dick Kusleika

3

使用 Font 对象的 Shrink 方法:

MyText.Font.Shrink

相反的是 MyText.Font.Grow

谢谢Jean-François, 请看一下我上面的评论,Joe - Joe.Net
不幸的是,微软的某位杰出开发人员决定Font.ShrinkFont.Grow只能在Word中使用,而不能在PowerPoint或Excel中使用。恐怕你只能按任意步骤递减字体大小,例如MyText.Font.Size = MyText.Font.Size - 2。虽然下拉列表中列出的字体大小也同样是任意的... - Jean-François Corbett
当然可以,你知道我可以找到字体大小列表的任何方法吗?非常感谢。 - Joe.Net

3

谢谢Anders,这正是我需要的。然而,我还需要在Powerpoint 2007中完成它 - 并且Shrink方法在文本框形状上不可用,因此'myTextBox.TextFrame.TextRange.Font.Size.Shrink'也不可用 - http://msdn.microsoft.com/en-us/library/bb251433(v=office.12).aspx - 有什么想法吗?非常感谢,Joe - Joe.Net

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接