2017-01-19 3 views
1

フォントのプロパティでthis questionを見たことがあります。Excelグラフをアクティブ化せずにVBAでExcelのセカンダリ軸フォントの色を変更する

フォントの色を変更しようとしています。私はこれまでに次のコードを持っています:

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 

は、私は一般的に私のコードで選択するか、活性化を回避しようとするので、これは単なる迷惑です!何か案は?

答えて

4

Axesは実際にはChartObjectのメンバーではなく、ChartObject.Chartのメンバーです。

はそのため、あなたはそれを最初に起動する場合、なぜそれが動作しないChartObject.Chart

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

Axes -collectionにアクセスしたいですか?実際、ActiveChartChartObjectオブジェクトの代わりにChartオブジェクトを返します。

+0

おかげでマーティン、偉大な説明も。 –

+0

うれしい私はあなたを助けることができました。 –

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 
1

マクロを記録しようとしている場合は、テキストの前景色を充填するためのコードは(TextFrame2オブジェクトが)ので、原因すでにマイクロソフトに報告されたバグのために動作しません。以下のコードを使用すると、問題なく実行できます。必要に応じてプロパティを変更することもできます。

使用このコード:

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

コードよりも詳細を追加するといいです – tukan

+0

あなたのコメントのためにTukanありがとうございます。私はちょうど私の答えを編集:) –

+0

素晴らしい!今はるかに良い。 – tukan

関連する問題