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
他の発生している現象
- A1の日付を"a"にすると,なぜかエラーは発生しなくなる.
- C~H列をすべて”数式と値のクリア”をすると,なぜかエラーは発生しなくなる.
- ".SetSourceData Range("'sheet1'!$A$2:$A$3,'sheet1'!$B$2:$B$3")"としても,エラーは発生する.
質問
- 上の,他の発生している現象が起こった理由を説明していただきたいです.
- 今回,A列をx軸に,B列をy軸にしているため,データが何行あろうとデータ系列の数は1個です.エラーが発生する原因を教えていただきたいです.
- 散布図を描く際,複数のデータ系列としてではなく,$A$2:$A$257をx軸に,$B$2:$B$257をy軸にということを明示的に書く方法を教えていただきたいです.
- 逆に,複数のデータ系列として読み込ませたい場合の方法を教えていただきたいです.
かなり奮闘しておりますが,エラーの再現性がないときもあり,辟易しております.
何卒よろしくお願いいたします.
補足
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
VBAではなく手動でグラフを作成した場合はどうなりますか?
ご質問ありがとうございます.問題なく作成できます.
参考までに,その時のマクロを記録したものは以下になります.
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
Excel2013では質問のコードでエラーは発生しませんでした。他のバージョンは手元にないため検証できませんでした。
ご協力感謝します.ありがとうございました.
回答2件
あなたの回答
tips
プレビュー