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 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でも同じように動作します。