Excel VBA質問箱 IV

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

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


5134 / 13646 ツリー ←次へ | 前へ→

【52457】SeriesCollectionの使い方 gigi 07/11/14(水) 19:39 質問[未読]
【52460】Re:SeriesCollectionの使い方 n 07/11/14(水) 22:57 発言[未読]
【52467】Re:SeriesCollectionの使い方 gigi 07/11/15(木) 10:12 お礼[未読]

【52457】SeriesCollectionの使い方
質問  gigi  - 07/11/14(水) 19:39 -

引用なし
パスワード
   申し訳ありませんが、どなたか教えていただければ幸いです。
よろしくお願いいたします。

以下のソースは、マクロ記録したものを一部変えたものなのですが、
下から三行目の、データ範囲を指定するところで、
cellsで範囲を指定するとエラーになってしまいます。

変数を範囲に使いたいときは、どのように設定すればよろしいのでしょうか。

それと、charts.addの2行後で、
マクロでは作成されるものの、省略しても問題なく動きます。
(ただし、データ範囲をrange("A1:E1")と指定)

この行は何のために作られるのでしょうか。

ヘルプには、「データ範囲の指定」とありましたが、
データ範囲はseriescollectionでも指定しているので、
ちょっとわからなくなっております。

どうぞよろしくお願いします。

Sub Macro13()
  team_name = ActiveSheet.Name
  x1 = 1
  x2 = 1
  y1 = 1
  y2 = 5
  Charts.Add
  ActiveChart.ChartType = xlLineMarkers
  'ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("G24")
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection.Values = Range(Cells(x1, y1), Cells(x2, y2))
  ActiveChart.Location Where:=xlLocationAsObject, Name:=team_name
End Sub

【52460】Re:SeriesCollectionの使い方
発言  n  - 07/11/14(水) 22:57 -

引用なし
パスワード
   こんにちは。
>cellsで範囲を指定するとエラー
その時、画面はグラフシートがSelectされているはずです。
グラフシートには Cells はありません。
ActiveSheet を変数に格納するなら Worksheet型にして、

Sub try1()
  Dim sh As Worksheet
  Dim x1 As Long
  Dim x2 As Long
  Dim y1 As Long
  Dim y2 As Long

  Set sh = ActiveSheet
  x1 = 1
  x2 = 1
  y1 = 1
  y2 = 5
  Charts.Add
  ActiveChart.ChartType = xlLineMarkers
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection(1).Values = sh.Range(sh.Cells(x1, y1), sh.Cells(x2, y2))
  ActiveChart.Location Where:=xlLocationAsObject, Name:=sh.Name
  Set sh = Nothing
End Sub


また、Where:=xlLocationAsObject...と、ActiveSheet上のChartObjectの場合

Sub try2()
  With ActiveSheet.ChartObjects.Add(200, 100, 400, 300).Chart
    .ChartType = xlLineMarkers
    .SeriesCollection.NewSeries.Values = Cells(1, 1).Resize(, 5)
  End With
End Sub
...のようにも書けます。

>この行は何のために作られるのでしょうか。
単に、[マクロ記録]だからです。
実行時のActiveCellを一旦、SetSourceDataしてChartを作成しているだけです。
[マクロ記録]には、不要なものも記録されるケースは多いですよね。
それと同じです。
または、Range("A1:E1")をセレクトして[グラフ作成ウィザード]-[完了]という操作を
マクロ記録してみれば、また違う理解もできるでしょう。

【52467】Re:SeriesCollectionの使い方
お礼  gigi  - 07/11/15(木) 10:12 -

引用なし
パスワード
   nさん、どうもありがとうございます。

確かに、guraphシートが選択されている時に、cellsは使えないですよね。
見落としておりました。

また、はじめにグラフを各データを選択した上でグラフボタンを押してグラフをかく操作をマクロに登録してみたところ、
SetSourceDataとSeriesCollectionの使われ方の違いが良くわかりました。

どうもありがとうございました。

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