ExcelVBAで積上げグラフのX軸最小値・最大値を設定する方法

Visual Basic

ExcelVBAで積上げグラフのX軸の最小値・最大値を設定する方法は、折れ線グラフなどと比べると少し扱いが異なります。積上げグラフはカテゴリ軸(xlCategory)を使用する場合が多く、日付スケールの設定が効きにくいことがあります。

積上げグラフとX軸の扱い

積上げ縦棒グラフの場合、X軸は基本的にカテゴリ軸として認識されます。そのため、MinimumScaleやMaximumScaleプロパティは、日付軸(xlTimeScale)でない限り正しく動作しないことがあります。

この仕様により、折れ線グラフでは動作しても、積上げ棒グラフでは設定が無効になるケースが発生します。

解決方法の例

1. X軸を日付軸として設定する:グラフのX軸を日付軸に変更すると、MinimumScaleやMaximumScaleを使用可能になります。VBAでは、.CategoryType = xlTimeScaleを設定します。

2. データ範囲を動的に変更する:コンボボックスで選択した開始年・終了年に応じて、グラフに表示するデータ範囲を絞る方法です。これにより、グラフ上では自動的に最小・最大が調整されます。

VBAコード例(カテゴリ軸→日付軸)

With ActiveChart.Axes(xlCategory)
.CategoryType = xlTimeScale
.MinimumScaleIsAuto = False
.MaximumScaleIsAuto = False
.MinimumScale = CLng(CDate(cmbX開始.Value & “/1/1”))
.MaximumScale = CLng(CDate(cmbX終了.Value & “/1/1”))
End With

このようにCategoryTypeをxlTimeScaleにすることで、積上げ棒グラフでも最小値・最大値を指定可能になります。

別のアプローチ

場合によっては、グラフを折れ線グラフに変更してX軸を日付スケールで扱う方法もあります。見た目の積上げ効果は維持したい場合、データの合成や透明バーを使うことで積上げ風に見せることも可能です。

まとめ

ExcelVBAで積上げグラフのX軸最小・最大値を変更する場合、カテゴリ軸のままでは動作しないことがあります。日付軸に変更するか、データ範囲を調整する方法が実務上の解決策です。これにより、コンボボックスで選択した年に応じてX軸を正しく制御できます。

コメント

タイトルとURLをコピーしました