2024/10/23

Notes - Excel 連携:#44)軸のフォントサイズ設定と PlotArea の調整

#41)グラフの調整』から開始した ”使える” グラフにするための調整作業です。いよいよプロット領域を調整するコーディングを始めます。


軸のフォント調整の必要性

#42 で PlotArea の位置調整で無理な値を設定した場合、エラーもなく適当な値に設定されることを紹介しました。そして、PlotArea の Left や Width が指すのは、軸エリアを含んでいました。ということは、PlotArea の調整の前に軸エリアのサイズを把握しておく必要があります。

例えば軸エリアの幅は桁数だけでなく、フォントサイズにも依存します。そこで、Excel が自動で設定するフォントサイズではなく、明示的に指定することで、見た目の統一感と軸エリアのサイズを固定化を狙います。


軸のフォントサイズ設定

エージェントに以下のコードを追加して軸のフォントサイズを明示的に設定します。

Sub Initialize
         ・・・
   'Y 軸補助目盛線の設定
   oChart.Axes(xlValue).MinorUnit = 250
  
   '軸フォントサイズの指定
   oChart.Axes(xlValue).TickLabels.Font.Size = 10
   oChart.Axes(xlCategory).TickLabels.Font.Size = 10

  
   oXls.Visible = True
End Sub

軸のアクセスは #16#17 で紹介しました。Chart オブジェクトの Axes メソッド でアクセスするんでしたね。引数に xlValue を指定すると縦軸、xlCategory を指定すると横軸となります。

この Axes メソッド はヘルプでの説明が不明瞭です。戻り値には Object としか書いていません。Microsoft Learn の Excel 内を調査したところ軸に関する 2 つのオブジェクトが見つかりました。

Axes 指定したグラフ内のすべての Axis オブジェクトのコレクション
Axis グラフの 1 つの軸を表します

この結果より Chart オブジェクトの Axes メソッド で xlValue や xlCategory を指定することにより、Axis オブジェクトを返すと想定できます。Axis オブジェクトには、軸に関するさまざまなプロパティが存在し、TickLabels プロパティから取得する同名のオブジェクトの Font プロパティを利用して、フォントサイズがセットできます。

Axis.TickLabels プロパティ (Excel)

TickLabels.Font プロパティ (Excel)


PlotArea の調整

今回、作成しているグラフのサイズは 500 x 200 ポイントでした。

   'グラフの作成
   Set oShape = oSheet.Shapes.AddChart2(, 4, 200, 1, 500, 200)

このサイズに合わせて、グラフの配置を決定します。

横幅の設定は縦軸エリアを 50 ポイント、グラフエリアを 350 ポイント、残りをグラフタイトルや凡例エリアとします。

続いて高さについてです。軸ラベルの高さは文字サイズの 2 倍程度の幅が必要そうです。また、縦軸を見ると、一番上の縦軸ラベルが上にはみ出ています。文字がセンタリングされているので、軸のフォントサイズ 10 ポイントの半分です。これを考慮して、7 ポイント下に下げ、少し余裕を持たせることにします。以上の結果からプロット領域の高さは 70 ポイントとすればよさそうです。

これらの設定を行うプログラムは下記の通りです。いたってシンプルなコードなのですが、正常に動作させるために重要なポイントがあります。

一部は #42 で触れていますが、わかりますか? 

Sub Initialize
         ・・・
   '軸フォントサイズの指定
   oChart.Axes(xlValue).TickLabels.Font.Size = 10
   oChart.Axes(xlCategory).TickLabels.Font.Size = 10
  
   'プロット領域の設定
   oChart.PlotArea.InsideWidth = 350
   oChart.PlotArea.InsideLeft = 50
   oChart.PlotArea.InsideTop = 7
   oChart.PlotArea.InsideHeight = 170


   oXls.Visible = True
End Sub

正解はプロパティを設定する順番です。

デフォルトで作成されるグラフは、横幅がエリア全体を使っていますが、高さはグラフタイトルと凡例が配置され、プロット領域は狭くなっています。

今回のように、プロット領域を右にずらそうとすると、先に幅を縮める必要があります。逆に高さは広げることになるので、先に上に移動しておかないと必要な高さに変更できないということですね。


実行結果

ここまでの修正で作成されるグラフは次のようになります。

プロット領域の配置はこれで OK ですね。次回は、ラベルの調整を行います。


前回 Notes - Excel 連携 次回


0 件のコメント:

コメントを投稿