前々回は縦軸、前回は横軸の設定について触れました。今回は軸の設定の中でも、目盛線の設定について整理します。
まずは、前回作成したサンプルのグラフを使って、VBAで目盛線を設定する方法を調査します。マクロの記録を有効にし、目盛線を順に有効にします。
記録された VBA は次の通りとなります。
ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesMajor) ActiveChart.SetElement (msoElementPrimaryValueGridLinesMinorMajor) ActiveChart.SetElement (msoElementPrimaryCategoryGridLinesMinorMajor) |
Chart オブジェクトの SetElement メソッドは、グラフに引数で指定した要素を追加するメソッドです。
引数に指定できる要素は 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 列挙 には、軸以外の要素も多数定義されています。以下に一部を抜粋します。グラフタイトル、凡例、データラベルなどがあります。
値 | 定数 | 説明 |
0 | msoElementChartTitleNone | グラフ タイトルを表示しません |
1 | msoElementChartTitleCenteredOverlay | タイトルを中央揃えで重ねて表示 |
100 | msoElementLegendNone | 凡例を表示しません |
101 | msoElementLegendRight | 凡例を右に表示 |
105 | msoElementLegendRightOverlay | 凡例を右に重ねて配置 |
200 | msoElementDataLabelNone | データ ラベルを表示しません |
201 | msoElementDataLabelShow | データ ラベルを表示 |
それ以外にも、軸ラベルや単位、対数目盛の設定など様々です。SetElement メソッド一つでいろいろなことができそうですね。
試しに、上記の 1 と 105 を SetElement メソッド設定すると次のようにプロットエリアを大きくしたグラフにできます。
前回 | Notes - Excel 連携 | 次回 |
0 件のコメント:
コメントを投稿