• 締切済み

エクセルのグラフのマクロでエラーが出てしまう

グラフのマクロで Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("個人名シート").Range(.Cells(i, 4), .Cells(i, j - 1)), PlotBy _ :=xlRows X列項目範囲 = Range(.Cells(5, 4), .Cells(5, j - 1)) ActiveChart.SeriesCollection(1).XValues = X列項目範囲 ですが、X列項目範囲が1列だけ(4と変数j-1が同じ)だと最終行で 「実行時エラー'1004'; Series クラスの XValues プロパティを設定出来ません。」と出て しまいます。どなたかご教授下さい

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>With Worksheets("個人名シート")というWithステートメント >の中で動かしています。 ということなら、下記の部分ではシート名を記述する必要はないです。 ActiveChart.SetSourceData _   Source:=Sheets("個人名シート").Range(.Cells(i, 4), .Cells(i, j - 1)), _   PlotBy:=xlRows それから、記述ミスかも知れませんが、Rangeの前に「.」が抜けています。 X列項目範囲 = Range(.Cells(5, 4), .Cells(5, j - 1)) 再確認しますが、下記のようにされていますか? With Sheets("個人名シート")   ActiveChart.SetSourceData _     Source:=.Range(.Cells(i, 4), .Cells(i, j - 1)), _     PlotBy:=xlRows   X列項目範囲 = .Range(.Cells(5, 4), .Cells(5, j - 1)) End With

matchy4649
質問者

補足

記述ミスでした。ただそれを修正しても駄目でした。 ただ解決はしました! X列項目範囲を設定せず ActiveChart.SeriesCollection(1).XValues =Range(.Cells(5, 4), .Cells(5, j - 1)) と記載したらうまくいきました。ありがとうございました。

  • SePapa
  • ベストアンサー率50% (47/94)
回答No.2

こんにちは。 (4と変数j-1が同じ)だとエラー、 という原因が判明しているのであれば そのエラー箇所にて If j-1 > 4 then else End If の条件文記載し、4でないときと、4のときの 処理をわけるが一番早いかと思いました。 (4以下のときはRangeを使わないとか) 以上、ご参考まで。

matchy4649
質問者

お礼

お答えいただいていたのに返事が遅くなって申し訳ありません。 やはりそれしか手が無いですか。4が変数j-1と同じ(列数が1列)の 場合でマクロを記録してみます。ありがとうございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

ActiveChart.SetSourceData Source:=Sheets("個人名シート").Range(.Cells(i, 4), .Cells(i, j - 1)), PlotBy _ :=xlRows とか X列項目範囲 = Range(.Cells(5, 4), .Cells(5, j - 1)) のところで、CellsにかかるWithステートメントはどうなっていますか?

matchy4649
質問者

補足

お答えいただいているのに返事が遅くなりました。 With Worksheets("個人名シート")というWithステートメント の中で動かしています。

