VBA20_グラフの軸を一括設定(初級)

こんばんは! イノベーションに苦労しているBenです。

20151126a.png
は仕事で各地の気温などをグラフにして比較したりしますが、そのとき苦労するのがグラフの軸を合わせることです。日本は春夏秋冬の四季に恵まれた風土ですが、その分、気温の範囲は季節によって大きく異なります。評価するお偉方は軸の値がそろっていないと比較しづらいと文句を言いますが、10地点あると10回、最低値と最高値、刻み幅をそれぞれのグラフで同じ値を設定するという面倒な作業が必要です。

20151126b.png
でも、もグラフの軸の値を変えるにはどのオブジェクトのどのプロパティを変えればいいのかすぐに出てきません。そこでおすすめなのが、まずマクロの記録でこれらの作業をやってみることです。マクロは既定だと標準モジュールが追加され、Macro1のSubプロシージャにVBAで記録されます。上記は実際にグラフの数値軸の範囲を変えたときに記録されたものですが、わからなかったオブジェクトとプロパティがしっかり書かれています。それをもとにプログラムを作ると調べる手間が省けて簡単にプログラミングできます。

Sub Tips1()
  For i = 1 To 5
    ActiveSheet.ChartObjects("グラフ " & i).Activate
    ActiveChart.Axes(xlValue).Select
    ActiveChart.Axes(xlValue).MinimumScale = 2
    ActiveChart.Axes(xlValue).MaximumScale = 14
  Next
End Sub
これがマクロをもとに5つのグラフの数値軸をいっぺんに変えるプログラムです。グラフ名をフレキシブルにしてFor~Nextで5回ほどループする以外は、マクロで記録した数値軸の変更そのものです。グラフは削除とかしなければ作った順にグラフ 1(グラフと1の間には半角スペースが入ります)から2,3,4とオブジェクト名が順に付いて、オブジェクト名は普通に文字列で扱えます。なので、"グラフ " & iとして1ずつ増えるiの値を利用することで、グラフ 1からグラフ 5の5つのグラフを繰り返して軸の一括設定ができます。御覧のコードでは、5つのグラフ全てで、数値軸の最低値を2、最高値を14に設定します。

マクロの記録で記録したマクロを加工してプログラムに生かすのはとても効率的なのでおススメです。ときには、事情に合わせてうまく加工する必要もありますが、VBAを身に着けるためにも役立つのでぜひ活用することをおススメします。いやあ、VBAって本当にいいものですね

今回割愛したマクロの内容やグラフのオブジェクト名の変更などは次回、中級編としてノートしたいと思います。

この記事へのコメント


この記事へのトラックバック