Excel VBA グラフ作成のときのエラー
VBA初心者です。Excel2003を使っています。
Sheet1に作りたいグラフがあります。
データは下記のとおりです。
ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A")のところで、「実行時エラー13 型が一致しません」とエラーがでます。
不思議なのは、昨日は動いていたのです。
なぜ、エラーが出るようになったのかわかりません。
ご教授よろしくお願いします。
A B
1 a 1
2 2
3 3
4 4
5 5
6 b 6
7 7
8 8
9 9
10 10
11 c 11
12 12
13 13
14 14
15 15
Sub test()
Wrow = Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To Wrow
If Worksheets("sheet1").Cells(i, "A").Value = "a" Then
a_data = Worksheets("sheet1").Cells(i, "A").Row
ElseIf Worksheets("sheet1").Cells(i, "A").Value = "b" Then
b_data = Worksheets("sheet1").Cells(i, "A").Row
ElseIf Worksheets("sheet1").Cells(i, "A").Value = "c" Then
c_data = Worksheets("sheet1").Cells(i, "A").Row
ElseIf Worksheets("sheet1").Cells(i, "A").Value = "d" Then
d_data = Worksheets("sheet1").Cells(i, "A").Row
End If
Next
Sheets("sheet1").Select
Range(Cells(a_data, "B"), Cells(b_data, "B")).Select
ActiveSheet.ChartObjects.Add(30, 10, 500, 200).Select
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(a_data, "B"), Cells(b_data - 1, "B")), PlotBy:=xlColumns
ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1"
Sheets("sheet1").Select
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A") ←エラーがでます。
ActiveChart.SeriesCollection(2).Values = Range(Cells(b_data, "B"), Cells(c_data, "B"))
ActiveChart.SeriesCollection(2).Name = Cells(b_data, "A")
ActiveChart.SeriesCollection(3).Values = Range(Cells(c_data, "B"), Cells(d_data, "B"))
ActiveChart.SeriesCollection(2).Name = Cells(c_data, "A")
End Sub
お礼
ありがとうございます。 2つめの質問なのですが、 For i = 4 To 8 Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = Range(Cells(13, 1), Cells(1013, 1)) ActiveChart.SeriesCollection(1).Values = Range(Cells(13, i), Cells(1013, i)) ActiveChart.SeriesCollection(1).Name = Cells(12, i) ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Cells(12, i) With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y" End With ActiveChart.PlotArea.Select Selection.ClearFormats ActiveChart.Axes(xlCategory).AxisTitle.Select Selection.AutoScaleFont = True With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ActiveChart.ChartTitle.Select Selection.AutoScaleFont = True With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .Background = xlAutomatic End With ・・・ Next End Sub 頂いた回答をもとに改良を加えてみたのですが、 ActiveChart.SeriesCollection(1).XValues あたりでエラーが出てきます。sh2.Range(sh2.Cells(13, i), sh2.Cells(101, i)) みたいに、シートを含むかたちで書いてもエラーが出てきます。どこをどうすれば良いのでしょうか? それとグラフのx軸、y軸をグラフ生成の時点で決定することはできないのでしょうか? 何卒よろしくお願い致します。