[[20110610172928]] 『グラフにおける「SeriesクラスのXvaluesプロパティを設定できません。」エラー』 (まき)  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『グラフにおける「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様にお時間を使わせてしまい、大変申し訳ございませんでした。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.