# Excel2010 VBA グラフで１軸と２軸の目盛を同期させたい

• ### 質問

• OKWave_ID Zi-coさんのプログラム参考に下記のようなローソク足と移動平均をグラフにしまいた。
１軸と２軸の目盛の表示がが少しづつ違います、１軸と２軸の目盛表示を同じにしたいです。

Sub ローソク足()
Dim r As Range
Dim s As String

With ActiveSheet
.Range("J1:K1").Value = [{"x範囲数","x移動"}]
'ScrollBarを作成し、セルにリンクさせます。
For Each r In .Range("J3:K3")
With .ScrollBars.Add(r.Left, r.Top, r.Width, r.Height)
.Value = 1
.Min = 1
.Max = 1074
.SmallChange = 1
.LargeChange = 10
.LinkedCell = r.Offset(-1).Address
End With
Next
.Range("J2").Value = 63
'--------------------[名前定義]を作成し、リンクセルによって可変する範囲を設定します------------------------------------
.Names.Add "時間", "=OFFSET(\$B\$10,\$k\$2,0,\$J\$2,)"
.Names.Add "始値", "=OFFSET(\$B\$10,\$k\$2,1,\$J\$2,)"
.Names.Add "高値", "=OFFSET(\$B\$10,\$k\$2,2,\$J\$2,)"
.Names.Add "安値", "=OFFSET(\$B\$10,\$k\$2,3,\$J\$2,)"
.Names.Add "終値", "=OFFSET(\$B\$10,\$k\$2,4,\$J\$2,)"
.Names.Add "ma", "=OFFSET(\$B\$10,\$K\$2,5,\$J\$2,)"
.Names.Add "mb", "=OFFSET(\$B\$10,\$K\$2,6,\$J\$2,)"
.Names.Add "mc", "=OFFSET(\$B\$10,\$K\$2,7,\$J\$2,)"
s = "'" & .Name & "'!"
'------------------------グラフ作成--------------------------------------------------------------------------------------------
With .ChartObjects.Add(.Range("L2").Left, 40, 500, 300).Chart
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$C\$10," & s & "時間," & s & "始値,1)"
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$D\$10," & s & "時間," & s & "高値,2)"
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$E\$10," & s & "時間," & s & "安値,3)"
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$F\$10," & s & "時間," & s & "終値,4)"
.ChartType = xlStockOHLC   'ローソク足
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$G\$10," & s & "時間," & s & "ma,5)"
.SeriesCollection(5).ChartType = xlLine   '折れ線
.SeriesCollection(5).AxisGroup = xlSecondary '二軸
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$H\$10," & s & "時間," & s & "mb,6)"
.SeriesCollection(6).ChartType = xlLine  '折れ線
.SeriesCollection(6).AxisGroup = xlSecondary '二軸
.SeriesCollection.NewSeries.Formula = "=SERIES(" & s & "\$I\$10," & s & "時間," & s & "mc,7)"
.SeriesCollection(7).ChartType = xlLine  '折れ線
.SeriesCollection(7).AxisGroup = xlSecondary '二軸
End With
End With
End Sub

2013年1月14日 17:25

### 回答

• 以下、ご参考までに連携します。

' 目盛最大値の同期
.Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue, xlPrimary).MaximumScale
' 目盛最小値の同期
.Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue, xlPrimary).MinimumScale
' 目盛間隔の同期
.Axes(xlValue, xlSecondary).MajorUnit = .Axes(xlValue, xlPrimary).MajorUnit

こちらのように、1軸の値を2軸に設定してはいかがでしょうか？

「With .ChartObjects.Add(.Range("L2").Left, 40, 500, 300).Chart」←このWith句の中に、上記のコードを記載して動作確認してみました。

また、「OKWave_ID Zi-coさんのプログラム」という記載がありますが、可能であれば、このような外部サイト参照は、URLなどのリンクを記載しておくと良いと思います。

• 編集済み 2013年1月30日 5:28 修正
• 回答としてマーク 2013年1月31日 6:36
2013年1月30日 4:44

### すべての返信

• 以下、ご参考までに連携します。

' 目盛最大値の同期
.Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue, xlPrimary).MaximumScale
' 目盛最小値の同期
.Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue, xlPrimary).MinimumScale
' 目盛間隔の同期
.Axes(xlValue, xlSecondary).MajorUnit = .Axes(xlValue, xlPrimary).MajorUnit

こちらのように、1軸の値を2軸に設定してはいかがでしょうか？

「With .ChartObjects.Add(.Range("L2").Left, 40, 500, 300).Chart」←このWith句の中に、上記のコードを記載して動作確認してみました。

また、「OKWave_ID Zi-coさんのプログラム」という記載がありますが、可能であれば、このような外部サイト参照は、URLなどのリンクを記載しておくと良いと思います。

• 編集済み 2013年1月30日 5:28 修正
• 回答としてマーク 2013年1月31日 6:36
2013年1月30日 4:44
• Kyk_nkさん、ありがとうございます

「OKWave_ID Zi-co」さんのURL下記に記載します。

お客様のアカウントが確認されるまでは、本文に画像やリンクを含むことはできませんと表示されますので、参考までに(http://) (okwave.jp/qa/q5084826)(.html)と記載します。

2013年1月31日 7:12
• DavidMicroさん

URLの記載、ありがとうございました。

アカウントが確認され、リンクを含めるようになりましたら、以下のメニューアイコンをクリックすることで、お手軽にリンクを張る方法がオススメです。

是非、ご活用ください！（既知の情報でしたら、お節介にも失礼いたしました！）

• 編集済み 2013年1月31日 8:41 修正
2013年1月31日 8:19