Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12146 / 13645 ツリー ←次へ | 前へ→

【12084】グラフのマクロ ぽんぽん 04/3/23(火) 17:25 質問
【12088】Re:グラフのマクロ こうちゃん 04/3/23(火) 18:07 回答
【12113】Re:グラフのマクロ ぽんぽん 04/3/24(水) 9:44 お礼

【12084】グラフのマクロ
質問  ぽんぽん  - 04/3/23(火) 17:25 -

引用なし
パスワード
   こんにちは。
どなたかご教授していただければありがたいです。
(こうちゃんさんへ、説明が不足していたので付け足します)
今、ひとつのブックに10個のワークシートがあります。
それぞれのシートには別のデータが存在しますが、シート全体の
形態は同じです。
それぞれのシートのE18:E21のデータ(Yの範囲)とB18:B21(Xの範囲)で
散布図を書き、そこに近似曲線(多項式近似_2次)を書かせたいのです。
下記に示すコードは[PL00005]というシートで「新しいマクロの記録」を使い
マクロを作ったものです。
これで、マクロの実行を行うとシート[PL00005]ではうまくいきますが
他のシートでマクロの実行を行っても、同じようにシート[PL00005]に同じグラフが
書かれることになります。
それぞれのシートでそれぞれのシートのE18:E21のデータ(Yの範囲)とB18:B21(Xの範囲)を
使ってグラフを書くにはどこをどう直せばよいでしょうか?
(ちなみにシートの名前はPL00001〜PL00010です)
検索機能でこのサイトの過去のものを見てみましたが、よくわかりませんでした。
よろしくお願いいたします。

Sub 回帰曲線ACA11_2()
  Charts.Add
  ActiveChart.ChartType = xlXYScatter
  ActiveChart.SetSourceData Source:=Sheets("PL00005").Range("E18:E21"), PlotBy _
  :=xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, Name:="PL00005"
  ActiveChart.SeriesCollection(1).XValues = "=PL00005!R18C2:R21C2"
  ActiveChart.SeriesCollection(1).Name = """ACA11"""
  With ActiveChart
  .HasTitle = True
  .ChartTitle.Characters.Text = "ACA11"
  .Axes(xlCategory, xlPrimary).HasTitle = True
  .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
  .Axes(xlValue, xlPrimary).HasTitle = True
  .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
  End With

  ActiveChart.HasLegend = False
  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
  , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
  ).Select
End Sub

【12088】Re:グラフのマクロ
回答  こうちゃん E-MAIL  - 04/3/23(火) 18:07 -

引用なし
パスワード
   ぽんぽんさん、またまた私でごめんね

>今、ひとつのブックに10個のワークシートがあります。
>それぞれのシートには別のデータが存在しますが、シート全体の
>形態は同じです。
>それぞれのシートのE18:E21のデータ(Yの範囲)とB18:B21(Xの範囲)で
>散布図を書き、そこに近似曲線(多項式近似_2次)を書かせたいのです。
>下記に示すコードは[PL00005]というシートで「新しいマクロの記録」を使い
>マクロを作ったものです。
>これで、マクロの実行を行うとシート[PL00005]ではうまくいきますが
>他のシートでマクロの実行を行っても、同じようにシート[PL00005]に同じグラフが
>書かれることになります。
>それぞれのシートでそれぞれのシートのE18:E21のデータ(Yの範囲)とB18:B21(Xの範囲)を
>使ってグラフを書くにはどこをどう直せばよいでしょうか?
>(ちなみにシートの名前はPL00001〜PL00010です)
>検索機能でこのサイトの過去のものを見てみましたが、よくわかりませんでした。
>よろしくお願いいたします。

先にも書いたとおりループを使えばOKでしょ。
For Nextを使ってみると、こんな感じです。

>Sub 回帰曲線ACA11_2()
  Dim i As Integer
  For i = 1 To 10
   Sheets("PL000" & Format(i, "00")).Select
>  Charts.Add
>  ActiveChart.ChartType = xlXYScatter

  ActiveChart.SetSourceData Source:=Sheets("PL000" & _
     Format(i, "00")).Range("E18:E21"), PlotBy :=xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, _
     Name:="PL000" & Format(i, "00")
  ActiveChart.SeriesCollection(1).XValues = "=PL000" & _
     Format(i, "00") & "!R18C2:R21C2"

>  ActiveChart.SeriesCollection(1).Name = """ACA11"""
>  With ActiveChart
>  .HasTitle = True
>  .ChartTitle.Characters.Text = "ACA11"
>  .Axes(xlCategory, xlPrimary).HasTitle = True
>  .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ACA11 (ng/mL)"
>  .Axes(xlValue, xlPrimary).HasTitle = True
>  .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "O.D. (492-630nm)"
>  End With
>
>  ActiveChart.HasLegend = False
>  ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=2 _
>  , Forward:=0, Backward:=0, DisplayEquation:=True, DisplayRSquared:=True _
>  ).Select
Next
>End Sub

【12113】Re:グラフのマクロ
お礼  ぽんぽん  - 04/3/24(水) 9:44 -

引用なし
パスワード
   こうちゃんさん、おはようございます。
ループなどは初耳だったので、よくわからなかったのですが
ForNextの構文を少し勉強しました。
少しわかるようになり、アドバイス通りいじくってみました。
エラーが出ることもなく、上手くいきました。
シートごとにどんどんグラフが書かれて行くので
感動しました!
ありがとうございました!
もう少し自分なりに勉強しますので、今後もよろしくお願いします!

12146 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free