我正在寻找循环单元格并构建图表的范围。我的主要问题是我无法弄清楚如何将“i”合并到范围中。例子:

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)
.

不是最清晰的线,但应该给你模式去。还有其他问题需要“接下来我”而不是“循环”,而不是我= i + 1,但在我的电脑上,这给了我一个带有多个系列的图表。

其他提示

  1. 手动递增 i.
    功能 for loop 已经为你做好了。
    所以 消除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, , 和 For 与....关联 Next

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top