対象:Excel 2010, Excel 2013, Windows版Excel 2016
「エクセル vba グラフ activechart 軸を反転」
という検索キーワードに気づきました。
手作業で行うと面倒な横棒グラフの項目軸反転をマクロで行うには、どのようなコードを書けばいいのか、探していらしたのでしょう。
[スポンサードリンク]
項目軸を反転するサンプルマクロ
以下のようなSubプロシージャで、アクティブな横棒グラフの項目軸を反転できます。
Sub アクティブグラフの軸を反転する()
Dim cht As Chart
Set cht = ActiveChart
If cht Is Nothing Then
MsgBox "グラフが選択されていません。"
Exit Sub
End If Dim axs As Axis
Set axs = cht.Axes(xlCategory)
axs.ReversePlotOrder = True
axs.Crosses = xlAxisCrossesMaximum
End Sub
Dim cht As Chart
Set cht = ActiveChart
If cht Is Nothing Then
MsgBox "グラフが選択されていません。"
Exit Sub
End If Dim axs As Axis
Set axs = cht.Axes(xlCategory)
axs.ReversePlotOrder = True
axs.Crosses = xlAxisCrossesMaximum
End Sub
厳密な意味で軸を反転しているのは、最後のほうにある、
axs.ReversePlotOrder = True
の行です。
この行だけを実行すると、横軸が上に移動してしまいますので、つづく、
axs.Crosses = xlAxisCrossesMaximum
の行で、[横軸との交点]を「最大項目」にしています。
ショートカットキー[F8]でステップ実行すると、軸の反転と、横軸の移動を目視確認できますので、是非やってみてください。
またローカルウィンドウで、オブジェクト変数axsの中身を確認することをおすすめします。
言うまでもなく、まず注目していただきたいのは、Axis.ReversePlotOrderとAxis.Crossesです。
項目軸反転を戻すサンプルマクロ
上記の設定を解除したい場合は、最後の2行を以下のように変更してください。
axs.ReversePlotOrder = False
axs.Crosses = xlAxisCrossesAutomatic
axs.Crosses = xlAxisCrossesAutomatic
[スポンサードリンク]
- Newer:数式を文字列にする2種類のマクロ
- Older:優しいを目指したExcel VBA入門書
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAで項目軸を反転する