• ベストアンサー

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」ではなく、アクティブなセルになってしまいます。 原因を教えていただけないでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 Charts.Addでグラフが出来ますが、その時点でのデータ範囲は現在選択されてる範囲になり、 次に、SetSourceData Sourceで範囲が変更さますので、Charts.Addの前に範囲選択をして下さい。  Range("A1:C10").Select  Charts.add 以上です。  

mumu001
質問者

お礼

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

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

実際に試していないので、自信ないですが、 結局 Charts.AddでActiveCellのデータでグラフができるということですよね。 mySheet.Range("A1:C10") を Sheets("Sheet2").Range("A1:C10") のようにアクティブシートを使わないで指定してみたらどうでしょうか

mumu001
質問者

お礼

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

関連するQ&A