トップ回答者
Excel2010 VBA グラフで1軸と2軸の目盛を同期させたい

質問
-
OKWave_ID Zi-coさんのプログラム参考に下記のようなローソク足と移動平均をグラフにしまいた。
1軸と2軸の目盛の表示がが少しづつ違います、1軸と2軸の目盛表示を同じにしたいです。Sub ローソク足()
Dim r As Range
Dim s As StringWith 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- 編集済み DavidMicro 2013年1月14日 17:26
回答
-
以下、ご参考までに連携します。
' 目盛最大値の同期 .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などのリンクを記載しておくと良いと思います。
- 編集済み kyk_nk 2013年1月30日 5:28 修正
- 回答としてマーク DavidMicro 2013年1月31日 6:36
すべての返信
-
以下、ご参考までに連携します。
' 目盛最大値の同期 .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などのリンクを記載しておくと良いと思います。
- 編集済み kyk_nk 2013年1月30日 5:28 修正
- 回答としてマーク DavidMicro 2013年1月31日 6:36