所以我在这一点上创建了一个非常复杂的工作表,用图表做了很多东西。我决定调整它以便它能够检测到工作表中有多少y系列而不是设定数量,然后将这些y系列添加到图表中。出于某种原因,即使我使用相同的格式(除了不在For循环中)和x_series正在工作,y系列也不会应用于图表。提供的是相关代码。
'Create ranges for Y series if they exist
E = 0
EM = Cells(i + 12, 7).Value
Ef = EM - 1
For E = 0 To Ef
With ThisWorkbook.Sheets("Graphs")
Dim Range1 As Range, Range2 As Range
Dim Final_Range As Range
Set Range1 = .Cells(2, a + 10 + E)
Set Range2 = .Cells(2, a + 10 + E).End(xlDown)
Set Final_Range = .Range(Range1.Address & ":" & Range2.Address)
Final_Range.Select
.SeriesCollection(E).Values = Final_Range
End With
Next E
为了澄清,EM附加到包含用于图表的列数的单元格。 Ef刚刚使用,因为我不想将x系列作为Y系列包括在内而不从列数中减去1,这是不可能的。
最后一步是无效的。我选择范围只是为了让我在使用调试器时看到它是正确的。范围正常运行。我还测试了
中的数字.SeriesCollection().Values=Final_Range
认为它可能不喜欢在()中有变量。这也不起作用。
在看到一些评论后,我已将代码调整为以下
E = 0
EM = Cells(i + 12, 7).Value
Ef = EM - 1
For E = 0 To Ef
Dim Range1 As Range, Range2 As Range
Dim Final_Range As Range
With ThisWorkbook.Sheets("Graphs")
Set Range1 = .Range(.Cells(2, A + 10 + E), .Cells(2, A + 10 + E).End(xlDown))
F = E + 1
.SeriesCollection(F).Values = "=" & Range1.Address(0, 0, xlA1, xlExternal)
End With
Next E
答案 0 :(得分:0)
上述评论已经在@dwirony中提到了您的错误原因,如果您在E = 0
开始循环,那么您将获得.SeriesCollection(0
并且没有0
。
此外,您可以使用下面的修改版本缩短代码:
Dim Range1 As Range ' declare outside the Loop
For E = 1 To Ef
With ThisWorkbook.Sheets("Graphs")
Set Range1 = .Range(.Cells(2, a + 10 + E), .Cells(2, a + 10 + E).End(xlDown))
.SeriesCollection(E).Values = "=" & Range1.Address(0, 0, xlA1, xlExternal)
End With
Next E
答案 1 :(得分:0)
经过更多的时间,我应该花在这...我发现结束应该放在包含
的行之前.SeriesCollection(E + 1).Values =“=”& Range1.Address(0,0,xlA1,xlExternal)
这完全解决了这个问题