• ベストアンサー

エクセルのグラフの設定をマクロで変更する方法が分からなくて困っています

エクセルのグラフの設定をマクロで変更する方法が分からなくて困っています。 グラフ上で右クリックをし「元データ」という項目があります。 この中の「データ範囲」の行を計算式で出した値に書き換えたいのですが 命令文がわからない為、困ってます。 例えば《='データ'!$A$1:$C$350》の「350」を「250」に変更したいのですが・・・。 お手数ですが宜しくお願いします

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>回答番号:No.1 この回答へのお礼 失礼しました。 コードの記述で過ちがありました。 Range("A1:C" & G6.Value) は間違いで Range("A1:C" & Range("G6").Value) としてください。 ActivesheetとSheets("PI DATA")は同じですか? 同じなら ActiveSheet.ChartObjects("グラフ 4").Activate 'ActiveChart.ChartArea.Select '★1、この行は不要です ActiveChart.SetSourceData Source:=Range("A1:C" & Range("G6").Value) 同じでない場合 G6がActiveSheetにあるのなら ActiveSheet.ChartObjects("グラフ 4").Activate With Sheets("PI DATA") ActiveChart.SetSourceData Source:=.Range("A1:C" & Range("G6").Value) End With G6がSheets("PI DATA")にあるのなら Range("G6")をSheets("PI DATA")で修飾しなければなりません。 ActiveSheet.ChartObjects("グラフ 4").Activate With Sheets("PI DATA") ActiveChart.SetSourceData Source:=.Range("A1:C" & .Range("G6").Value) End With あとグラフはActivateしなくても処理ができます。 試してみてください。 With ActiveSheet.ChartObjects("グラフ 4") .SetSourceData Source:=Range("A1:C" & Range("G6").Value) End With

bibloda
質問者

お礼

遅れましたが回答有難うございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

基本的に方法論として、マクロの記録を取り直してみて、どう変わるか見れば、判るのでは。 ーー その前後の結果(データ範囲の部分に)について、どういう風に変えたのか質問に書かないで、(当然変更してみた結果どうなったか、についても)質問しているのはおかしいと思う。 変更後、(再)実行はしたでしょうね。 ーー 対象は 1例で Charts.Addを実行して後 ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A2:B4")の1行でしょう ーー 添付画像は何が書いてあるか、までは判らない(読めない)場合が多く読者には役立たない。これはOKWAVEのせいだが。 ーー グラフのVBAの基本は グラフを描く、グラフの種類、データは何処、描く場所(埋め込む)は何処 Sub test01() Set g = Charts.Add With g .ChartType = xlLineMarkers .SetSourceData Source:=Sheets("Sheet2").Range("A2:B4") .Location Where:=xlLocationAsObject, Name:="Sheet3" End With End Sub

bibloda
質問者

お礼

詳しい説明ありがとうございました。問題が解決し無事マクロも完成いたしました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

下記で試してみてください。 (グラフを選択して置いて実行してください。) Activechart.SetSourceData Source:=Sheets("データ").Range("A1:C250") セル(例えばD1)の計算値を反映するなら Activechart.SetSourceData Source:=Sheets("データ").Range("A1:C" & D1.Value)

bibloda
質問者

お礼

早速の回答ありがとうございます。 下記のようなマクロを組んでみましたが3行目でデバッグが出てしまいまいます。 グラフ4をセレクトしてシート「PI DATA」のG6の計算結果の範囲を行に指定するように しました。   ActiveSheet.ChartObjects("グラフ 4").Activate ActiveChart.ChartArea.Select ActiveChart.SetSourceData Source:=Sheets("PI DATA").Range("A1:C" & G6.Value) お手数ですがご教授願います。

