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軸を正しく制御できます。


コメント