- 締切済み
エクセルマクロでのグラフ作成について
エクセルのマクロでグラフを作成したいのですが 設定したい値のセルが行も列も飛び飛びなんです。このような場合、どうやってセルを設定すればいいか教えてください。 セルの自動マクロ記録でやってみると、例えばですが ActiveChart.SetSourceData Source:=Sheets("グラフ").Range( _ "A5,A10,A15,A20,A25,A30,A35,D5,D10,D15,D20,D25,D30,D35"), PlotBy:= xlColumns このような設定で希望通りのグラフが出来上がります。 A列(X軸)とD列(Y軸)の値で、列は固定で数行置きのデータでのグラフが作りたいのです。 しかもどの行かは固定ではありませんので、セルアドレスをそのまま入力するのではなく、Cells(,) で設定したいのですが、Unionを使ってみたり、色々試したのですが、うまくできません。 おわかりの方教えて頂けませんでしょうか。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- MARU4812
- ベストアンサー率43% (196/452)
動作確認はしてないけど、貴方の説明を読んで日本語の部分だけで 考えて、 > しかもどの行かは固定ではありませんので、セルアドレスを > そのまま入力するのではなく、Cells(,) で設定したいのですが、 > Unionを使ってみたり、色々試したのですが、うまくできません。 Cells(,) で取れる Range の Address でセルアドレスを 編集するだけで、マクロの記録コードと同じ手順を踏めるのでは? とは思いました。 Cells(,) の戻り値も Range だし、 > Sheets("グラフ").Range( "A5,A10,~省略~"), も当然 Range だし、Union も Range が返ってくるので 普通にできても不思議じゃないのですが。。。 それぞれで取れる Range のプロパティなどを1つ1つ確認 していけば、何か設定が違うのかもしれませんが、そこまで やってる時間は無いので、調べる気があるなら調べてみて下さい。 まぁ、飛び飛びのセルで系列まで判断するところがそもそも 無茶な命令をしている気はしますが。 本来は SetSourceData 一発じゃなく、系列ごとの設定を すべきなのかも。そのあたりの問題な気がします。
お礼
MARU4812さん ご回答ありがとうございました、 仰るように、自動記録で、A5,A10,A15,,,と設定してあるところに、 Cells(,),,, と設定してみたのですが、Rangeメソッドは失敗しました。 というエラーメッセージが出てきます。 本来ならばつながっているデータでグラフを作成したいのですが、そうできないため試行錯誤しています。 自動記録で出来たから出来るのではないかと思うのですが、 うまくいかないので困っています。。。 どなたかおわかりの方がいらっしゃいましたらお願い致します。