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)
我看过 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)