タイトルを設定する


もう、オブジェクトの階層が面倒くさい

Excel 2007で、グラフのタイトルを設定するには、次のようにします。

Sub Sample()
    With ActiveSheet.ChartObjects(1).Chart
        .HasTitle = True
        .ChartTitle.Text = "タイトル"
        With .ChartTitle.Format.TextFrame2.TextRange.Font
            .Size = 10
            .Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2
        End With
    End With
End Sub

タイトルが表示されていないグラフに、タイトルを表示するには、まずHasTitleプロパティにTrueを設定します。続いて、ChartTitleオブジェクトのTextプロパティに表示したい文字列を指定します。その名の通り、グラフのタイトルはChartTitleオブジェクトで操作します。

上記のマクロでは、そのタイトルの、サイズと文字色も設定しています。まず文字のサイズですが、これは次のように設定します。

グラフ.ChartTitle.Format.TextFrame2.TextRange.Font.Size = 10

グラフ(Chartオブジェクト)の、ChartTitleプロパティは、ChartTitleオブジェクトを返します。

ChartTitleオブジェクトの、Formatプロパティは、ChartFormatオブジェクトを返します。

ChartFormatオブジェクトの、TextFrame2プロパティは、TextFrame2オブジェクトを返します。

TextFrame2オブジェクトの、TextRangeプロパティは、TextRange2オブジェクトを返します。

TextFrame2オブジェクトの、Fontプロパティは、Fontオブジェクトを返します。

Fontオブジェクトの、Sizeプロパティは、文字の大きさを設定するプロパティです。

ふぅ・・・

タイトルの文字色は次のように設定します。

グラフ.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2

もうね、はみ出ちゃうし・・・

ちなみに、こうした操作をExcel 2010でマクロ記録すると、たまに次のようなコードが生成されます。

Sub Macro()
    ActiveSheet.ChartObjects("グラフ 1""""""""""""""""""""""""""""""""").Activate
    ActiveChart.ChartTitle.Select
    Selection.Format.TextFrame2.TextRange.Font.Size = 10
    With Selection.Format.TextFrame2.TextRange.Font.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent2
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
End Sub

「""""""""""""""""""""""""""""""」って何だよwww

Excel 2003のコードは動くか

Excel 2003のコードがExcel 2007で動くかどうかの前に、ひとつ問題があります。上記のように、グラフにタイトルを挿入し、そのタイトルの文字サイズと文字色を変更する操作を、Excel 2003でマクロ記録してみましょう。ここでは、実際の操作画面もお見せします。

1.マクロ記録を開始します

2.グラフを右クリックして[グラフのオプション]を実行します

3.表示される[グラフオプション]ダイアログボックスでタイトルを設定します

4.[OK]ボタンをクリックするとタイトルが挿入されます

5.文字のサイズを設定します。ここでは11ポイントにしました

6.そのまま、文字の色を赤色にします

7.タイトルが、11ポイントになり、赤色で表示されました

8.マクロ記録を終了します

これで記録されたのが、次のコードです。

Sub Macro()
    ActiveSheet.ChartObjects("グラフ 1").Activate
    ActiveChart.ChartArea.Select
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "タイトル"
    End With
    Selection.AutoScaleFont = True
    With Selection.Font
        .Name = "MS Pゴシック"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
    Selection.Font.ColorIndex = 3
End Sub

では、最初の、タイトルを設定する前のグラフに対して、この記録したコードを実行してみましょう。すると・・・

なんと、タイトルだけでなく、グラフ内のすべての文字が、11ポイントの赤色になってしまいました。理由は簡単です。「Selection.Font」のSelection(選択されているモノ)がChartAreaだからです。

Sub Macro()
    ActiveSheet.ChartObjects("グラフ 1").Activate
    ActiveChart.ChartArea.Select    ''←ここでChartAreaを選択(Select)している
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "タイトル"
    End With
    Selection.AutoScaleFont = True
    With Selection.Font                ''←このSelectionはChartArea
        .Name = "MS Pゴシック"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
    Selection.Font.ColorIndex = 3    ''←このSelectionもChartArea
End Sub

つまり、Excel 2003では、グラフのタイトルを挿入して、サイズや色を変更する操作をマクロ記録しても、その通りの正しいコードは記録されないということです。ちゃんと動かないコードの互換性を調べてもしかたないですが、ちなみにExcel 2007で実行しても同じ結果になります。

Excel 2003で、タイトルを挿入して、挿入したタイトルだけ文字サイズと文字色を変更するのなら、マクロ記録したコードを、次のように修正しなければなりません。

Sub Macro()
    ActiveSheet.ChartObjects("グラフ 1").Activate
    ActiveChart.ChartArea.Select
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "タイトル"
    End With
    Selection.AutoScaleFont = True
    ActiveChart.ChartTitle.Select   ''←これを追加する
    With Selection.Font
        .Name = "MS Pゴシック"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
    Selection.Font.ColorIndex = 3
End Sub

【Excel 2007での実行結果】

上記のように変更したコードでしたら、Excel 2007でも同じように動作します。