循环遍历单元格,在VBA中构build一个范围

我正在寻找循环通过单元格,并build立一个graphics的范围。 我的主要问题是,我不知道如何将“我”纳入范围。 例:

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 

你可能需要有:

 .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,但是在我的电脑上,这给了我一个有多个系列的图表。

  1. 不会手动增加i
    for loop的function已经为你做。
    所以删除 i = i + 1

  2. 现在,为了使你的Range工作,你需要它的“”是这样的: Range("E" & i & ":G" & i )。 我不太明白你试图通过从6个不同的列中获取数据来实现的目标。请参阅范围以获取更多信息。

尝试

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

这将把所有的值复制到一个数组中,以便在系列集合中使用

使用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关联