|
VBA初心者です、以下、お教えいただけないでしょうか?
下のようなシートにデータが取り込まれており(カラム数も行数も可変)、
Aカラム=時間軸に応じた部品ごとの折れ線グラフを、マクロで自動生成したいと思っております。
質問主旨としては、SetSourceData Source:=Sheets("IOPS").Rangeで、
Rangeを、データのある範囲を自動指定するには、どうすればいいでしょうか?
A B C D ...
1 部品1 部品2 部品3 ...
2 time1 x.x1 y.y1 z.z1 ...
3 time2 x.x2 y.y2 z.z2 ...
4 time3 x.x3 y.y3 z.z3 ...
. ... ... ... ... ...
マクロRECORDERから、
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A2:Q762"), PlotBy:= _
xlColumns
のようにRangeを "A2:Q762"と指定すればできますが、カラム、行数は可変のため、
Dim EndRow, EndCol
EndRow = Sheets("IOPS").Range("$A65536").End(xlUp).Row
EndCol = Sheets("IOPS").Range("$B2").End(xlToRight).Column
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("IOPS").Range(Cells(2, 1), Cells(EndRow, EndCol)), PlotBy:= _
xlColumns
などとすると、マクロ・エディターでの継続ボタン実行時、以下エラーになります。
実行時エラー '1004':
'Cells'メソッドは失敗しました: '_Global'オブジェクト
このエラーの後、EndRow や EndColにマウスを当てると、正しい数値は入っているようです。
ただし、Range(Cells(2, 1), Cells(EndRow, EndCol))の代わりに、
Range(Cells(2, 1), Cells(762, 17)) としても、上と同じエラーになります。
(つまりRange指定では Cellsは合わない使用法なのでしょうか.
Cellsに拘らず、単にデータのある最下行、一番右側をどうやって SetSourceDate Source:=以下に自動的に組み込めばいいでしょうか?)
以上、ご教示いただきたく、よろしくお願いいたします。
|
|