• ベストアンサー

エクセルVBA ワークシート関数を使ってグラフのデータ範囲を指定したい

グラフのデータ範囲を ActiveChart.SetSourseData Range("A10:C20")と指定するのではなく 上記のA10:C20の部分をエクセルの計算式 OFFSET(A10,0,0,COUNTA(A10:30),2)等に変更し、データの範囲が変わっても 対応できるようにしたいのです(行数が10の場合や20の場合などがあります) つまり ActiveChart.SetSourseDataRange("OFFSET(A10,0,0,COUNTA(A10:30),3)0") ↑こういったことをしたいのです。 しかしこのままだとVBAでエクセルのOFFSETやCOUNTAが認識されないようなのですが どのようにすれば実行できるでしょうか;;

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>↑こういったことをしたいのです。 お示しの >ActiveChart.SetSourseDataRange(~~~) の「~~~」の部分の書式がデタラメのようですが、ワークシート上での計算式は =OFFSET(A10,0,0,COUNTA(A10:A30),30) でよろしいでしょうか?  先ず、「~~~」の部分を ダブルクォーテーション で括るのはおかしいです。  次に、VBA には、[Offset プロパティ] というものが用意されていますが、上記の条件でしたら、[Resize プロパティ] の方がよいかと存じます。  そして、ワークシートの [COUNTA 関数] につきましては、VBA 上では、 Application.WorksheetFunction.CountA(~~~) という形で使うことができますので、 Dim DataRng As Range Set DataRng = Sheets("Sheet1").Range("A10").Resize(Application.WorksheetFunction.CountA(Range("A10:A30")), 30) ActiveChart.SetSourceData Source:=DataRng みたいなことでご要望のことができるのではないでしょうか?

kamogawawa
質問者

お礼

できました… めちゃくちゃな文章になっていたのに、読み取ってくださってありがとうございました;; 本当に助かりました^^

その他の回答 (1)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>データの範囲が変わっても対応できるようにしたい... 一般機能では[名前の定義]を使うと便利です。 『Excel で名前付け範囲を使用して動的なグラフを作成する』 http://office.microsoft.com/ja-jp/excel/HA011098011041.aspx ▲こちらを参照されると良いです。 または、定番で『可変範囲のグラフ』 http://www2.odn.ne.jp/excel/waza/graph.html#SEC13 VBAで設定したい場合、 qa4756933 も参考になるかもしれません。

kamogawawa
質問者

お礼

ありがとうございます、しかし名前定義で設定しようとすると http://okwave.jp/qa4939609.html このような状況なのです… しかし参考にさせて頂きました、ありがとうございました^^

関連するQ&A