Excel辅助轴字体颜色更改VBA而不激活图表

时间:2017-01-19 11:33:58

标签: excel vba excel-vba excel-2013

我在字体属性上看过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

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

3 个答案:

答案 0 :(得分:4)

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

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

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

如果先激活它,为什么会有效?好吧,因为ActiveChart实际上返回了Chart - 对象,而不是ChartObject - 对象。

答案 1 :(得分:2)

如果您正在尝试录制宏,则由于已向Microsoft报告的错误,填写文本forecolor的代码(TextFrame2对象)无法正常工作,因此使用下面的代码,您可以做到没有问题。您也可以根据需要更改属性。

使用此代码:

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

答案 2 :(得分:0)

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