如何使用vba中的variables循环范围
我想循环下面的范围,并得到运行时错误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
我假设你的循环有正确的代码,你根本就没有粘贴。
对Cells
2次调用是指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))
理想情况下,您可以定义对该工作表的引用来清理代码。 在这种情况下,您也不必在工作表中添加前缀。 这两个想法结合起来:
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))
更换
.Range(Cells(10 + j, 5), Cells(10 + j, 1006))
同
.Range("E10").Offset(j,0).Resize(1, 1001)
一般情况下,避免使用单元格来定位单元格,而是从一个固定地址(如上面的“E10”)开始,并使用.Offset()
和.Resize()
来调整要执行的单元格的范围。