图表Y范围选择不起作用VBA

时间:2018-04-20 15:56:03

标签: excel vba excel-vba

所以我在这一点上创建了一个非常复杂的工作表,用图表做了很多东西。我决定调整它以便它能够检测到工作表中有多少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

2 个答案:

答案 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)

这完全解决了这个问题