- ベストアンサー
Excelのグラフの目盛について2
- Excelのグラフで目盛線を制限する方法について詳しく説明します。目盛間隔で線を引くことができるため、便利です。
- Excelのセルに値をセットしておいて、それを自動で目盛間隔や目盛最大値、最小値の設定に使用する方法について説明します。
- マクロを使用することで目盛間隔や目盛最大値、最小値のプロパティを設定することができますが、マクロの使用方法を知らない場合は他の方法を検討することをおすすめします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>・・・それを自動で目盛間隔と目盛最大値、目盛最小値のプロパティに設定できる方法はありませんか? 下記マクロ(ChartMajorSet)を実行すると、 ・アクティブシートの全てのグラフの ・最大値、最小値をExcelに再計算させる ・指定した間隔数になるよう目盛間隔を設定 します。間隔を変えているのは数値軸のみです。 今回の(前回も)質問もそうですが、どのタイミングで目盛線の数を制限したいか、対象シートは特定されているか、シート上にグラフが何個あるかなどがよく分かりませんね。マクロでグラフや図形を扱うときは、その数(グラフや図形の個数)で書き方もかなりかわってきます。下記では、どのシートのグラフでも動くようにしたつもりです。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュールで標準モジュールを挿入し、そのコードウインドウに書きコードをコピーして貼り付けます。 ここから ↓ Sub ChartMajorSet() Const Bunkatu = 5 'この間隔数に分割する Dim cht As Integer 'ワークシート上のグラフ数のカウンタ Dim jiku As Integer 'グラフの軸の数 Dim jCot As Integer '軸のカウンタ With ActiveSheet 'アクティブにしているシートの全グラフを対象にする For cht = 1 To .ChartObjects.Count 'グラフをアクティブにして、最大値、最小値をExcelに決めさせる .ChartObjects(cht).Activate jiku = .ChartObjects(cht).Chart.Axes.Count - 1 '数値軸の数だけ処理を行う For jCot = 1 To jiku With ActiveChart.Axes(xlValue, jCot) .MinimumScaleIsAuto = True .MaximumScaleIsAuto = True .MajorUnitIsAuto = True End With '最大値、最小値を洗いがえた後、間隔を指定した幅にする With ActiveChart .Axes(xlValue, jCot).Select With .Axes(xlValue, jCot) .MajorUnit = (.MaximumScale - .MinimumScale) / Bunkatu End With End With Next Next End With End Sub ↑ ここまで グラフのデータが変更になると、間隔数も更新されます。『ChartMajorSet』を使って、自動的に間隔数を一定に保つ事もできます。 Sheet1のグラフで、データ範囲が『A2:C14』の場合、下記コードをSheet1のコードウインドウに貼り付けます。 データが変更になる都度、『最大・最小値の更新→間隔を一定にする』処理を行います。 質問の意味と違っているかもしれませんが、参考にして下さい。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Range("A2:C14"), Target) Is Nothing Then ChartMajorSet End If Target.Offset(0, 0).Select End Sub
お礼
返事が遅れてしまって大変スミマセンでした。nishi6さんが答えてくださったもののEトコ取りで作らせて頂きました。こういう質問って質問を考えるのも一苦労ですね、、。自分の中でまとまってないから分からなくなってきちゃうんだな-と、つくづく感じました、、。