VBAでワークシート上にあるグラフのタイトルを操作する方法をご説明します。
グラフのタイトルの表示方法から、文字列、位置、サイズ、色などの操作方法をサンプルでご紹介します。
グラフの操作はオブジェクトの階層が複雑なため、わかりやすく説明したいと思います。
1つ操作を覚えてしまえば、ワークシート上に設置された複数のグラフのタイトルを一括で変更するなども容易です。
その他のグラフの操作については下記記事をご覧ください。
- グラフ操作 グラフの作成と詳細設定をする方法
- 2軸グラフを作成する
- 複合グラフに2軸設定する方法
- 作成済みのグラフのデータ範囲を変更する
- シート上のグラフを一括で操作する方法
- 全てのシート上のグラフを一括で操作する方法
1.グラフのタイトルを操作する方法
グラフのタイトルを操作するには、「ChartTitle」オブジェクト操作します。
が、このオブジェクトが厄介です。
グラフのタイトルのオブジェクト
グラフのタイトルを操作にするためのオブジェクト構造について簡単にですが、説明したいと思います。
グラフのタイトルの文字列を操作するのが「ChartTitleオブジェクト」で、その4つも下層にある「Fontオブジェクト」でサイズなどの操作を行います。
これだけ見ると混乱しかしませんので、正直ひな形をコピーして操作すればいいと思います。
タイトルの操作のサンプルコードを次でご紹介します。
2.タイトルを操作するサンプルコード
タイトルの表示から位置、文字列の文字の種類、サイズや色などを順番にサンプルコードをご紹介します。
サンプルグラフとして次のようなデータを使って、シンプルなグラフを用意しました。
タイトルを表示する
タイトルを操作する場合に、タイトルが表示されていないグラフはエラーになります。
そのためタイトルを表示する必要があります。
タイトルの表示は「Chart」オブジェクトの「HasTitle」プロパティを、Trueにすることで表示出来ます。
Sub Sample01()
Dim ChartObj As Object
'グラフを変数に格納
Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")
'取得したグラフのChartオブジェクト
With ChartObj.Chart
'タイトルをグラフに表示する
.HasTitle = True
End With
End Sub
タイトルの文字列を指定しないと、グラフタイトルと表示されます。
タイトルの文字列を指定する
グラフのタイトルを表示したら、タイトルに表示する文字列を指定します。
グラフのタイトルの文字列を指定するには「Chart」オブジェクトの「ChartTitle」オブジェクトの「Text」プロパティを操作します。
Sub Sample02()
Dim ChartObj As Object
'グラフを変数に格納
Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")
'取得したグラフのChartオブジェクト
With ChartObj.Chart
.HasTitle = True 'タイトルをグラフに表示する
.ChartTitle.Text = "年間売上グラフ" 'タイトルの文字列を指定する
End With
End Sub
タイトルの位置を変更する
タイトルの位置は「ChartTitle」オブジェクトの「Top」プロパティと「Left」プロパティで指定します。
指定は数値します。
ChartTitle.Top = 10
ChartTitle.Left = 20
タイトルの位置を変更するコード
Sub Sample03()
Dim ChartObj As Object
'グラフを変数に格納
Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")
'取得したグラフのChartオブジェクト
With ChartObj.Chart
.HasTitle = True 'タイトルをグラフに表示する
.ChartTitle.Text = "年間売上グラフ" 'タイトルの文字列を指定する
.ChartTitle.Top = 10 'TOP位置
.ChartTitle.Left = 20 'Left位置
End With
End Sub
タイトルのサイズと色を変更する
サイズと色のオブジェクトは階層が深いので「ChartTitle.Format.TextFrame2.TextRange.Font」のオブジェクトと覚えてください。
「Font」オブジェクトのサイズは「Size」プロパティと色は「.Fill.ForeColor.ObjectThemeColor」で指定します。
色一覧を最後に記述しています。
Sub Sample04()
Dim ChartObj As Object
'グラフを変数に格納
Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")
'取得したグラフのChartオブジェクト
With ChartObj.Chart
.HasTitle = True 'タイトルをグラフに表示する
.ChartTitle.Text = "年間売上グラフ" 'タイトルの文字列を指定する
.ChartTitle.Top = 5 'TOP位置
.ChartTitle.Left = 20 'Left位置
With .ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 16 '文字のサイズ
.Fill.ForeColor.ObjectThemeColor = 15 '色を指定する
End With
End With
End Sub
色一覧
グラフの色を指定する場合は「ObjectThemeColorプロパティ」で指定します。
正直番号を順番に指定してみて、好みの色を指定する方が早いかもしれません。
定数 | 値 | 説明 |
msoNotThemeColor | 0 | テーマの色を指定しません |
msoThemeColorDark1 | 1 | 濃色1 |
msoThemeColorLight1 | 2 | 淡色1 |
msoThemeColorDark2 | 3 | 濃色2 |
msoThemeColorLight2 | 4 | 淡色2 |
msoThemeColorAccent1 | 5 | アクセント1 |
msoThemeColorAccent2 | 6 | アクセント2 |
msoThemeColorAccent3 | 7 | アクセント3 |
msoThemeColorAccent4 | 8 | アクセント4 |
msoThemeColorAccent5 | 9 | アクセント5 |
msoThemeColorAccent6 | 10 | アクセント6 |
msoThemeColorHyperlink | 11 | ハイパーリンク |
msoThemeColorFollowedHyperlink | 12 | クリックされたハイパーリンク |
msoThemeColorText1 | 13 | テキスト1 |
msoThemeColorBackground1 | 14 | 背景1 |
msoThemeColorText2 | 15 | テキスト2 |
msoThemeColorBackground2 | 16 | 背景2 |