🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

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

Q&A

解決済

2回答

9482閲覧

VBAのエラー"実行時エラー'1004': 使用可能なデータ系列の数は,1グラフあたり最大255個です."について

Royboon

総合スコア17

VBA

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

0グッド

0クリップ

投稿2019/10/27 14:52

VBAのエラー"実行時エラー'1004': 使用可能なデータ系列の数は,1グラフあたり最大255個です."について

VBAを用いてA列をx軸に,B列をy軸にした散布図を作成するコードを実行したところ,"実行時エラー'1004': 使用可能なデータ系列の数は,1グラフあたり最大255個です."が発生しました.

Sub MakePlots() Const NEW_NAME As String = "hoge.xlsx" Const NEW_DIR As String = "C:\hoge\" & NEW_NAME Dim newWorkbook As Workbook Dim ThisSheet_Name As String Workbooks.Open (NEW_DIR) Worksheets(1).Select With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlXYScatter .SetSourceData Range("'sheet1'!$A$2:$A$257,'sheet1'!$B$2:$B$257"), _ PlotBy:=xlColumns End With End Sub

他の発生している現象

  1. A1の日付を"a"にすると,なぜかエラーは発生しなくなる.
  2. C~H列をすべて”数式と値のクリア”をすると,なぜかエラーは発生しなくなる.
  3. ".SetSourceData Range("'sheet1'!$A$2:$A$3,'sheet1'!$B$2:$B$3")"としても,エラーは発生する.

質問

  1. 上の,他の発生している現象が起こった理由を説明していただきたいです.
  2. 今回,A列をx軸に,B列をy軸にしているため,データが何行あろうとデータ系列の数は1個です.エラーが発生する原因を教えていただきたいです.
  3. 散布図を描く際,複数のデータ系列としてではなく,$A$2:$A$257をx軸に,$B$2:$B$257をy軸にということを明示的に書く方法を教えていただきたいです.
  4. 逆に,複数のデータ系列として読み込ませたい場合の方法を教えていただきたいです.

かなり奮闘しておりますが,エラーの再現性がないときもあり,辟易しております.
何卒よろしくお願いいたします.

補足

Excel2016,Excel2019で頭記のエラーが発生することを確認.

以下のカンマ区切りのデータ列をxlsx形式で保存したものを用いています.

hoge.xlsx

