グラフのデータ範囲をCellsで指定するとエラー
あるサイトを参考に、VBAでChartType が xlStockOHLC 形式のグラフを作成しようとしています。
ところがデータ範囲の指定方法で
.SetSourceData Source:=wsdata1.Range("b1:e100"), PlotBy:=xlColumns
あるいは
i = 100
.SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns
とすれば、正常に動作しますが、
.SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(100, 5)), PlotBy:=xlColumns
とすると、Rangeメソッドは失敗しました。_worksheetオブジェクト となります。
両者は同じ範囲を指定しているつもりなのですが、どこが間違いでしょうか。
Option Explicit
Sub sample()
Dim ws As Worksheet
Dim wsdata0, wsdata1 As Worksheet
Dim topPosition As Double
Dim leftPosition As Double
Dim width As Double
Dim height As Double
Dim chartObj As ChartObject
Dim chart0, chart1 As chart
Dim i As Integer
'グラフを作成するシートを指定
Set ws = Worksheets("Sheet1")
Set wsdata0 = Worksheets("saya00")
Set wsdata1 = Worksheets("saya01")
'グラフを表示させる位置を取得 ※例としてセル「G2」の位置を取得
With ws.Range("a1")
leftPosition = .Left
topPosition = .Top
End With
'グラフの横と縦のサイズを設定
width = 1000
height = 500
'ChartObjectオブジェクトを作成
Set chartObj = ws.ChartObjects.Add(leftPosition, topPosition, width, height)
'ChartObjectオブジェクトの名前を設定
chartObj.Name = "saya"
'Chartオブジェクト(グラフ)を作成
Set chart0 = chartObj.chart
With chart0
'グラフの作成元としてセル「B2」から一覧の範囲を指定
' .SetSourceData Source:=wsdata.Range("b1:e100"), PlotBy:=xlColumns
' .SetSourceData Source:=ws.Range("b1:e100"), PlotBy:=xlColumns
' i = 100
' .SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns
.SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(10, 5)), PlotBy:=xlColumns
'グラフの種類を「折れ線グラフ」に指定
.ChartType = xlStockOHLC
'グラフのタイトルを表示
.HasTitle = True
'グラフのタイトルを設定
.ChartTitle.Text = "saya-1"
'グラフのタイトルのフォントサイズを設定
.ChartTitle.Font.Size = "12"
End With
'後片付け
Set chart0 = Nothing
Set chart1 = Nothing
Set chartObj = Nothing
End Sub
お礼
早速の回答ありがとうございました。 上記の方法を確認しましたが、この方法ですとグラフはグラフシート上に作成され、ワークシート上に持ってくると従来のように"グラフ 1"となってしまうということでしょうか。 やはりこれはExcelの仕様として受け入れざるを得ないということのようですね。