5

如何使用 VBA 更改 Excel 图表的字体?

如果我手动选择图表,并在手动更改字体名称和大小的同时录制宏,我会得到下面的宏。但是当我立即重放宏时,它会抛出一个运行时错误:“指定的值超出范围。” 所以看起来宏记录器有一个错误。这意味着我无法弄清楚自己更改字体的代码。

Sub Macro6()
'
' Macro6 Macro
'

'
    With ActiveSheet.Shapes("Chart 1").TextFrame2.TextRange.Font
        .NameComplexScript = "Verdana"
        .NameFarEast = "Verdana"
        .Name = "Verdana"
    End With
    ActiveSheet.Shapes("Chart 1").TextFrame2.TextRange.Font.Size = 14
End Sub

在此处输入图像描述

我知道作为替代方案,我可以一次更改每个元素的字体(标题、轴标题、轴...),但这很乏味,并且有可能忘记某些元素(系列点标签,趋势线方程,...)。

我正在寻找更改图表的“默认”字体,以便其所有元素都具有该字体。

4

3 回答 3

10

确实是一个奇怪的错误......做了同样的事情,但我去了对象浏览器(F2),目的是解决Chart而不是Shape

经过一番尝试,我得到了这个工作:

With ActiveSheet.ChartObjects("Graph").Chart.ChartArea.Format.TextFrame2.TextRange.Font
    .Name = "Verdana"
    .Size = 14
End With

这很简单,我尝试了更多奇怪的东西(因为类中有一个.Count属性TextRange2

它工作得很好并且确实改变了整个图表的字体
只需要知道你的图表的名称

或者,确保选择图表,并使用ActiveChart而不是ActiveSheet.ChartObjects("Graph").Chart.

于 2015-04-30T15:12:05.553 回答
4

最简单的方法是:

ActiveChart.ChartArea.Font.Name = "Verdana"
于 2015-05-22T14:02:34.403 回答
2

This was also recorded and works for me (while the chart is selected):

Sub Macro1()
    Selection.Format.TextFrame2.TextRange.Font.Size = 14
    With Selection.Format.TextFrame2.TextRange.Font
        .NameComplexScript = "Verdana"
        .NameFarEast = "Verdana"
        .Name = "Verdana"
    End With
End Sub

Not really a great difference to your erroneous code.

于 2015-04-30T13:22:27.770 回答