みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAで、散布図のデータ範囲が正しく指定されない

VBA初心者です。
アクティブシート上に、散布図を作成したいのですが・・・

Dim mySheet, mySheetName
Set mySheet = ActiveSheet
mySheetName = ActiveSheet.Name
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=mySheet.Range("A1:C10")
ActiveChart.Location Where:=xlLocationAsObject, Name:=mySheetName

これを実行させた時アクティブなセルに数字が存在すると、データ範囲が「A1:C10」ではなく、アクティブなセルになってしまいます。
原因を教えていただけないでしょうか。よろしくお願いします。

投稿日時 - 2005-06-01 18:26:47

QNo.1423233

すぐに回答ほしいです

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

こんにちは。

Charts.Addでグラフが出来ますが、その時点でのデータ範囲は現在選択されてる範囲になり、
次に、SetSourceData Sourceで範囲が変更さますので、Charts.Addの前に範囲選択をして下さい。

 Range("A1:C10").Select
 Charts.add

以上です。
 

投稿日時 - 2005-06-02 13:15:04

お礼

お返事ありがとうございます。結局「Charts.Addを実行する前に範囲指定しておく」ことにします。SetSourceData Sourceでは場合によっては範囲が変更されないと言うことでしょか?少し解せない部分もありますが、締め切ろうと思います。
これからも、よろしくお願いします。ありがとうございました。

投稿日時 - 2005-06-02 18:57:18

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

実際に試していないので、自信ないですが、
結局
Charts.AddでActiveCellのデータでグラフができるということですよね。

mySheet.Range("A1:C10")

Sheets("Sheet2").Range("A1:C10")
のようにアクティブシートを使わないで指定してみたらどうでしょうか

投稿日時 - 2005-06-02 04:24:05

お礼

お返事ありがとうございました。結局「Charts.Addを実行する前に範囲指定しておく」ことにします。アクティブシートを使わないで範囲指定とのアドバイスですが、名前もまちまちな多数のシートにグラフを作成したかったので、アクティブシートの名前を格納するプログラムとしました。
なにぶん初心者なので、これからも質問することがあると思いますが、よろしくお願いします。

投稿日時 - 2005-06-02 18:50:32

あなたにオススメの質問