エクセルVBAでグラフのプロットエリアのサイズを統一する方法

2022/5/25追記

これまで紹介していたやり方は不要な余白が残ってしまうので改良しました。


Excelでグラフの中身(下の図の黒枠の部分)のサイズを設定するための方法を紹介します。

黒枠の部分はオブジェクトのようにサイズ値を直接設定することができないため、VBAを用います。下図のようにPlotareaには軸のラベル部分が含まれています。本方法は黒枠の部分のサイズを指定し、軸のサイズはなりゆきとするため、軸のサイズが異なればグラフの全体(chartarea)のサイズも異なります。

 Sub graphsize()
    Dim Height, Width, isvertical, axes_height, axes_width
    isvertical = True 'グラフの向き
    Height = 500 'グラフ部分のサイズ
    Width = 500 'グラフ部分のサイズ
    If isvertical = True Then
        axes_width = ActiveChart.Axes(xlValue).Width '①軸のサイズ取得
        axes_height = ActiveChart.Axes(xlCategory).Height '①軸のサイズ取得
    Else
        axes_width = ActiveChart.Axes(xlCategory).Width '①軸のサイズ取得
        axes_height = ActiveChart.Axes(xlValue).Height '①軸のサイズ取得
    End If
        
    ActiveChart.ChartArea.Height = Height + axes_height + 10 '②チャートエリア
    ActiveChart.ChartArea.Width = Width + axes_width + 10    '②チャートエリア
    ActiveChart.PlotArea.Height = Height + axes_height '③プロットエリア
    ActiveChart.PlotArea.Width = Width + axes_width    '③プロットエリア
End Sub

上記の「グラフの向き」、「グラフ部分のサイズ」を設定をした上、対象のグラフを選択した状態で実行してみてください。

グラフの向きは横棒グラフでは横(isVertical=False)となります。

説明

①では縦軸、横軸のラベルのサイズをそれぞれ取得しています。

②ではChartAreaのサイズを、グラフ部分のサイズ+軸のラベルのサイズ+余白に設定しています。

PlotAreaはChartAreaより大きくすることができないためChartAreaを先に広げておきます。

③で改めてPlotAreaのサイズを設定します。

以上を複数のグラフに対して実行すれば一括でサイズを統一することができます。

この投稿は役に立ちましたか?
役に立った  役に立たなかった
0人中0人がこの投稿は役に立ったと言っています。