質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

20460閲覧

【マクロ】グラフのX系列の値を指定したいのにできません。

macro-beginner

総合スコア25

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/01/30 00:12

グラフのX系列の値をRange("T1014:T3014")を指定したいのですが、何故かX系列の値がRange("N1014:N3014")になってしまいます。
cht.SeriesCollection("G-S").XValues = .Range("T1014:T3014")
とそしても実行時エラーで[オブジェクトは、このプロパティまたはメソッドをサポートしていません。]とでてしまいます。

グラフのX系列の値をRange("T1014:T3014")を指定するにはどうしたらいいのでしょうか?
ご教授をお願い致します。

Sub GrapfGS() Dim op As Worksheet, sn As Worksheet, i As Integer, names As String, xname As String Dim cht As ChartObject Dim rng As Range Dim chart1 As Chart Set op = Workbooks("CAB-Grapf.xls").ActiveSheet Application.ScreenUpdating = False 'グラフ作成 Set cht = ActiveSheet.ChartObjects.Add(100, 100, 350, 260) cht.Chart.ChartType = xlXYScatterSmoothNoMarkers cht.Name = "G-S" cht.Top = Range("G4").Top cht.Left = Range("G4").Left cht.Chart.Axes(xlValue).MinimumScaleIsAuto = True cht.Chart.Axes(xlValue).MaximumScaleIsAuto = True cht.Chart.Axes(xlCategory).MaximumScale = 100 cht.Chart.Axes(xlCategory).MinimumScale = 0 cht.Chart.Legend.IncludeInLayout = False cht.Chart.Legend.Position = xlLegendPositionCorner cht.Chart.Legend.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1 cht.Chart.Axes(xlValue).TickLabels.NumberFormatLocal = General cht.Chart.HasTitle = True cht.Chart.ChartTitle.Text = "G-S" 'データ取得ループ For i = 1 To Worksheets(1).Range("H1").Value If i > 10 Then MsgBox "データーがそんなにないよ(V)o¥o(V)" Exit For End If With Worksheets(2 + i) 'データ範囲の取得 If i = 1 Then '初回は見出し列も取得 Set rng = .Range("T1014:T3014, N1014:N3014") 'グラフにデータソースを設定 cht.Chart.SetSourceData Source:=rng cht.SeriesCollection("G-S").XValues = .Range("T1014:T3014") Else '2回目以降はデータ系列を追加 Set rng = .Range("N1014:N3014") cht.Chart.SeriesCollection.Add rng End If End With 'グラフの名前をDATAシートから取得>Grapfシートを選択して貼り付け。 names = Worksheets(1).Range("B" & i + 1).Value Worksheets(2).Select cht.Chart.SeriesCollection(i).Name = names Next End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

cht.SeriesCollection("G-S").XValues = .Range("T1014:T3014")

cht.Chart.SeriesCollection(1).XValues = Range("T1014:T3014")
にしてみて下さい
修正

投稿2017/01/30 00:43

編集2017/01/30 01:10
date

総合スコア1820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macro-beginner

2017/01/30 00:53

ご回答ありがとうございます。 変更してみましたが同じく[オブジェクトは、このプロパティまたはメソッドをサポートしていません。]とでてしまいました。
jawa

2017/01/30 08:53

横から失礼します。 修正してもエラーが変わらないということは、cht.SeriesCollection("G-S").XValuesの"G-S"の部分を1に変更しただけではないでしょうか? dateさんからのアドバイスには改善点が2点含まれており、 1つがSeriesCollectionをチャート名"G-S"で探しても見つからない点、 もう1つがSeriesCollectionはChartObject型のメンバではなくChart型のメンバなので、cht.Chart.SeriesCollectionで参照しましょう、という点です。 改修内容を今一度確認してみてください。
date

2017/01/30 09:14

今検索したら、似たような質問が別サイトにあったので、もし質問者でしたら処理してください
guest

0

自己解決

で、できた・・・

Sub GrapfGS()
Dim op As Worksheet, sn As Worksheet, i As Integer, names As String, xname As String
Dim cht As ChartObject
Dim rng As Range
Dim chart1 As Chart

Set op = Workbooks("CAB-Grapf.xls").ActiveSheet Application.ScreenUpdating = False 'グラフ作成 Set cht = ActiveSheet.ChartObjects.Add(100, 100, 350, 260) cht.Chart.ChartType = xlXYScatterSmoothNoMarkers cht.Name = "G-S" cht.Top = Range("H4").Top cht.Left = Range("H4").Left cht.Chart.Axes(xlValue).MinimumScaleIsAuto = True cht.Chart.Axes(xlValue).MaximumScaleIsAuto = True cht.Chart.Axes(xlCategory).MaximumScale = 300 cht.Chart.Axes(xlCategory).MinimumScale = 0 cht.Chart.Legend.IncludeInLayout = False cht.Chart.Legend.Position = xlLegendPositionCorner cht.Chart.Legend.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1 cht.Chart.Axes(xlValue).TickLabels.NumberFormatLocal = General cht.Chart.Axes(xlCategory).TickLabels.NumberFormatLocal = General cht.Chart.HasTitle = True cht.Chart.ChartTitle.Text = "G-S" 'データ取得ループ For i = 1 To Worksheets(1).Range("H1").Value If i > 10 Then MsgBox "データーがそんなにないよ(V)o¥o(V)" Exit For End If With Worksheets(2 + i) 'データ範囲の取得 If i = 1 Then '初回は見出し列も取得 cht.Chart.SetSourceData Source:=.Range("T1014:T3014, N1014:N3014") cht.Chart.SeriesCollection(1).XValues = .Range("T1014:T3014") cht.Chart.SeriesCollection(1).Values = .Range("N1014:N3014") Else '2回目以降はデータ系列を追加 Set rng = .Range("N1014:N3014") cht.Chart.SeriesCollection.Add rng End If End With 'グラフの名前をDATAシートから取得>Grapfシートを選択して貼り付け。 names = Worksheets(1).Range("B" & i + 1).Value Worksheets(2).Select cht.Chart.SeriesCollection(i).Name = names Next

End Sub

投稿2017/01/30 08:31

macro-beginner

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問