関連するQ&A

  • エクセルのマクロでグラフを作る方法

     エクセルのマクロでプログラムを組んでグラフを作るときXの値の範囲とYの値の範囲をそれぞれ指定する形でマクロをつくりたいのですがなかなかうまく行きません。  また、大量のグラフを一気に作りたいのでcells()を使って作りたいのですが、どなたかご存知でしたら教えてください。

  • マクロでグラフ範囲を変更するには

    シート上の全グラフに対して、データ範囲のうち上から4行目までだけをグラフに使うように、マクロで一気に変更したいのです。(今は、使っている行数はグラフによって違う) そもそも、現在のデータ範囲をどうやって取得すればよいでしょうか? ネットや本で探しても見つかりません。マクロは初心者なので、調べ方がわるいと思うのですが・・・何かとっかかりだけでも教えてもらえると助かります!

  • エクセルマクロ グラフの操作について

    株価グラフをエクセルで書いています。 しかし、価格が大きく動くとグラフからはみ出してしまいます。 1.そこで、マクロで、価格変動に合わせて縦軸(価格)の数値の範囲(グラフの最大値は常に表示している値の最大値+500円、最小値は-500円としたいです)を変更出来ないでしょうか? 2.マクロで、元データそのものを変更(切り替え)することは出来ないでしょうか? 3.グラフの数値軸はひとつしか設定できないのでしょうか? たとえば、縦軸左側に金額、右側に%といった設定で、二つのグラフをひとつに重ね合わすのは無理でしょうか? 以上3点のマクロの構文が知りたくて質問しました。 設定は、シート”データ”のA列に日付、BCDE列に元データ、同GHIJ列に切り替えて表示したいデータ、シート”グラフ”にグラフを置いています。 私の所持する本を読んでも載っていないし、ネットでも探してみたのですが、コレといったものを見つけることができませんでした。 複数たずねて申し訳ないですが、関連する項目なので、あえてたずねてみることにしました。 うち、ひとつだけでも結構ですので、どなたか教えてください。 なお、エクセル2003、OS=XPです。

  • エクセルのグラフについて教えて!

    エクセルでグラフを作成して、グラフを右クリックして元のデータを表示します。 系列のタブの『値』にグラフに表示される値(参照セル)を入力する訳ですが、そこに数式を入力するのは可能でしょうか? 例えば通常は =Sheet1!$A$1:$N$1 のようにセルの範囲を指定しますが、そこに=Sheet1!($A$1/$A$2):$N$1/$N$2)のように数式を入れてグラフを完成させたいんです。 エクセルのシートで数式を計算し、その範囲を参照するようにしたらいいのですが、今回はその方法は使えないので質問します。

  • EXCELのグラフ

    EXCELでグラフを作っていますが、縦軸の数値が小さくなったので変更したいのですが、グラフの種類などの変更はできますが、グラフ内の数値の変更がどこにあるのかわかりません。以前のEXCELでは右クリックすると範囲メモリの修正(?)というものが出てきて簡単に修正できました。教えてください。

  • マクロでグラフのデーター範囲の変更

    すみません、シート1に埋め込みグラフが3つあります。それぞれ系列1、2、3とデーター範囲が設定されています。それで「項目軸ラベルに使用」にもデータ範囲が設定されています。 その、データー範囲をセルの最終行まで変更するマクロを作ろうと思っているのですが、うまくいかないので誰か教えて頂けませんでしょうか? 下記の様に各列の下にデータが入っています。更にその下にデータが追加されていくのですが、 それに伴ってデーター範囲も変更したいのですが何か良い方法を教えて下さい。 SetSourceDataとかで挑戦しようとしたのですが、各系列をどのように指定してよいのか分からず困ってしまいました。 どうか宜しくお願いします。  A列(項目軸ラベル) B列(系列1) C列(系列2) D列(系列3) =グラフ1    E列(項目軸ラベル) F列(系列1) G列(系列2) H列(系列3) =グラフ2  I列(項目軸ラベル) J列(系列1) K列(系列2) L列(系列3) =グラフ3

  • エクセル マクロ 既存グラフの削除

    また 質問させていただきます。 左側に表全体を範囲指定した折れ線グラフを、マクロを実行して貼り付けており 右側に表の一部を範囲指定した折れ線グラフを、マクロを実行して貼り付けます。 右の表の範囲を変更して、右の表だけを変更するマクロ作成したいと思っています。 左側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="全体グラフ" 右側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="グラフ1" 右側の折れ線グラフ(グラフ1)を削除して、範囲を変更した新たなグラフ(グラフ1に名前を変更)を貼り付けるマクロを作りましたが、右側のグラフが貼りついていない、最初のときに実行すると、削除するグラフが無いためにエラーがでてしまいます。 If を使用するのかなっと思っていますが、どのように入力すればいいのか分かりません。 教えて頂けないでしょうか。

  • EXCELマクロで順番にグラフをつくるには?

    エクセルマクロ・VBA初心者です。 現在、グラフ作成で困ってます。 お詳しい方、よければアドバイスを下さい! 作成したいグラフは、元データが5000行×50列で、 1番左列に時刻、2列目からデータとなっており、 1-2列、1-3列、1-4列、・・・・1-50列 という感じの一般的な時系列グラフを多量につくりたいのです。 これをマクロを使って、別シートにグラフ(散布図)を並べて作るというものです。 さらに、別に用意したグラフの名称を並べたセルから、 順に、上記グラフのタイトルとして入力していきたいのです。 これをVBAを使って行いたいのですが、 一体どうすればいいのでしょうか? 「マクロの記録」では、 ■「50列目まで順番にグラフをつくれ!」 ■「名前を順番に入れていけ!」 という命令が私には作れません。 お詳しい方、ご返答宜しくお願い致します。

  • Excelのグラフでの系列の変更方法

    質問が悪くてなかなか答えをいただけなさそうので再度記入します。Excel2000の件です。 2つのExcelのファイルをリンクして使っており、1つめのファイルのある列のデータを元に2つめのファイルにグラフを書いています。 このグラフを2つめのファイルの1シートに1グラフコピーして1列づつデータの参照範囲変えてグラフの内容を変えたいのです。 グラフの書式などはそのままコピーされるのでデータの参照範囲のみを変えたいのですが、その参照範囲を簡単に一列づつ変えて行く方法はないでしょうか。 すごく大きいファイルなのでマウスで範囲を選びなおすのが大変なのです。 関数の式のコピーなどだと置換機能が使えてデータ範囲の変更が簡単なのに、グラフではデータの上で右クリックしてでる「=SERIES([第6章.xls]Sheet1・など」の式を選んでも置換の機能が使えません。 VBAなどを使わずにできる方法をご存知でしたら教えてください。

  • Excelのグラフ、データ範囲にて

    只今Excelのグラフを使っているのですが、問題があります。 グラフのデータ範囲を可変にしたいと思っています。 グラフの基となるデータは以下のようになります。       |  1 |  2 |  3 |  4 ----------------------------------------------- 9/11~9/17 |    | 10 | 30 | 40 9/18~9/25 | 20 |    |    | 50 9/26~10/2 |    |    | 40 | 20 系列を1、2、3、4とします。 グラフの値は全て埋まるとは限りません。 全て空白もあれば、飛び飛びに値が入っていることもあります。 日付の方はこれ以上項目は触れることはないですが、系列の方はデータが増えることがもあれば、減ることもあります。 以上のような機能を網羅するようなグラフを作りたいのですが、どのようにしたら良いでしょうか?? この機能をつける為にマクロを使用しても使用しなくても構いません。 宜しくお願いします。

専門家に質問してみよう