VBA录制宏代码无法修改图表字体

录制宏是需要VBA的非常给力的帮手,在Excel中操作时,录制宏就可以轻松得到代码。 R U SURE??? 确实有些操作并不能录制代码。

即使可以被录制的操作,得到的代码是否可以正常使用呢?非常不幸的是,答案是否定的。

在Excel有一个图表,选中图表并设置图表字体为“微软雅黑”字号为9,录制宏得到的代码如下。

Sub1()
 ActiveChart.ChartArea.Select
    With ActiveSheet.Shapes("图表 1").TextFrame2.TextRange.Font
        .NameComplexScript = "微软雅黑"
        .NameFarEast = "微软雅黑"
        .Name = "微软雅黑"
    End With
    ActiveSheet.Shapes("图表 1").TextFrame2.TextRange.Font.Size = 9
End Sub

在Excel中选中图表,运行上述代码,错误信息如下所示。
VBA录制宏代码无法修改图表字体_第1张图片
虽然使用如下代码遍历Shapes集合,似乎可以访问Chart对象,但是能够使用的属性非常有限,并不能设置Chart对象的字体,因此上述录制代码产生运行时错误。这可以看做录制宏的一个BUG。

Sub ListShp()
    Dim shp
    For Each shp In ActiveSheet.Shapes
        Debug.Print shp.Name
    Next
End Sub

在VBA代码中应该使用ChartObject对象,才能设置Chart对象的字体,代码如下。

Sub SetChartFont()
    With ActiveSheet.ChartObjects("图表 1").Chart.ChartArea.Format.TextFrame2.TextRange.Font
        .NameComplexScript = "微软雅黑"
        .NameFarEast = "微软雅黑"
        .Name = "微软雅黑"
        .Size = 9
    End With
End Sub

VBA是个好工具,但是它并不是万能的,使用中要注意这些小异常。

你可能感兴趣的:(VBA,Excel,图表,图表,字体,录制宏,Shape,Chart)