「グラフ データラベルのフォントサイズ vba」
「vba グラフ データラベル 文字の大きさ」
といった検索キーワードでアクセスがあることに気が付きました。
Excel VBAで、グラフのデータラベルのフォント・文字の設定を行うには、どのようなコードを書けばいいのかを探していらしたのでしょう。
データラベルのフォントサイズを設定するサンプルマクロ
グラフがアクティブな状態で以下のSubプロシージャを実行すると、全系列のデータラベルが表示され、フォントサイズが18ポイントに設定されます。
Dim srs As Series
For Each srs In ActiveChart.SeriesCollection
srs.HasDataLabels = True
srs.DataLabels.Format.TextFrame2.TextRange.Font.Size = 18
Next
End Sub
フォントサイズを設定している行
srs.DataLabels.Format.TextFrame2.TextRange.Font.Size = 18
は、かなり深い階層構造ですが、Excel VBAのTextFrame2オブジェクトを使って図形を操作したことがあれば、「.TextFrame2.TextRange.Font.Size」については、図形内文字列のフォント操作と同じだとわかるでしょう。
拙著『理解するExcel VBA/図形操作の基本』の「6-3. TextRange2も文字列範囲を表す」でも、「.TextFrame2.TextRange.Font」について解説しています。
Series.DataLabels.Formatとは
「.TextFrame2.TextRange.Font.Size」の前の部分「srs.DataLabels.Format」は、以下のとおりです。
グラフのデータ系列を表すSeriesオブジェクトに用意されているDataLabelsメソッドで、
1つの系列に含まれる全データラベルを表すDataLabelsコレクションを取得し、DataLabels.Formatプロパティで、
ChartFormatオブジェクトを取得しています。
非表示のFontを使ったサンプル
グラフに関連するオブジェクトには、非表示設定になっているFontプロパティが複数存在します。
DataLabelsコレクションにも非表示状態のFontプロパティがあります。
このDataLabels.Fontプロパティを使うと、先ほどよりも随分すっきりしたコードで、同様のフォント操作が可能です。
Dim srs As Series
For Each srs In ActiveChart.SeriesCollection
srs.HasDataLabels = True
srs.DataLabels.Font.Size = 18
Next
End Sub
長期に渡って使用されるExcelマクロの場合、先述の「srs.DataLabels.Format.TextFrame2.TextRange.Font.Size」を使うほうが良さそうですが、使い捨てするようなマクロであれば「srs.DataLabels.Font.Size」を利用するほうが明らかに簡単です。
最終更新日時:2022-06-25 08:57
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » データラベルのフォントをVBAで操作する