Excel 次轴字体颜色更改 VBA 未激活图表

Excel Secondary Axis font colour change by VBA without activating chart

我看过 this question 字体属性,它帮助我完成了部分工作。

我正在尝试更改字体颜色。到目前为止,我有以下代码:

ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.Axes(xlValue, xlSecondary).TickLabels.Font.Color = 5855577

这很好用。

让我恼火的是,我必须通过激活图表来执行此操作。 当然有更好的方法。如果我执行以下任一操作都不起作用:

Dim cht As ChartObject
Set cht = ActiveSheet.ChartObjects("Chart 2")
cht.Axes(xlValue, xlSecondary).TickLabels.Font.Color = 5855577

'-------------------------

Dim cht As ChartObject, ax As Axes
Set cht = ActiveSheet.ChartObjects("Chart 2")
Set ax = cht.Axes(xlValue, xlSecondary)
ax.TickLabels.Font.Color = 5855577

我通常尽量避免在我的代码中选择或激活,所以这很烦人!有什么想法吗?

Axes 实际上不是 ChartObject 的成员,而是 ChartObject.Chart.

的成员

因此,您想要访问 Axes-集合 ChartObject.Chart

With ActiveSheet.ChartObjects("Chart 1")
    .Chart.Axes(xlValue, xlPrimary).TickLabels.Font.Color = vbRed
End with

为什么先激活就可以了?好吧,因为 ActiveChart 实际上 returns Chart-对象,而不是 ChartObject-对象。

我也希望避免使用 ActvieSheet(如果可能的话)。

下面的代码将为您需要的属性设置 ChartObject 下的嵌套属性,例如 Chart.Axes ,稍后还会为 TickLabels.

代码

Option Explicit

Sub Chart_AutoSetup()

Dim ChtObj As ChartObject, ax As Axis, T2 As TickLabels
Dim ShtCht  As Worksheet

' change "Chart_Sheet" to your sheet's name (where you have your chart's data)
Set ShtCht = Worksheets("Chart_Sheet") ' <-- set the chart's location worksheet

Set ChtObj = ShtCht.ChartObjects("Chart2") '<-- set chart object

With ChtObj      
    Set ax = .Chart.Axes(xlValue, xlSecondary) '<-- set chart axes to secondary
    Set T2 = ax.TickLabels  '<-- set Ticklables object

    T2.Font.Color = 5855577
    T2.Font.Italic = True ' <-- just another property you can easily modify
End With

End Sub

如果您尝试录制宏,填充文本前景色的代码将无法工作(TextFrame2 对象),因为已向 Microsoft 报告了一个错误,因此使用下面的代码,您可以做到这一点没有问题。您也可以根据需要更改属性。

使用此代码:

ActiveChart.Axes(xlCategory).TickLabels.Font.Color = RGB(100, 100, 100)