循环通过单元格,在VBA中构建范围

时间:2014-08-01 19:46:31

标签: excel vba excel-vba range

我希望循环遍历单元格并为图形构建范围。我的主要问题是我无法弄清楚如何整合“我”。进入范围。例如:

Dim name As String
Dim newChart as Chart
Dim i as Integer
Set newChart = Charts.add    

For i = 1 To 20

    accName = Range("C" & i).Value          'I understand why this works. 

    With newChart
        .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries     
        .SeriesCollection(1).Name = accName
        .SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E&i:G&i, I&i:K&i, M&i:O&i, Q&i:S&i")          'How can I get this to work?
        .SeriesCollection(1).XValues = wb.Worksheets("Summary-Account").Range("E3:G3, I3:K3, M3:O3, Q3:S3")
    End With

    i = i + 1

Loop

4 个答案:

答案 0 :(得分:3)

  1. 手动递增i 函数for loop已经为您完成了。
    所以删除 i = i + 1

  2. 现在,为了使Range工作,你需要它的“”是这样的:Range("E" & i & ":G" & i)。我不太了解您尝试从6个不同的列中获取数据时想要实现的目标。有关详细信息,请参阅range

答案 1 :(得分:2)

您可能需要:

.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E" & i & ":G" & i & ", I" & i & ":K" & i & ", M" & i & ":O" & i & ", Q" & i & ":S" & i)

不是最清晰的线,但应该给你模式。还有其他问题,比如需要一个“Next i”而不是“Loop”而没有i = i + 1,但是在我的电脑上,这给了我一个包含多个系列的图表。

答案 2 :(得分:0)

使用Next i代替Loop;并摆脱i = i+1。 另外,请使用"E" & i & ":G" & i代替"E&i:G&i"

进一步,在vba

Dim i as double
For i = 1 to 100 Step 10  '<= Step 10 means when updating i, i = i + 10, and default value would be 1
Loop  '<=breaks here, compile error is expected.

这在语法中甚至无效,关键字Loop与另一个关键字Do相关联,ForNext

相关联

答案 3 :(得分:0)

尝试

.SeriesCollection(1).Values = Range("E1").Resize(20,1).Value

这会将所有值复制到数组中以用于系列集合