プロが教えるわが家の防犯対策術!

Excel2003を使用しています。

ExcelのVBAでグラフ作成のマクロを作る際に、
取得するデータの行数が可変だった場合にどうすればいいのか知りたいです。

現在は取得するデータの範囲を以下の様に取ってきています。

ActiveChart.SetSourceData Source:=Sheets("シート名").Range("B1:C5000"), PlotBy:=xlColumns

ここで、データの範囲("B1:C5000")が可変だった場合のデータ範囲の取得方法を知りたいです。
例えば、("B1:C7000")や("B1:C10000")など。

具体的には"B1"のセルを選択して、

[Ctrl & Shift]を押しながら "→"、"↓"

と操作を行なったときに選択される範囲をグラフのデータとして使用したいです。
途中、空白セルはない前提でかまいません。

データの終端を取得する「Endプロパティ」なるものが存在するようですが、
これを使用するのでしょうか?
それとも別の方法があるのか・・・?

宜しくお願いします。

A 回答 (3件)

>[Ctrl & Shift]を押しながら "→"、"↓"


とは異なりますが
Range("b1").CurrentRegion
>途中、空白セルはない前提でかまいません。
あってもいいです。どこかで繋がっていれば
    • good
    • 1
この回答へのお礼

なるほど、これは便利ですね。

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

ありがとうございます。

お礼日時:2006/05/08 18:17

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

ではどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/09 11:37

> 具体的には"B1"のセルを選択して、


> [Ctrl & Shift]を押しながら "→"、"↓"
> と操作を行なったときに選択される範囲

その範囲なら、そのまんま

Range(Range("B1", Range("B1").End(xlToRight)), Range("B1", Range("B1").End(xlToRight)).End(xlDown))

ですよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ですが、エラーになってしまいます・・・
「実行時エラー '1004'
アプリケーション定義またはオブジェクト定義エラーです。」

具体的には以下のようにしたのですが・・・

ActiveChart.SetSourceData Source:=Sheets(sheet_name). _
Range(Range("B1", Range("B1").End(xlToRight)), Range("B1", Range("B1").End(xlToRight)).End(xlDown)), _
PlotBy:=xlColumns

お礼日時:2006/05/08 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!