• ベストアンサー

Excel VBAでグラフの可変データ範囲の取得方法

Excel2003を使用しています。 ExcelのVBAでグラフ作成のマクロを作る際に、 取得するデータの行数が可変だった場合にどうすればいいのか知りたいです。 現在は取得するデータの範囲を以下の様に取ってきています。 ActiveChart.SetSourceData Source:=Sheets("シート名").Range("B1:C5000"), PlotBy:=xlColumns ここで、データの範囲("B1:C5000")が可変だった場合のデータ範囲の取得方法を知りたいです。 例えば、("B1:C7000")や("B1:C10000")など。 具体的には"B1"のセルを選択して、 [Ctrl & Shift]を押しながら "→"、"↓" と操作を行なったときに選択される範囲をグラフのデータとして使用したいです。 途中、空白セルはない前提でかまいません。 データの終端を取得する「Endプロパティ」なるものが存在するようですが、 これを使用するのでしょうか? それとも別の方法があるのか・・・? 宜しくお願いします。

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

  • ベストアンサー
  • tarodaro
  • ベストアンサー率43% (7/16)
回答No.2

>[Ctrl & Shift]を押しながら "→"、"↓" とは異なりますが Range("b1").CurrentRegion >途中、空白セルはない前提でかまいません。 あってもいいです。どこかで繋がっていれば

harahachi
質問者

お礼

なるほど、これは便利ですね。 実は今回のケースではA列にもデータがあり、ここのデータも取ってきてしまったのですが、 必要なデータではないのでこの列を削除することで対応できました。 ありがとうございます。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No1です。 Rng = Range(Range(Range("B1"), Range("B1").End(xlToRight)), Range(Range("B1"), Range("B1").End(xlToRight)).End(xlDown)).Address Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Rng), PlotBy _ :=xlColumns ではどうでしょう?

harahachi
質問者

お礼

うまくいきました! ありがとうございます。 勉強になりました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> 具体的には"B1"のセルを選択して、 > [Ctrl & Shift]を押しながら "→"、"↓" > と操作を行なったときに選択される範囲 その範囲なら、そのまんま Range(Range("B1", Range("B1").End(xlToRight)), Range("B1", Range("B1").End(xlToRight)).End(xlDown)) ですよ。

harahachi
質問者

お礼

ありがとうございます。 ですが、エラーになってしまいます・・・ 「実行時エラー '1004' アプリケーション定義またはオブジェクト定義エラーです。」 具体的には以下のようにしたのですが・・・ ActiveChart.SetSourceData Source:=Sheets(sheet_name). _ Range(Range("B1", Range("B1").End(xlToRight)), Range("B1", Range("B1").End(xlToRight)).End(xlDown)), _ PlotBy:=xlColumns

関連するQ&A