在VBA中将字体大小减少1步
在VBA中,是否有一种简单的方法将Word/Excel等中的字体大小减少1步 因此,如果我的字体大小是48,我可以根据标准Word 2007字体组中的字体下拉列表轻松地将其减少到36,而不是将字体大小减少12-我不知道下一个字体大小是什么 因此,与其通过float显式设置字体大小,不如:在VBA中将字体大小减少1步,vba,excel,ms-word,font-size,Vba,Excel,Ms Word,Font Size,在VBA中,是否有一种简单的方法将Word/Excel等中的字体大小减少1步 因此,如果我的字体大小是48,我可以根据标准Word 2007字体组中的字体下拉列表轻松地将其减少到36,而不是将字体大小减少12-我不知道下一个字体大小是什么 因此,与其通过float显式设置字体大小,不如: MyText.Font.Size = 36; 我可以做一些类似于: MyText.Font.Size -= Reduce by 1 step;.... forgive the pseudo code! 使
MyText.Font.Size = 36;
我可以做一些类似于:
MyText.Font.Size -= Reduce by 1 step;.... forgive the pseudo code!
使用对象的方法:
相反的是
MyText.Font.Grow
您可以选择字体和格式。对于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
谢谢安德斯,这正是我需要的。但是,我还需要在Powerpoint 2007中执行此操作,而收缩方法在文本框形状上不可用,因此“myTextBox.TextFrame.TextRange.Font.Size.Shrink”不可用--有什么想法吗?非常感谢,JoeThanks Jean François,请看我上面的评论,Joeun幸运的是,微软的一些杰出的开发人员决定,
Font.Shrink
和Font.Grow
只能在Word中使用,不能在PowerPoint或Excel中使用。恐怕您无法按任意步骤减小字体大小,例如MyText.font.size=MyText.font.size-2
。并不是说下拉列表中列出的字体大小不那么随意……当然可以,您知道我可以通过什么方式访问字体大小列表吗。非常感谢你为什么要这样做?为什么获得与下拉列表中列出的相同的字体大小如此重要?嗯,客户端。请允许我重新表述一下:客户为什么要这样做?我正在以编程方式向powerpoint幻灯片添加一个文本框-他们希望字体大小比幻灯片标题小2步。。我在最初的问题中没有提到Powerpoint,因为我天真地认为我可以将Word/Excel代码转换为Powerpoint-收缩方法正是我所需要的,可惜它不在Powerpoint中:-/Brilliant+1请注意,如果初始字体大小不是列表的一部分,例如,如果是17,则此选项不起作用。如果ctl.List(i)>=rng.Font.Size,则更改为,以处理此类情况。好的JFC。编辑代码,使其在介于两者之间时进入下一级别。
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