『グラフにおける「SeriesクラスのXvaluesプロパティを設定できません。」エラー』 (まき) エクセル:2003、 Vista いつも色々参考にさせて頂いております。過去の事例も少なく解決に至らなかったので、 ご指導お願い致します。 現在、元ファイルと言うグラフを作る為のシートから、別bookにコピーして条件に応じて グラフを作り直そうとしています。そこで、次の様なVBAをマクロの記録で作りました。 Windows(ファイル名).Activate Sheets("空グラフ").Select ActiveSheet.ChartObjects("グラフ 1").Activate '↓ここでエラー ActiveChart.SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" ActiveChart.SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" ActiveChart.SeriesCollection(1).Name = "=グラフdata!R1C2" ActiveChart.SeriesCollection(2).XValues = "=グラフdata!R2C3:R38C3" ActiveChart.SeriesCollection(2).Values = "=グラフdata!R2C4:R162C4" ActiveChart.SeriesCollection(2).Name = "=グラフdata!R1C4" ActiveChart.SeriesCollection(3).XValues = "=グラフdata!R2C3:R38C3" ActiveChart.SeriesCollection(3).Values = "=グラフdata!R2C6:R162C6" ActiveChart.SeriesCollection(3).Name = "=グラフdata!R1C6" ActiveWindow.Visible = False 条件と言ってもRowの値を伸ばしたり、短くするだけです。(参考にROW162で)しかし、 「実行時エラー'1004': SeriesクラスのXvaluesプロパティを設定できません。」で 最初からエラーで止まってしまいます。ためにし、次の通りでもメソッドをサポート しておりませんで止まってしまいます。 ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveChart.SeriesCollection(1) = "=SERIES(グラフdata!$B$1,グラフdata!$A$2:$A$627,グラフdata!$B$2:$B$162,2)" もう何が悪いのか??でお手上げです。大変申し訳ございませんが、ご指導の程お願い 申し上げます。 ---- 自己レスです。 ファイルを自宅に持ってくるのを忘れ、その上2007で次の様な簡易dataを単品bookに張り動かした 所、何も無かった様に動作しました。その上、セルには空データーも含まれています。ちなみに、 会社ではSeriesCollection(1)だけでも確認したのに駄目でした? 会社ではオリジナルファイルからコピーして、コピーしたシートで動かしたからか、それとも2007と 2003の違いなのか? Sub ボタン1_Click() Sheets("空グラフ").Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select 'これは上では記載忘れですが、実際には入ってます '2007でシートをコピーしないダミーでは↓ここでエラーにならない? ActiveChart.SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" ActiveChart.SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" ActiveChart.SeriesCollection(1).Name = "=グラフdata!R1C2" End Sub よろしくお願い申し上げます。 ---- ActiveSheetやActiveChartとはしないで ↓の様に直接指定してしてみてはどうですか? Option Explicit Sub ボタン1_Click() With Sheets("空グラフ").ChartObjects("グラフ 1").Chart .SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(1).Name = "=グラフdata!R1C2" End With End Sub (SoulMan) ---- SoulMan 様 お返事有り難うございました。早速下記の様にVBAを変更し実行した所、「実行エラー'438'オブジェク トは、このプロパティまたはメソッドをサポートしていません。」とwithの次の行から(with内)でエラ ーが発生します。ちなみに、withで閉じなかったのは、マクロの記録で作ったからです。 Sheets("空堀グラフ").Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select With ActiveChart.PlotArea .SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(1).Name = "=グラフdata!R1C2" .SeriesCollection(2).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(2).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(2).Name = "=グラフdata!R1C2" .SeriesCollection(3).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(3).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(3).Name = "=グラフdata!R1C2" End With 所で最初に書き出したVBAをそのまま、エクセル2007(XP)で実行すると動作します。グラフで2003と2007 で大きく違う事って有るのでしょうか?(他のサイトでやはり2007で動いて2003で動かないと言うのを 読んだ気がします。) 以上よろしくお願い申し上げます。 ---- あのぅ、、、 ActiveSheetやActiveChartとはしないで ↓の様に直接指定してしてみてはどうですか? With Sheets("空堀グラフ").ChartObjects("グラフ 1").Chart .SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(1).Name = "=グラフdata!R1C2" .SeriesCollection(2).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(2).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(2).Name = "=グラフdata!R1C2" .SeriesCollection(3).XValues = "=グラフdata!R2C1:R162C1" .SeriesCollection(3).Values = "=グラフdata!R2C2:R162C2" .SeriesCollection(3).Name = "=グラフdata!R1C2" End With >所で最初に書き出したVBAをそのまま、エクセル2007(XP)で実行すると動作します。グラフで2003と2007 で大きく違う事って有るのでしょうか? それはあるでしょう。 (SoulMan) ---- SoulMan 様 レスが遅れてすいませんでした。また、私の説明不足もありごめんなさい。最初にSoulMan様から教えて 頂いた通りペースとした所、エラー(内容が忘れましたが)が出た為に、(確かwithの行で止まった) ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select With ActiveChart.PlotArea と書き直しました。 今回3軸グラフをマクロで作りたく、コピー前ファイルにSheets("空堀グラフ")に2軸と3軸の目盛を セルに書いており、Sheets("グラフdata")に値を入れると(3軸行は2軸の変数を使い)Sheets("空堀 グラフ")に3軸グラフが出来る様にしていました。コピー前ファイルからSheets("空堀グラフ")と Sheets("グラフdata")をコピーした後に、コピー先のSheets("グラフdata")にcsvファイルをペースト するマクロになっています。コピーした方のシートのグラフ系列を見ると、 [元ファイル名]グラフdata!R2C1:R162C1 となっている為に、(憶測ですが) ActiveChart.SeriesCollection(1).Select が出来ませんでした。そこで、元ファイルでSeriesCollection(1〜3)のグラフ系列を外し、コピー先にcsv を代入した後、2軸のdataを1軸で代入後2軸に変更した所(過去の質問にも有りましたが)目的通り の描画が出来ました。参考までに本VBAは、次の通りです。 ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select 'dataの代入後 第1軸 ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=グラフdata!R2C1:R162C1" ActiveChart.SeriesCollection(1).Values = "=グラフdata!R2C2:R162C2" ActiveChart.SeriesCollection(1).Name = "=グラフdata!R1C2" ActiveChart.SeriesCollection(1).Select With Selection.Border .ColorIndex = 14 '緑色は14番 .Weight = xlThin .LineStyle = xlContinuous End With With Selection .MarkerBackgroundColorIndex = xlAutomatic .MarkerForegroundColorIndex = xlAutomatic .MarkerStyle = xlNone .Smooth = False .MarkerSize = 5 .Shadow = False End With ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue) .MinimumScale = 0 .MaximumScale = 8 .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlCustom .CrossesAt = 8 .ReversePlotOrder = True .ScaleType = xlLinear .DisplayUnit = xlNone End With '回転の代入(第二軸グラフ) ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select i = 2 Do Until i = 4 ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveChart.SeriesCollection.NewSeries グラフ範囲 = "R2C" & 2 + ((i - 1) * 2) & ":R162C" & 2 + ((i - 1) * 2) & "" グラフタイトル = "R1C" & 2 + ((i - 1) * 2) & "" ActiveChart.SeriesCollection(i).Values = "=グラフdata!" & グラフ範囲 ActiveChart.SeriesCollection(i).Name = "=グラフdata!" & グラフタイトル ActiveChart.SeriesCollection(i).Select '第二軸グラフに変更 With Selection.Border If i = 2 Then .ColorIndex = 53 '回転の茶色は53番 End If If i = 3 Then .ColorIndex = 5 '傾の青色は5番 End If .Weight = xlHairline .LineStyle = xlContinuous End With With Selection .MarkerBackgroundColorIndex = xlAutomatic .MarkerForegroundColorIndex = xlAutomatic .MarkerStyle = xlNone .Smooth = False .MarkerSize = 5 .Shadow = False End With ActiveChart.SeriesCollection(i).AxisGroup = 2 ActiveChart.Axes(xlValue, xlSecondary).Select With Selection .MajorTickMark = xlNone .MinorTickMark = xlNone .TickLabelPosition = xlNone End With '第2軸設定 With ActiveChart.Axes(xlValue, xlSecondary) .MinimumScaleIsAuto = True .MinimumScale = 0 .MaximumScale = 60 '2軸のHIを60にする .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With i = i + 1 Loop 何かグラフのマクロは分かりにくいです。まだデバッグが必要ですが、2007でも動きましたが。。。 この度は、私の説明不足でSoulMan様にお時間を使わせてしまい、大変申し訳ございませんでした。