【解析屋さんのためのExcelVBA(5)】シート内のグラフのサイズを統一し、タイトル・軸ラベル、凡例のテンプレートを入れるVBA

はやし@color_chipsです。

突然ですが!
Excel2010以降では、でグラフ作るとそのままではタイトルや凡例などが表示されないままです。
グラフのメニューから、表示させるようにはできますが、グラフが多くなると非常に面倒くさい。
(グラフの複数選択時にはグラフメニューが使えないので、一括設定ができない。)

報告書等に、データ解析をした結果のグラフを掲載する時、
グラフが1,2点であればよいですが、増えてくると、
グラフサイズが合っていなかったり、タイトル表記や軸ラベル、凡例などを統一したいという事があります。

そんな時はこれ!

そんな時はこれ!
「シート内のグラフのサイズを統一し、タイトル・軸ラベル、凡例のテンプレートを入れるVBA」
(長い)

というわけで、ソースコードです

' [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
' [[                                                        ]]
' [[ アクティブシートの全てのグラフについて、               ]]
' [[ サイズを設定し、タイトル、軸ラベル、凡例を入れる       ]]
' [[                                                        ]]
' [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
Sub setAllChartSizeAndTitle()
    Dim Width As Integer
    Dim Height As Integer
    Dim Title As String
    Dim TitleSize As Integer
    Dim AxisTitleX As String
    Dim AxisSizeX As Integer
    Dim AxisTitleY As String
    Dim AxisSizeY As Integer

    Width = 320     'グラフサイズ幅
    Height = 240    'グラフサイズ高さ
    Title = "ChartTitle"    'グラフタイトル
    TitleSize = 14          'グラフタイトル文字サイズ
    AxisTitleX = "X-Axis"   '項目軸軸ラベル
    AxisSizeX = 14          '項目軸軸ラベル文字サイズ
    AxisTitleY = "Y-Axis"   '数値軸軸ラベル
    AxisSizeY = 14          '数値軸軸ラベル文字サイズ

    Dim tmpObject
    For Each tmpObject In ActiveSheet.ChartObjects
        tmpObject.Width = Width
        tmpObject.Height = Height
        With tmpObject.Chart
            If .HasTitle = False Then
                .HasTitle = True                    ' タイトル表示有無
                With .ChartTitle                    ' チャートのタイトル設定
                    .Caption = Title         ' グラフタイトル
                    .Font.Size = TitleSize                 ' タイトル文字サイズ
                    .Font.Color = vbBlack           ' タイトル文字色
                    .Interior.ColorIndex = xlNone   ' タイトル領域塗りつぶし
                End With
            End If
            With .Axes(xlCategory, xlPrimary)       ' 項目軸
                If .HasTitle = False Then
                    .HasTitle = True                    ' 軸ラベル表示有無
                    With .AxisTitle
                        .Caption = AxisTitleX           ' 軸ラベル
                        .Font.Size = AxisSizeX          ' ラベル文字サイズ
                        .Font.Color = vbBlack           ' ラベル文字色
                        .Interior.ColorIndex = xlNone   ' ラベル領域塗りつぶし
                    End With
                End If
            End With
            With .Axes(xlValue, xlPrimary)          ' 数値軸
                If .HasTitle = False Then
                    .HasTitle = True                    ' 軸ラベル表示有無
                    With .AxisTitle
                        .Caption = AxisTitleY           ' 軸ラベル
                        .Font.Size = AxisSizeY          ' ラベル文字サイズ
                        .Font.Color = vbBlack           ' ラベル文字色
                        .Interior.ColorIndex = xlNone   ' ラベル領域塗りつぶし
                    End With
                End If
            End With
            .HasLegend = True '凡例
        End With
    Next
End Sub

実行してみる

これが

excelvba_chart_20150526-1.png

こう!

excelvba_chart_20150526-2.png

使い方・説明

アクティブなシートにグラフがある状態で、
setAllChartSizeAndTitle()内で設定している、下記の数値やテキスト

Width = 320     'グラフサイズ幅
Height = 240    'グラフサイズ高さ
Title = "ChartTitle"    'グラフタイトル
TitleSize = 14          'グラフタイトル文字サイズ
AxisTitleX = "X-Axis"   '項目軸軸ラベル
AxisSizeX = 14          '項目軸軸ラベル文字サイズ
AxisTitleY = "Y-Axis"   '数値軸軸ラベル
AxisSizeY = 14          '数値軸軸ラベル文字サイズ

をそれぞれ好みに変更して、実行してみてください。

ご意見、ご質問ありましたら、@color_chipsまで。
動かない!という文句でも構いません。
皆さんのデータ解析ライフのお役に立てますよう。

関連記事