2023/09/08

Notes - Excel 連携:#18)グラフの目盛線

前々回は縦軸、前回は横軸の設定について触れました。今回は軸の設定の中でも、目盛線の設定について整理します。

まずは、前回作成したサンプルのグラフを使って、VBAで目盛線を設定する方法を調査します。マクロの記録を有効にし、目盛線を順に有効にします。

記録された VBA は次の通りとなります。

ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesMajor)
ActiveChart.SetElement (msoElementPrimaryValueGridLinesMinorMajor)
ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesMinorMajor)

Chart オブジェクトの SetElement メソッドは、グラフに引数で指定した要素を追加するメソッドです。

Chart.SetElement メソッド (Excel)

引数に指定できる要素は  MsoChartElementType 列挙 にあらかじめ定義されています。記録されたマクロで使用している定数は次の通り、目盛線を表していました。

値 定数 説明
334 msoElementPrimaryCategoryGridLinesMajor 主項目軸に沿って目盛線を表示
331 msoElementPrimaryValueGridLinesMinorMajor 数値軸に沿って目盛線と補助目盛線の両方を表示
335 msoElementPrimaryCategoryGridLinesMinorMajor 主項目軸に沿って目盛線と補助目盛線の両方を表示

補助目盛線の間隔は、Excel では次の項目で設定します。

VBA では Axes オブジェクトの MinorUnit プロパティとなります。”主” が MajorUnit、”補助” が MinorUnit です。覚えやすいですね。


LotusScript の記述

ここまでの設定を LotusScript で記述すると、次のようになります。

'X 軸の設定
oChart.Axes(xlCategory).CategoryType = xlTimeScale
oChart.Axes(xlCategory).MajorUnit = 7
oChart.Axes(xlCategory).TickLabels.NumberFormatLocal = "m/d;@"


'目盛線の追加
Call oChart.SetElement(msoCategoryGridLinesMajor)
Call oChart.SetElement(msoValueGridLinesMinorMajor)
Call oChart.SetElement(msoCategoryGridLinesMinorMajor)

'Y 軸補助目盛線の設定
oChart.Axes(xlValue).MinorUnit = 250

oXls.Visible = True

もちろん、mso で始まる定数は、スクリプトライブラリに事前に定義しておきます。なお、VBA の定数名のままだと長すぎるとエラーが出たので、短く調整しています。

出来上がったプログラムを実行すると次のような結果となります。


MsoChartElementType 列挙

先ほど紹介した MsoChartElementType 列挙 には、軸以外の要素も多数定義されています。以下に一部を抜粋します。グラフタイトル、凡例、データラベルなどがあります。

値定数説明
0msoElementChartTitleNoneグラフ タイトルを表示しません
1msoElementChartTitleCenteredOverlayタイトルを中央揃えで重ねて表示
100msoElementLegendNone凡例を表示しません
101msoElementLegendRight凡例を右に表示
105msoElementLegendRightOverlay凡例を右に重ねて配置
200msoElementDataLabelNoneデータ ラベルを表示しません
201msoElementDataLabelShowデータ ラベルを表示

それ以外にも、軸ラベルや単位、対数目盛の設定など様々です。SetElement メソッド一つでいろいろなことができそうですね。

試しに、上記の 1 と 105 を SetElement メソッド設定すると次のようにプロットエリアを大きくしたグラフにできます。

前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