循环单元格,在 VBA 中构建范围
题
我正在寻找循环单元格并构建图表的范围。我的主要问题是我无法弄清楚如何将“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,但在我的电脑上,这给了我一个带有多个系列的图表。
其他提示
你 不 手动递增
i
.
功能for loop
已经为你做好了。
所以 消除 那i = i + 1
.现在,为了让你的
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
不隶属于 StackOverflow