Excel Secondary Axis字体颜色由VBA更改而不激活图表

我已经看到了这个字体属性的问题 ,它让我成为了一部分。

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

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 

我通常尽量避免select或激活我的代码,所以这只是烦人的! 有任何想法吗?

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

因此,您要访问ChartObject.ChartAxes集合

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

为什么它首先激活它的工作? 那么,因为ActiveChart实际上返回Chart ,而不是ChartObject

如果你想logging一个macros,填充文本forecolor的代码将不会(TextFrame2对象)工作,因为已经报告给微软的一个bug,所以使用下面的代码,你可以做到这一点没有问题。 您也可以根据需要更改属性。

使用此代码:

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

我也希望避免使用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