10月27日,a,a,a,a,a,a,a 0,1,1,1,1,1,1,1 1,1,1,1,1,1,1,1 2,1,1,1,1,1,1,1 3,1,1,1,1,1,1,1 4,1,1,1,1,1,1,1 5,1,1,1,1,1,1,1 6,1,1,1,1,1,1,1 7,1,1,1,1,1,1,1 8,1,1,1,1,1,1,1 9,1,1,1,1,1,1,1 10,1,1,1,1,1,1,1 11,1,1,1,1,1,1,1 12,1,1,1,1,1,1,1 13,1,1,1,1,1,1,1 14,1,1,1,1,1,1,1 15,1,1,1,1,1,1,1 16,1,1,1,1,1,1,1 17,1,1,1,1,1,1,1 18,1,1,1,1,1,1,1 19,1,1,1,1,1,1,1 20,1,1,1,1,1,1,1 21,1,1,1,1,1,1,1 22,1,1,1,1,1,1,1 23,1,1,1,1,1,1,1 24,1,1,1,1,1,1,1 25,1,1,1,1,1,1,1 26,1,1,1,1,1,1,1 27,1,1,1,1,1,1,1 28,1,1,1,1,1,1,1 29,1,1,1,1,1,1,1 30,1,1,1,1,1,1,1 31,1,1,1,1,1,1,1 32,1,1,1,1,1,1,1 33,1,1,1,1,1,1,1 34,1,1,1,1,1,1,1 35,1,1,1,1,1,1,1 36,1,1,1,1,1,1,1 37,1,1,1,1,1,1,1 38,1,1,1,1,1,1,1 39,1,1,1,1,1,1,1 40,1,1,1,1,1,1,1 41,1,1,1,1,1,1,1 42,1,1,1,1,1,1,1 43,1,1,1,1,1,1,1 44,1,1,1,1,1,1,1 45,1,1,1,1,1,1,1 46,1,1,1,1,1,1,1 47,1,1,1,1,1,1,1 48,1,1,1,1,1,1,1 49,1,1,1,1,1,1,1 50,1,1,1,1,1,1,1 51,1,1,1,1,1,1,1 52,1,1,1,1,1,1,1 53,1,1,1,1,1,1,1 54,1,1,1,1,1,1,1 55,1,1,1,1,1,1,1 56,1,1,1,1,1,1,1 57,1,1,1,1,1,1,1 58,1,1,1,1,1,1,1 59,1,1,1,1,1,1,1 60,1,1,1,1,1,1,1 61,1,1,1,1,1,1,1 62,1,1,1,1,1,1,1 63,1,1,1,1,1,1,1 64,1,1,1,1,1,1,1 65,1,1,1,1,1,1,1 66,1,1,1,1,1,1,1 67,1,1,1,1,1,1,1 68,1,1,1,1,1,1,1 69,1,1,1,1,1,1,1 70,1,1,1,1,1,1,1 71,1,1,1,1,1,1,1 72,1,1,1,1,1,1,1 73,1,1,1,1,1,1,1 74,1,1,1,1,1,1,1 75,1,1,1,1,1,1,1 76,1,1,1,1,1,1,1 77,1,1,1,1,1,1,1 78,1,1,1,1,1,1,1 79,1,1,1,1,1,1,1 80,1,1,1,1,1,1,1 81,1,1,1,1,1,1,1 82,1,1,1,1,1,1,1 83,1,1,1,1,1,1,1 84,1,1,1,1,1,1,1 85,1,1,1,1,1,1,1 86,1,1,1,1,1,1,1 87,1,1,1,1,1,1,1 88,1,1,1,1,1,1,1 89,1,1,1,1,1,1,1 90,1,1,1,1,1,1,1 91,1,1,1,1,1,1,1 92,1,1,1,1,1,1,1 93,1,1,1,1,1,1,1 94,1,1,1,1,1,1,1 95,1,1,1,1,1,1,1 96,1,1,1,1,1,1,1 97,1,1,1,1,1,1,1 98,1,1,1,1,1,1,1 99,1,1,1,1,1,1,1 100,1,1,1,1,1,1,1 101,1,1,1,1,1,1,1 102,1,1,1,1,1,1,1 103,1,1,1,1,1,1,1 104,1,1,1,1,1,1,1 105,1,1,1,1,1,1,1 106,1,1,1,1,1,1,1 107,1,1,1,1,1,1,1 108,1,1,1,1,1,1,1 109,1,1,1,1,1,1,1 110,1,1,1,1,1,1,1 111,1,1,1,1,1,1,1 112,1,1,1,1,1,1,1 113,1,1,1,1,1,1,1 114,1,1,1,1,1,1,1 115,1,1,1,1,1,1,1 116,1,1,1,1,1,1,1 117,1,1,1,1,1,1,1 118,1,1,1,1,1,1,1 119,1,1,1,1,1,1,1 120,1,1,1,1,1,1,1 121,1,1,1,1,1,1,1 122,1,1,1,1,1,1,1 123,1,1,1,1,1,1,1 124,1,1,1,1,1,1,1 125,1,1,1,1,1,1,1 126,1,1,1,1,1,1,1 127,1,1,1,1,1,1,1 128,1,1,1,1,1,1,1 129,1,1,1,1,1,1,1 130,1,1,1,1,1,1,1 131,1,1,1,1,1,1,1 132,1,1,1,1,1,1,1 133,1,1,1,1,1,1,1 134,1,1,1,1,1,1,1 135,1,1,1,1,1,1,1 136,1,1,1,1,1,1,1 137,1,1,1,1,1,1,1 138,1,1,1,1,1,1,1 139,1,1,1,1,1,1,1 140,1,1,1,1,1,1,1 141,1,1,1,1,1,1,1 142,1,1,1,1,1,1,1 143,1,1,1,1,1,1,1 144,1,1,1,1,1,1,1 145,1,1,1,1,1,1,1 146,1,1,1,1,1,1,1 147,1,1,1,1,1,1,1 148,1,1,1,1,1,1,1 149,1,1,1,1,1,1,1 150,1,1,1,1,1,1,1 151,1,1,1,1,1,1,1 152,1,1,1,1,1,1,1 153,1,1,1,1,1,1,1 154,1,1,1,1,1,1,1 155,1,1,1,1,1,1,1 156,1,1,1,1,1,1,1 157,1,1,1,1,1,1,1 158,1,1,1,1,1,1,1 159,1,1,1,1,1,1,1 160,1,1,1,1,1,1,1 161,1,1,1,1,1,1,1 162,1,1,1,1,1,1,1 163,1,1,1,1,1,1,1 164,1,1,1,1,1,1,1 165,1,1,1,1,1,1,1 166,1,1,1,1,1,1,1 167,1,1,1,1,1,1,1 168,1,1,1,1,1,1,1 169,1,1,1,1,1,1,1 170,1,1,1,1,1,1,1 171,1,1,1,1,1,1,1 172,1,1,1,1,1,1,1 173,1,1,1,1,1,1,1 174,1,1,1,1,1,1,1 175,1,1,1,1,1,1,1 176,1,1,1,1,1,1,1 177,1,1,1,1,1,1,1 178,1,1,1,1,1,1,1 179,1,1,1,1,1,1,1 180,1,1,1,1,1,1,1 181,1,1,1,1,1,1,1 182,1,1,1,1,1,1,1 183,1,1,1,1,1,1,1 184,1,1,1,1,1,1,1 185,1,1,1,1,1,1,1 186,1,1,1,1,1,1,1 187,1,1,1,1,1,1,1 188,1,1,1,1,1,1,1 189,1,1,1,1,1,1,1 190,1,1,1,1,1,1,1 191,1,1,1,1,1,1,1 192,1,1,1,1,1,1,1 193,1,1,1,1,1,1,1 194,1,1,1,1,1,1,1 195,1,1,1,1,1,1,1 196,1,1,1,1,1,1,1 197,1,1,1,1,1,1,1 198,1,1,1,1,1,1,1 199,1,1,1,1,1,1,1 200,1,1,1,1,1,1,1 201,1,1,1,1,1,1,1 202,1,1,1,1,1,1,1 203,1,1,1,1,1,1,1 204,1,1,1,1,1,1,1 205,1,1,1,1,1,1,1 206,1,1,1,1,1,1,1 207,1,1,1,1,1,1,1 208,1,1,1,1,1,1,1 209,1,1,1,1,1,1,1 210,1,1,1,1,1,1,1 211,1,1,1,1,1,1,1 212,1,1,1,1,1,1,1 213,1,1,1,1,1,1,1 214,1,1,1,1,1,1,1 215,1,1,1,1,1,1,1 216,1,1,1,1,1,1,1 217,1,1,1,1,1,1,1 218,1,1,1,1,1,1,1 219,1,1,1,1,1,1,1 220,1,1,1,1,1,1,1 221,1,1,1,1,1,1,1 222,1,1,1,1,1,1,1 223,1,1,1,1,1,1,1 224,1,1,1,1,1,1,1 225,1,1,1,1,1,1,1 226,1,1,1,1,1,1,1 227,1,1,1,1,1,1,1 228,1,1,1,1,1,1,1 229,1,1,1,1,1,1,1 230,1,1,1,1,1,1,1 231,1,1,1,1,1,1,1 232,1,1,1,1,1,1,1 233,1,1,1,1,1,1,1 234,1,1,1,1,1,1,1 235,1,1,1,1,1,1,1 236,1,1,1,1,1,1,1 237,1,1,1,1,1,1,1 238,1,1,1,1,1,1,1 239,1,1,1,1,1,1,1 240,1,1,1,1,1,1,1 241,1,1,1,1,1,1,1 242,1,1,1,1,1,1,1 243,1,1,1,1,1,1,1 244,1,1,1,1,1,1,1 245,1,1,1,1,1,1,1 246,1,1,1,1,1,1,1 247,1,1,1,1,1,1,1 248,1,1,1,1,1,1,1 249,1,1,1,1,1,1,1 250,1,1,1,1,1,1,1 251,1,1,1,1,1,1,1 252,1,1,1,1,1,1,1 253,1,1,1,1,1,1,1 254,1,1,1,1,1,1,1 255,1,1,1,1,1,1,1

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

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

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

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

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

