我在字体属性上看过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
我通常会尽量避免在我的代码中选择或激活,所以这只是烦人的!有什么想法吗?
答案 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