関連するQ&A

  • マクロでグラフを作成したい

    Charts.Add ActiveChart.ChartType = xlXYScatterLinesNoMarkers For i = 1 To 25    ActiveChart.SeriesCollection.NewSeries    ActiveChart.SeriesCollection(i).XValues = "=APC!"(3,X)":"Range(lngYCut,X)    ActiveChart.SeriesCollection(i).Values = "=APC!Cells(3,Y):Cells(lngYCut,Y)"    ActiveChart.SeriesCollection(i).Name = "=APC!R1C&X"  X = i * 3 + 1   Y = i * 3 + 2 Next 上記のプログラムでグラフを作成しています。(X,Y,lngYCutは事前に定義しています。) 25個のデータをグラフにする為、For文の中でグラフデータを1つずつ追加していこうと思っています。 データ範囲を変数で指定したいため、=のあとを変えないといけないと思っています。 ただ=のあと""で囲っているため、文字として入力しているんだと思います。 その文字列として入力している場所にどうにかして変数を使いたいです。 どなたか ActiveChart.SeriesCollection(i).XValues = のあとに変数を使用できる方法を教えてください

  • EXCELで、範囲を検出してグラフを作成するマクロを作りたい!

    いつも本当にお世話になっております。 現在、データの範囲を検出して、グラフを作成するマクロを記録させて作っています。 ところが、範囲が固定されてしまい難儀しています。 下にそのマクロを転記いたしますので、ご指摘、ご指導頂ければと存じます。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/3/11 ユーザー名 : acmr ' ' Sheets("元データ入力").Select 上 = 3 左 = 1 下 = Range(Cells(上, 左), Cells(上, 左)).End(xlDown).Row 右 = Range(Cells(上, 左), Cells(上, 左)).End(xlToRight).Column Range(Cells(上, 左), Cells(下, 右)).Select Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("元データ入力").Range("A3:C459"), PlotBy _ :=xlColumns ActiveChart.SeriesCollection(1).Delete ActiveChart.SeriesCollection(1).XValues = "=元データ入力!R4C2:R459C2" ActiveChart.SeriesCollection(1).Name = "" ActiveChart.Location Where:=xlLocationAsObject, Name:="元データ入力" ActiveChart.HasLegend = False End Sub

  • Excellのvbaにおける、グラフの設定

    このたびは、Excellのvbaにおける、グラフの設定がわからず質問させていただきます。 具体的に、行いたいこととしましては、 円グラフを新規に作成し、データ範囲を指定し、グラフを表示させるということをしたいと考えております。 しかし、項目軸ラベルに使用するデータの設定がうまくいきません。 以下にソースコードをのせますのでアドバイス願います。 Sub AddGrafh()      Range("J4:O4").Select      Dim NowSheetName As String   NowSheetName = ActiveSheet.Name      ActiveSheet.ChartObjects.Add(50, 200, 338, 220).Select   ActiveChart.ChartType = xlPie   ActiveChart.ChartWizard Source:=Range("J4:O4"), PlotBy:=xlRows   ActiveChart.SeriesCollection(1).Name = "=""項目別支出割合"""   ActiveChart.ChartTitle.Font.Size = 14     ActiveChart.SeriesCollection(1).XValues = """=" & NowSheetName & "!$J$3:$O$3"""      End Sub 上記の ActiveChart.SeriesCollection(1).XValues = """=" & NowSheetName & "!$J$3:$O$3""" という箇所の記述がおかしいのですが、なんてかいてよいかわかりません。 ちなみに、項目軸ラベルに設定したいデータは、現在のシートのJ$3:$O$3です。 よろしくお願いします。

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(\"J11:M35\"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets("sheet1").Range("J11:M35"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • グラフマクロで系列を変数にする方法を教えてください

    エクセルのグラフマクロについて質問します。 系列のxの値(Yの値も)の設定で、 グラフ化したいワークシートと範囲を変数にすることはできますか? 目的は、複数あるシートの複数のセルをグラフ化したい、というものです。 変数にてシート名と範囲を指定したいです。 ↓のようなプログラムを作成してみましたが、どうもうまく動きません。 12行目で止まってしまいます。 13行目はでたらめですが、範囲も変数bにできないかなぁと、勝手にイメージで作ってみました。 Sub () n = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To n Sheets("SHEET1").Select Range("A" & i).Select a = ActiveCell.Value Sheets(a).Select Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets(a).Range("V22") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheets(a)!R2C4:R5C4" ActiveChart.SeriesCollection(1).Values = "=sheets(a)!range(b)" ActiveChart.Location Where:=xlLocationAsObject, Name:=Sheets(a) Next i End Sub 当方、マクロかじりたての初心者です。 どなたか、よろしくおねがいします!

  • エクセルマクロのrangeオブジェクト

    グラフを作成する下記のマクロでRangeオブジェクトにて範囲指定しておりますが,これをR1C1形式で表現するにはどうすればよいでしょうか? ActiveChart.SetSourceData Source:=Sheets(tmpSheetName).Range("A2:AM2,A81:AM81"), PlotBy:=xlRows どうかよろしくお願いします.

  • Excel VBAの散布図について

    Excel VBAで散布図を作ろうと考えています。 元のデータは添付した画像のものです。 左端にXの値があって、それ以降7列ごとに8枚の散布図を作成しようと考えております。 そこで、kを1~8まで動かし8種類の散布図を作成しようと考えているのですが、このマクロではk=1だけプログラムを回しただけで、一枚のグラフにすべての系列が載ってしまいます。 kを動かさずに、Cellの位置を指定して回した際にはうまくいったのですが、kを動かすようにしたところうまくいきません。 散布図を作る際に系列の数(私の場合7種類)を指定するにはどうしたらよいでしょうか。 どなたかご教授ください。 For k = 1 To 8 ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatter ActiveChart.SeriesCollection(1).Name = Sheets("Voltammogram").Cells(10, -5 + 7 * k) ActiveChart.SeriesCollection(1).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(1).Values = Sheets("Voltammogram").Range(Cells(12, -5 + 7 * k), Cells(250, -5 + 7 * k)) ActiveChart.SeriesCollection(2).Name = Sheets("Voltammogram").Cells(10, -4 + 7 * k) ActiveChart.SeriesCollection(2).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(2).Values = Sheets("Voltammogram").Range(Cells(12, -4 + 7 * k), Cells(250, -4 + 7 * k)) 以降7列まで続きます。

  • Excel VBAのグラフ化自動マクロがうまくできません。

    Sub 自動グラフ作成() For i = 5 To 32 Step 3 Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=distance!R18C1:R1009C1" ActiveChart.SeriesCollection(1).Values = "=distance!R18C" & (i + 2) & ":R1009C" & (i + 2) Next End Sub 上記のように表の中の決められたセルからデータを取り出して自動的にグラフを作成してくれるマクロを作成したのですが、奇数個めのグラフは正常に生成されるのですが、偶数個めのグラフになぜか x= y=distance!$M$18:$M$1009 x= y={1} みたいな必要なグラフ以外に上記の2つのグラフを混じってしまいます。これってどこがおかしいのでしょうか? どなたか助けて下さい。 お願いいたします。

  • Excelマクロでグラフ作成

    現在、Excelのマクロでグラフを作成しようとしていますが、データ範囲の指定で悩んでいます。 マクロはド素人で右も左もわからない状態から、なんとなく雰囲気だけわかってきたような感じです。 とあるHPをそのまま貼り付け用シートにコピペして、そこからデータ抽出用シートにデータを抽出して蓄積していく形にしています。 品名が複数あるので、オートフィルタを使用してソートするために始点をどう決めるのかがわからないのと、データがどんどん蓄積していくために終点もどう決めたらいいのかわかりません。 「データ抽出用シート」のデータ形式は、 18行目にA:品目 B:最低値 C:平均値 D:最高値 G:日付 19行以降にデータ という形になっています。 とりあえず、通常のマクロを記録する方法でマクロの骨組みだけ作ってから細部をいじろうとしております。 データの範囲を指定する部分だけコピペしますので、ここをどういじったらいいのかご教授願います。 とある品目を指定してオートフィルタをかけた後に、グラフ作成手順のマクロを記録したら、こんな感じになりました。 Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("データ抽出用シート").Range("L17") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(1).Values = "=データ抽出用シート!R19C2:R366C2" ActiveChart.SeriesCollection(1).Name = "=データ抽出用シート!R18C2" ActiveChart.SeriesCollection(2).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(2).Values = "=データ抽出用シート!R19C3:R366C3" ActiveChart.SeriesCollection(2).Name = "=データ抽出用シート!R18C3" ActiveChart.SeriesCollection(3).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(3).Values = "=データ抽出用シート!R19C4:R366C4" ActiveChart.SeriesCollection(3).Name = "=データ抽出用シート!R18C4" ActiveChart.Location Where:=xlLocationAsObject, Name:="データ抽出用シート" 宜しくお願いします。

専門家に質問してみよう