meg_

2019/10/27 14:59

VBAではなく手動でグラフを作成した場合はどうなりますか?
Royboon

2019/10/27 15:03

ご質問ありがとうございます.問題なく作成できます. 参考までに,その時のマクロを記録したものは以下になります. Sub Macro1() ' ' Macro1 Macro ' ' Range("A2:B2").Select Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select ActiveChart.SetSourceData Source:=Range("sheet1!$A$2:$B$257") End Sub
meg_

2019/10/27 15:28

Excel2013では質問のコードでエラーは発生しませんでした。他のバージョンは手元にないため検証できませんでした。
Royboon

2019/10/27 15:30

ご協力感謝します.ありがとうございました.
guest

回答2

0

自己解決

以下のようにAddChart前にセルエリアのSelectを行うことで,エラーなくA列をx軸に,B列をy軸にすることができました.

ActiveSheet.Range("$A$2:$A$257,$B$2:$B$257").Select With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlXYScatter .SetSourceData Range("$A$2:$A$257,$B$2:$B$257"), _ PlotBy:=xlColumns End With

投稿2019/11/09 14:21

Royboon

総合スコア17

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

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

0

解決するかどうかわかりませんが、気になる点です。

.SetSourceData Range("'sheet1'!$A$2:$A$257,'sheet1'!$B$2:$B$257"), _

について。
Rangeの引き数に 「'シート名'!」つきのアドレスを指定した場合、Rangeが
正しく生成されないようです。

これにより誤動作しているのではないでしょうか?

ちなみにRangeの範囲指定は、
a) Range(セル1,セル2)
b) Range(セル1のアドレス:セル2のアドレス)
です、上記のコードはそのいずれにもあてまはりません。(※「'sheet1'!$A$2:$A$257」は
範囲指定(Rnage)になりますので、Rangeの引き数にRangeを指定していることになります。)
また、Rangeとその引き数のセルのシートは必ず一致していなければなりませんので、
引き数のみにシート名を指定しなければならない状況はないはずです。

以上より、上記を以下に書き換えてみてください

.SetSourceData Range("$A$2:$B$257"), _

または

.SetSourceData Range(cells(2,"A"),cells(257,"B")), _

投稿2019/10/28 02:30

h.horikoshi

総合スコア505

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

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

Royboon

2019/10/28 14:59

アドバイスありがとうございます. シート名は試行錯誤の中で付けたもので,外しても同様のエラーが発生しました. またお気づきの点がございましたらよろしくお願いいたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問