グラフのフォントを変えてみる(四苦八苦した話)

今日は、グラフのフォント変更に四苦八苦したお話。
f:id:Infoment:20191126214219p:plain

いつもの「なんちゃって個人情報」から、なんちゃってグラフを作成。
f:id:Infoment:20191126214317p:plain

このグラフ全体のフォントを変更したくなった。手っ取り早く、マクロの記録でヒントを探した。

Sub Macro1()
    ActiveSheet.ChartObjects("グラフ 1").Activate
    With ActiveSheet.Shapes("グラフ 1").TextFrame2.TextRange.Font
        .NameComplexScript = "メイリオ"
        .NameFarEast = "メイリオ"
        .Name = "メイリオ"
    End With
End Sub

ところが、これをそのまま実行すると、エラーになった。
f:id:Infoment:20191126214552p:plain

境界を越えている?何を叱られているかも分からない。ここから、長い長い手探りが始まった。数多くの寄り道を割愛し、あたかも迷うことなく辿り着いたかのように書くと、こんな感じだ。

まず、ここに着目した。

ActiveSheet.ChartObjects("グラフ 1").Activate

これはListObjectsやPivotTablesのように、ChartObjectsの中の「グラフ1」を指定しているに違いない。いつも「グラフ1」という名前の保証は無いが、シート上にはグラフが1個しかないので、この型を調べてみた。
f:id:Infoment:20191126215230p:plain

ChartObjectか。当たり前といえば、当たり前。ChartObjectがたくさん集まったものが、ChartObjectsなのだから。

しかしこれで、グラフを格納する変数の型が確定した。

    Dim ChartObj As ChartObject
    Set ChartObj = ActiveSheet.ChartObjects(1)

そこで試しに、この部分をChartObjに置き換えてみる。

ActiveSheet.Shapes("グラフ 1")

やっぱり怒られた。
f:id:Infoment:20191126215636p:plain

結局、紆余曲折を経てたどり着いたのが、こちら。

Sub Macro1()
    Dim ChartObj As ChartObject
    Set ChartObj = ActiveSheet.ChartObjects(1)

    With ChartObj.Chart.ChartArea.Format.TextFrame2.TextRange.Font
        .NameComplexScript = "メイリオ"
        .NameFarEast = "メイリオ"
        .Name = "メイリオ"
    End With
End Sub

これだけ苦労しても、一月もしたら忘れていそう。
だから今回は、備忘録としてここに置いておく。
(一ヵ月後、ここに書いたことすら忘れていそう)。

参考まで。