我试图在下面的范围内循环并获得运行时错误1004.突出显示的行就是这一行:
ActiveChart.SeriesCollection(i).Values = Worksheets("Chart Help").Range(Cells(10 + j, 5), Cells(10 + j, 1006))
谁能告诉我什么错了?
If Worksheets("Chart Help").Cells(4, 9 + j) <> " " Then
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).Name = Worksheets("Chart Help").Cells(4, 9 + j)
ActiveChart.SeriesCollection(i).XValues = Worksheets("Chart Help").Range("J5:J1006")
ActiveChart.SeriesCollection(i).Values = Worksheets("Chart Help").Range(Cells(10 + j, 5), Cells(10 + j, 1006))
ActiveChart.SeriesCollection(i).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent6
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
End With
i = i + 1
End If
j = j + 1
答案 0 :(得分:1)
替换
.Range(Cells(10 + j, 5), Cells(10 + j, 1006))
与
.Range("E10").Offset(j,0).Resize(1, 1001)
一般情况下,请避免使用细胞定位细胞,而是从固定地址(如上面的“E10”)开始,并使用.Offset()
和.Resize()
的组合来调整细胞范围想要采取行动。
答案 1 :(得分:0)
我认为你的循环有正确的代码而你根本就没有粘贴它。
您对Cells
的两次调用是指您想要的ActiveSheet
而不是Chart Help
工作表。您需要在Cells
前加Worksheets("Chart Help").Cells
作为前缀,以免错误。
这样的事情:
ActiveChart.SeriesCollection(i).Values = Worksheets("Chart Help").Range(Worksheets("Chart Help").Cells(10 + j, 5), Worksheets("Chart Help").Cells(10 + j, 1006))
理想情况下,您将定义对该工作表的引用以清理代码。在这种情况下,您也不必在Range
前加上工作表。这两个想法相结合:
Dim sht_chart As Worksheet
Set sht_chart = Worksheets("Chart Help")
ActiveChart.SeriesCollection(i).Values = Range(sht_chart.Cells(10 + j, 5), sht_chart.Cells(10 + j, 1006))