昨日のコードはxl2007|xl2010用です。ついでに、xl97-xl2003で動作確認したコードはこちら。
(太字が変更点)
(太字が変更点)
Option Explicit
Sub 準備() 'Sheet追加しダミーデータセット
With Sheets.Add
.Range("A1:D1").Value = Array("日付", "数値", "タテ軸", "ヨコ軸")
.Range("A2:D2").Value = Array(#1/1/2011#, "=INT(RAND()*100)", #1/15/2011#, 55)
With .Range("A2:B22")
.Range("A1:B1").AutoFill Destination:=.Cells, Type:=xlFillDefault
.Columns(1).NumberFormat = "m/d"
.Range("C1").NumberFormat = "m/d"
.Columns(2).Value = .Columns(2).Value
End With
End With
End Sub
'-------------------------------------------------
Sub try2003() '追加したSheetをActiveにして実行
Dim ws As Worksheet
Dim r As Range
Set ws = ActiveSheet
'r = Chart起点
Set r = ws.Range("D4")
'誤差量用。2003では名前定義ではなくセルに数式をセット
ws.Range("C3").Formula = "=MAX($A:$A)-MIN($A:$A)"
ws.Range("D3").Formula = "=MAX($B:$B)-MIN($B:$B)"
With ws.ChartObjects.Add(r.Left, r.Top, 300, 200).Chart
'散布図直線Chart
.ChartType = xlXYScatterLinesNoMarkers
.HasLegend = False
'r = SourceDataをセットし直し
Set r = ws.Range("B2", ws.Cells(ws.Rows.Count, 1).End(xlUp))
.SetSourceData Source:=r, PlotBy:=xlColumns
'系列2追加
With .SeriesCollection.NewSeries
.XValues = ws.Range("C2")
.Values = ws.Range("D2")
'誤差範囲を設定
.ErrorBar Direction:=xlX, _
Include:=xlBoth, _
Type:=xlErrorBarTypeCustom, _
Amount:=ws.Range("C3"), _
MinusValues:=ws.Range("C3")
.ErrorBar Direction:=xlY, _
Include:=xlBoth, _
Type:=xlErrorBarTypeCustom, _
Amount:=ws.Range("D3"), _
MinusValues:=ws.Range("D3")
'誤差範囲の線スタイル設定
With .ErrorBars
.EndStyle = xlNoCap
.Border.LineStyle = xlDash
End With
End With
'系列1を折れ線Chartに変更
.SeriesCollection(1).ChartType = xlLine
'軸のMin,Max設定
With .Axes(xlValue)
.MinimumScale = Application.Min(r.Columns(2), 0)
.MaximumScale = Application.Ceiling( _
Application.Max(r.Columns(2)), 10)
End With
With .Axes(xlCategory)
.MinimumScale = Application.Min(r.Columns(1))
.MaximumScale = Application.Max(r.Columns(1))
.TickLabels.NumberFormat = "m/d"
End With
'ChartObjectをActiveにした後ErrorBarをSelectして処理
.Parent.Activate
End With
'誤差範囲線の色変更
Application.ExecuteExcel4Macro ("SELECT(""系列 2 X 誤差範囲"")")
Selection.Border.Color = vbRed
Application.ExecuteExcel4Macro ("SELECT(""系列 2 Y 誤差範囲"")")
Selection.Border.Color = vbGreen
Set r = Nothing
Set ws = Nothing
End Sub

Sub 準備() 'Sheet追加しダミーデータセット
With Sheets.Add
.Range("A1:D1").Value = Array("日付", "数値", "タテ軸", "ヨコ軸")
.Range("A2:D2").Value = Array(#1/1/2011#, "=INT(RAND()*100)", #1/15/2011#, 55)
With .Range("A2:B22")
.Range("A1:B1").AutoFill Destination:=.Cells, Type:=xlFillDefault
.Columns(1).NumberFormat = "m/d"
.Range("C1").NumberFormat = "m/d"
.Columns(2).Value = .Columns(2).Value
End With
End With
End Sub
'-------------------------------------------------
Sub try2003() '追加したSheetをActiveにして実行
Dim ws As Worksheet
Dim r As Range
Set ws = ActiveSheet
'r = Chart起点
Set r = ws.Range("D4")
'誤差量用。2003では名前定義ではなくセルに数式をセット
ws.Range("C3").Formula = "=MAX($A:$A)-MIN($A:$A)"
ws.Range("D3").Formula = "=MAX($B:$B)-MIN($B:$B)"
With ws.ChartObjects.Add(r.Left, r.Top, 300, 200).Chart
'散布図直線Chart
.ChartType = xlXYScatterLinesNoMarkers
.HasLegend = False
'r = SourceDataをセットし直し
Set r = ws.Range("B2", ws.Cells(ws.Rows.Count, 1).End(xlUp))
.SetSourceData Source:=r, PlotBy:=xlColumns
'系列2追加
With .SeriesCollection.NewSeries
.XValues = ws.Range("C2")
.Values = ws.Range("D2")
'誤差範囲を設定
.ErrorBar Direction:=xlX, _
Include:=xlBoth, _
Type:=xlErrorBarTypeCustom, _
Amount:=ws.Range("C3"), _
MinusValues:=ws.Range("C3")
.ErrorBar Direction:=xlY, _
Include:=xlBoth, _
Type:=xlErrorBarTypeCustom, _
Amount:=ws.Range("D3"), _
MinusValues:=ws.Range("D3")
'誤差範囲の線スタイル設定
With .ErrorBars
.EndStyle = xlNoCap
.Border.LineStyle = xlDash
End With
End With
'系列1を折れ線Chartに変更
.SeriesCollection(1).ChartType = xlLine
'軸のMin,Max設定
With .Axes(xlValue)
.MinimumScale = Application.Min(r.Columns(2), 0)
.MaximumScale = Application.Ceiling( _
Application.Max(r.Columns(2)), 10)
End With
With .Axes(xlCategory)
.MinimumScale = Application.Min(r.Columns(1))
.MaximumScale = Application.Max(r.Columns(1))
.TickLabels.NumberFormat = "m/d"
End With
'ChartObjectをActiveにした後ErrorBarをSelectして処理
.Parent.Activate
End With
'誤差範囲線の色変更
Application.ExecuteExcel4Macro ("SELECT(""系列 2 X 誤差範囲"")")
Selection.Border.Color = vbRed
Application.ExecuteExcel4Macro ("SELECT(""系列 2 Y 誤差範囲"")")
Selection.Border.Color = vbGreen
Set r = Nothing
Set ws = Nothing
End Sub
